【问题标题】:lm function in R is excluding 1 dummy variableR中的lm函数不包括1个虚拟变量
【发布时间】:2017-11-10 17:31:26
【问题描述】:

我有一个如下所示的数据框:

      Date    A      B      MONTH
2016-01-01    3     10    January
2016-01-02    5     13    January
2016-01-03    8     12    January
.
.
.
2016-12-29    4     13   December
2016-12-30    5     12   December
2016-12-31    6      4   December

有了这个数据框,我想运行一个回归模型,将 Month 列作为虚拟变量。

我尝试了两种方法来运行它,每次我这样做时,它总是不包括“四月”月份。

知道为什么会发生这种情况吗?

第一种方法:

lm(A ~ MONTH + B, 数据 = df)

示例输出:

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        7.248e+01  3.600e+01   0.902  0.36754    
MONTHAugust        7.425e+02  3.630e+01   6.680 9.29e-11 ***
MONTHDecember     -1.840e+02  3.277e+01  -5.613 4.02e-08 ***
MONTHFebruary     -8.673e+00  2.855e+01  -0.129  0.89770    
MONTHJanuary      -4.084e+01  2.945e+01  -0.368  0.71291    
MONTHJuly          9.407e+02  3.100e+01   4.540 7.73e-06 ***
MONTHJune          3.387e+01  3.077e+01   2.401  0.01687 *  
MONTHMarch         2.797e+02  2.884e+01   6.231 1.32e-09 ***
MONTHMay          -9.500e+01  3.122e+01  -3.043  0.00252 ** 
MONTHNovember     -1.321e+01  3.555e+01  -1.778  0.07626 .  
MONTHOctober       7.145e+01  3.200e+01   0.983  0.32637    
MONTHSeptember     9.691e+02  3.916e+01   4.319 2.04e-05 ***
B                  5.279e-02  1.161e-03  11.013  < 2e-16 ***

第二种方法:

A

头(A)

  (Intercept) Sum.of.Media.Cost MONTHAugust MONTHDecember MONTHFebruary MONTHJanuary MONTHJuly MONTHJune MONTHMarch MONTHMay
1           1                 0           0             0             0            
1         0         0          0        0
2           1                 0           0             0             0            
1         0         0          0        0
3           1                 0           0             0             0            
1         0         0          0        0
4           1                 0           0             0             0            
1         0         0          0        0
5           1                 0           0             0             0            
1         0         0          0        0
6           1                 0           0             0             0            
1         0         0          0        0
  MONTHNovember MONTHOctober MONTHSeptember
1             0            0              0
2             0            0              0
3             0            0              0
4             0            0              0
5             0            0              0
6             0            0              0

【问题讨论】:

    标签: r regression lm dummy-variable


    【解决方案1】:

    试试A ~ B + MONTH -1——如果你的假人是完整的,它们的线性组合与常数相同。因此降低了排名,你不能这样做,所以必须给予一些东西。

    要么你保持常数(并删除一个每月的虚拟)以产生“每月偏移量拦截”,或者,这就是我要做的,删除常数以获得“每月拦截” ”。

    【讨论】:

    • 当我尝试这样做时,我所有的虚拟变量系数都发生了变化,而我的 B 列保持不变。这有意义吗?
    • 是的,在您之前的版本中,每个虚拟变量的系数是与特定月份和参考(4 月)的影响的差异,它包含在截距中。在第二个版本中,系数代表月份本身的影响,而不是与参考的差异。您的新系数可能是之前的截距 + 系数。
    • 是的,这正是发生的事情。谢谢你,现在更有意义了。
    • 另外,只是添加到这个...... R^2 应该改变吗?当我这样做时,我的 R^2 从 .76 变为 .96
    【解决方案2】:

    当您处理虚拟变量时,这是正常的。如果您的因子变量有 n 个级别,那么您只需要 n-1 个虚拟变量。因为剩下的情况是所有虚拟变量都为零。我认为四月是排除在外的月份,因为如果您考虑按字母顺序排列,它是第一个月份。

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2018-03-27
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多