R语言数据挖掘中的,“回归分析”是如何操作的?

回归分析是对多个自变量(又称为预测变量)建立一个函数来预测因变量(又称为响应变量的值)。


例如,银行根据房屋贷款申请人的年龄、收入、开支、职业、负担人口,以及整体信用限额等因素,来评估申请人的房贷风险。


线性回归


线性回归是利用预测变量的一个线性组合函数,来预测响应变量的统计分析方法,该线性回归模型的形式如下:


y = c0 + c1x1 + c2x2 + …+ ckxk;


x1, x2,… xk为预测变量,y为对预测的响应变量。


下面将在澳大利亚消费者价格指数(CPI)的数据上使用函数lm做线性回归分析


该数据为2008年到2010年澳大利亚的季度消费者价格指数。


1、需要创建数据集并绘制散布图。在下面的代码中,使用函数axis手动添加一个横坐标,参数las=3设置文字为垂直方向。


year <- rep(2008:2010, each=4)
quarter <- rep(1:4, 3)
cpi <- c(162.2, 164.6, 166.5, 166.0,
166.2, 167.0, 168.6, 169.5,
171.0, 172.1, 173.3, 174.0)
plot(cpi, xaxt="n", ylab="CPI", xlab="")
# draw x-axis
axis(1, labels=paste(year,quarter,sep="Q"), at=1:12, las=3)


澳大利亚2008-2010季度消费者价格指数
R语言数据挖掘中的,“回归分析”是如何操作的?


2、查看CPI与其他变量之间的相关系数,包括year(年份)和quarter(季度)这两个变量
cor(year,cpi)
cor(quarter,cpi)


3、在前面的数据上使用函数lm建立一个线性回归模型,其中year和quarter为预测变量,CPI为响应变量。


fit <- lm(cpi ~ year + quarter)
fit


根据上面建立的线性模型,CPI的计算公式为:


cpi = c0 + c1 * year + c2 * quarter
其中,c0, c1, c2为拟合模型fit的系数。因此,2011年的CPI值可以计算如下。


(cpi2011 <- fit$coefficients[[1]] + fit$coefficients[[2]]*2011 + fit$coefficients[[3]]*(1:4))


该模型的更多细节可以通过下面的代码获得。


attributes(fit)
fit$coefficients


观测值与拟合结果的残差使用函数residuals 来计算。


residuals(fit)
summary(fit)


线性回归模型的预测图


下面的代码绘制拟合模型的图像,如图所示
plot(fit)

R语言数据挖掘中的,“回归分析”是如何操作的?


拟合模型的3D图像


还可以绘制拟合模型的3D图像,下面代码中使用函数scatterplot3d创建一个3D


library(scatterplot3d)
s3d <- scatterplot3d(year, quarter, cpi, highlight.3d=T, type="h", lab=c(2,3))
s3d$plane3d(fit)


R语言数据挖掘中的,“回归分析”是如何操作的?


拟合模型


基于拟合模型,20l1年的CPI可以通过如下方式预测,在后图中预测值用小三角表示。


data2011 <- data.frame(year=2011, quarter=1:4)
cpi2011 <- predict(fit, newdata=data2011)
style <- c(rep(1,12), rep(2,4))
plot(c(cpi, cpi2011), xaxt="n", ylab="CPI", xlab="", pch=style, col=style)
axis(1, at=1:16, las=3,
labels=c(paste(year,quarter,sep="Q"), "2011Q1", "2011Q2", "2011Q3", "2011Q4"))


基于线性回归模型得到的2011年CPI的预测值


R语言数据挖掘中的,“回归分析”是如何操作的?