回归方法(一):用线性回归探究生育率

1线性回归中的因变量通常为连续型数据,线性回归的基本假设:

(1)自变量和因变量之间存在某种线性关系

(2)不能存在任何异常点

(3)没有异方差性

(4)样本观测值相互独立

(5)误差项服从均值为0方差为常数的正态分布

(6)不存在多重共线性

2参数估计:为估计回归系数,用最小二乘法最小化误差项平方和,即Min\sum \epsilon ^{2}=Min\sum (y-\beta _{0}+\beta _{1}X_{1}+...+\beta _{k}X_{k})^2由此可得,回归系数的估计值为:\beta {}'=({X}'X)^{-1}X{}'y

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 

     结果显示数据集中自变量多重共线性并不严重。

推荐阅读:公众号: 数萃大数据

猜你喜欢

转载自blog.csdn.net/never0822/article/details/81706157