1线性回归中的因变量通常为连续型数据,线性回归的基本假设:
(1)自变量和因变量之间存在某种线性关系
(2)不能存在任何异常点
(3)没有异方差性
(4)样本观测值相互独立
(5)误差项服从均值为0方差为常数的正态分布
(6)不存在多重共线性
2参数估计:为估计回归系数,用最小二乘法最小化误差项平方和,即由此可得,回归系数的估计值为:
3线性回归在R中的实现:R的基础包中lm函数很容易实现线性回归,假设有数据集 dt = data.frame (y , v1 , v2 , v3)
-
除去截距项 lm(y~v1+v2-1,data=dt) 或 lm( y ~ 0 + v1 +v2-1,data=dt)
-
包含数据集中除因变量之外的所有变量 lm(y~.,data=dt)
-
模型预测使用 predict(lmObject,newdata = newdt ) , 注意保持newdt数据结构和 lmObject一致,例如 lmObject = lm ( y ~ v2 + v3 ),则对应的newdt = data.frame (v2 = newv2, v3 = newv3)
与lm函数关联的函数有:
summary展示拟合模型的细节
coefficients()、coef()列出拟合模型的参数(截距项和斜率)
confint()给出模型参数的置信(默认为95%)
residuals()列出拟合模型的残差值
anova()生成两个拟合模型的方差分析表
plot()生成评价拟合模型的诊断图
predict()用拟合模型对新数据集进行预测
实际操作,用datasets包中的swiss数据集合,包含47个观测值的6个变量(生育率、农业人口中男性占比、士兵入伍考试获得最高百分比、小学以上学历百分比、天主教百分比、婴儿死亡率),探究生育率与其他因素之间的关系。
> model<-lm(Fertility~.,data=swiss)#回归模型
> lm_coeff=model$coefficients#列出拟合模型的参数
> lm_coeff
(Intercept) Agriculture Examination Education
66.9151817 -0.1721140 -0.2580082 -0.8709401
Catholic Infant.Mortality
0.1041153 1.0770481
接下来看一下拟合模型的细节
由上图可知,70%的生育率变化可以通过线性回归来解释。
4多重共线性检验
-
计算条件数kappa(X),k<100,说明共线性程度小;如果100<k<1000,则存在较多的多重共线性;若k>1000,存在严重的多重共线性。
-
可以计算X矩阵的秩qr(X)$rank,如果不是满秩的,说明其中有Xi可以用其他的X的线性组合表示,不是特别准。
-
使用方差膨胀因子(VIF),一般认为,当0<VIF<10,不存在多重共线性,当10≤VIF<100,存在较强的多重共线性,当VIF>=100,多重共线性非常严重。
> kappa(swiss[,-1]) [1] 27.88425 > qr(swiss[,-1])$rank [1] 5 > car::vif(model) Agriculture Examination Education Catholic 2.284129 3.675420 2.774943 1.937160 Infant.Mortality 1.107542
结果显示数据集中自变量多重共线性并不严重。
推荐阅读:公众号: 数萃大数据