在 R 中控制线性回归中的协变量

机器算法验证 r 回归 统计学意义 回归系数 平方和
2022-03-25 20:31:48

我做了这两个模型:

(model1 <- summary(lm(mpg ~ drat + wt + cyl, mtcars)))

Call:
lm(formula = mpg ~ drat + wt + cyl, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2944 -1.5576 -0.4667  1.5678  6.1014 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  39.7677     6.8729   5.786 3.26e-06 ***
drat         -0.0162     1.3231  -0.012 0.990317    
wt           -3.1947     0.8293  -3.852 0.000624 ***
cyl          -1.5096     0.4464  -3.382 0.002142 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.613 on 28 degrees of freedom
Multiple R-squared:  0.8302,    Adjusted R-squared:  0.812 
F-statistic: 45.64 on 3 and 28 DF,  p-value: 6.569e-11


(model2 <- summary(lm(mpg ~  wt + cyl + drat, mtcars)))

Call:
lm(formula = mpg ~ wt + cyl + drat, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2944 -1.5576 -0.4667  1.5678  6.1014 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  39.7677     6.8729   5.786 3.26e-06 ***
wt           -3.1947     0.8293  -3.852 0.000624 ***
cyl          -1.5096     0.4464  -3.382 0.002142 ** 
drat         -0.0162     1.3231  -0.012 0.990317    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.613 on 28 degrees of freedom
Multiple R-squared:  0.8302,    Adjusted R-squared:  0.812 
F-statistic: 45.64 on 3 and 28 DF,  p-value: 6.569e-11

我的理解是 R 对mpg. 所以 in model1,drat应该是未调整wt的, 应该被调整drat并且cyl应该被调整dratwt. model2,wt应该是未调整的,cyl应该为 调整wt并且drat应该为wt和调整cyl

然而,每个模型中的系数似乎完全相同,这表明系数根本没有被调整。系数根本没有调整吗?

1个回答

正如措辞所言,这个问题有点模棱两可。它指出“每个模型中的系数似乎完全相同”。有两种方式可以解释该陈述,关于:(1)Estimates系数的,或(2)系数的检验

  1. 关于Estimates系数,它们正在针对模型中的其他变量进行调整,但您看不到任何差异,因为您在model1和中具有相同的变量model2它们列出的顺序无关紧要。仅当变量相关且模型中包含的变量集不同时,参数估计才会不同。考虑:

    model1 <- lm(mpg ~ drat + wt + cyl,  mtcars)
    model2 <- lm(mpg ~  wt + cyl + drat, mtcars)
    model3 <- lm(mpg ~  wt       + drat, mtcars)
    cor(mtcars$wt, mtcars$cyl)
    # [1] 0.7824958
    summary(model2)
    # Coefficients:
    #               Estimate Std. Error t value Pr(>|t|)    
    #   (Intercept)  39.7677     6.8729   5.786 3.26e-06 ***
    #   wt           -3.1947     0.8293  -3.852 0.000624 ***
    #   cyl          -1.5096     0.4464  -3.382 0.002142 ** 
    #   drat         -0.0162     1.3231  -0.012 0.990317    
    summary(model3)
    # Coefficients:
    #               Estimate Std. Error t value Pr(>|t|)    
    #   (Intercept)   30.290      7.318   4.139 0.000274 ***
    #   wt            -4.783      0.797  -6.001 1.59e-06 ***
    #   drat           1.442      1.459   0.989 0.330854    
    

    注意Estimateforwt-3.1974inmodel2-4.783in model3要了解有关变量的参数估计如何根据是否包含相关变量而发生变化的更多信息,它可能会帮助您阅读此处的答案。

  2. 关于系数的测试,这取决于您使用哪个函数来获取输出。你用过summary()然后报告的是与参数估计相关这些不是通过划分平方和来计算的。但是,它们等效于使用III 型 SS检验。对于基于 III 型 SS检验或检验,列出的顺序变量无关紧要。您还可以使用来获取参数估计的显着性检验。 就是 R 使用I 型 SS的地方tFtFanova(). 并且因为 I 型 SS 是连续的,所以列出变量的顺序确实很重要(尽管同样,只有当变量相关时)。考虑:

    summary(model1)
    # Coefficients:
    #               Estimate Std. Error t value Pr(>|t|)    
    #   (Intercept)  39.7677     6.8729   5.786 3.26e-06 ***
    #   drat         -0.0162     1.3231  -0.012 0.990317    
    #   wt           -3.1947     0.8293  -3.852 0.000624 ***
    #   cyl          -1.5096     0.4464  -3.382 0.002142 ** 
    summary(model2)
    # Coefficients:
    #               Estimate Std. Error t value Pr(>|t|)    
    #   (Intercept)  39.7677     6.8729   5.786 3.26e-06 ***
    #   wt           -3.1947     0.8293  -3.852 0.000624 ***
    #   cyl          -1.5096     0.4464  -3.382 0.002142 ** 
    #   drat         -0.0162     1.3231  -0.012 0.990317    
    anova(model1)
    # Analysis of Variance Table
    #             Df Sum Sq Mean Sq F value    Pr(>F)    
    #   drat       1 522.48  522.48  76.525 1.691e-09 ***
    #   wt         1 334.33  334.33  48.967 1.308e-07 ***
    #   cyl        1  78.07   78.07  11.435  0.002142 ** 
    #   Residuals 28 191.17    6.83                      
    anova(model2)
    # Analysis of Variance Table
    #             Df Sum Sq Mean Sq  F value    Pr(>F)    
    #   wt         1 847.73  847.73 124.1627 8.382e-12 ***
    #   cyl        1  87.15   87.15  12.7645  0.001304 ** 
    #   drat       1   0.00    0.00   0.0001  0.990317    
    # Residuals 28 191.17    6.83                       
    

    请注意,两个输出中,但在 in和 it in 中要了解有关一般平方和的更多信息,请在此处阅读我的答案可能会有所帮助。最后,请注意,您可以通过在包中使用,在 R 中获得使用其他类型 SS(例如 II 和 III)的 ANOVA 表pwt0.000624summary()1.308e-07anova(model1)8.382e-12anova(model2)Anova()car