首页 > 代码库 > R语言之线性回归分析
R语言之线性回归分析
一、建立简单线性回归模型
可使用函数lm实现,函数是围绕公式展开的,lm接受一个公式对象作为试图建立的模型,可以通过?formula来查询通用格式,data.frame也可以被明确指定,它包括所需的数据
> library(RSADBE)
> data(IO_Time)
> IO_lm = lm(CPU_Time ~ No_of_IO,data=http://www.mamicode.com/IO_Time)
> class(IO_lm)
> summary(IO_lm)
结果中:
F-statistic: 635.4 on 1 and 8 DF, p-value: 6.569e-09为模型的整体检验,也就是F检验
Multiple R-squared: 0.9876, Adjusted R-squared: 0.986 为决定系数和校正的决定系数
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.050933 0.010033 5.077 0.000957 ***
No_of_IO 0.040758 0.001617 25.207 6.57e-09 ***
为自变量和截距的估计值和检验结果,*越多表示越显著
Residuals:
Min 1Q Median 3Q Max
-0.016509 -0.011592 -0.001327 0.005279 0.024006
为残差的统计量,中位数接近0表示接近标准正态分布,因为标准正态分的中位数为0
二、多元线性回归
也使用lm函数,但是公式格式有所改变
> data(Gasoline)
> gasoline_lm = lm(y~., data=http://www.mamicode.com/Gasoline)
> summary(gasoline_lm)
这里公式y~.表示因变量为y,其余所有变量都为自变量
三、四种残差
1.标准化残差
就是将残差进行标准化后的结果
2.半学生化残差
对标准化残差的修正
3.预测残差
是真实值与预测值之差
4.R-学生化残差
对异常值的检测很有用
通过resid函数提取残差,并进行标准化,就得到标准化残差;
通过rstandard函数得到预测残差
通过rstudetn函数得到R-学生化残差
五、异常值
异常值分为杠杆点和影响点,针对自变量的称为杠杆点,针对因变量的称为影响点
1.杠杆点
杠杆点对回归系数没有影响,但是会影响决定系数,可以通过观察帽子矩阵来识别,杠杆作用的平均值为h=p/n,p为自变量个数,n为样本量,如果一个观测值的杠杆值>2h,则应考虑为杠杆点,考虑剔除或采取措施。R中可以通过hatvalues函数计算杠杆值。
> data(Gasoline)
> gasoline_lm = lm(y~., data=http://www.mamicode.com/Gasoline)
> hatvalues(gasoline_lm)
> which(hatvalues(gasoline_lm) > length(gasoline_lm$coefficients)/nrow(Gasoline))
2.影响点
影响点有将回归线拉向它的趋势,因此会影响回归系数的值,可以通过COOK距离来判断,R中可以通过cooks.distance函数计算每个观测值的COOK距离。根据经验,如果距离大于1,则说明观测点为影响点。
此外,还可以通过dffits函数和dfbetas函数计算相应的值,如果dffits>2/根号p/n,那么可认为是影响点,如果dfbetas>2/根号n,也可认为是影响点,p为自变量个数,n为样本量
六、多重共线性
多重共线性可能会引起的问题有
1、回归系数不可信,并且可能符号出现错误
2.t检验和F检验失效
3.某些预测值的重要性会削弱
可以通过car包和faraway包的VIF函数计算VIF值
七、模型选择
函数step可以实现基于AIC准则的模型选择,最优模型为AIC值最小的
> data(Gasoline)
> gasoline_lm = lm(y~., data=http://www.mamicode.com/Gasoline)
> step(gasoline_lm)
R语言之线性回归分析