2013-02-11 41 views
4

我想分析R中的一些线性模型结果,特别是我对在lm对象的摘要中为独立变量报告的p值感兴趣(我知道有更复杂的方法来比较变量的相关性,但过去的一些比较让我相信,对于初步分析,这个p值将会这样做)。 我深信,这些p值不依赖于公式中指定变量的顺序(例如,使用anova时不是这样),所以我对假数据的一些结果感到困惑,得到:在公式中lm与系数不同因子的系数

> x<-rnorm(100) 
> y <- 2*x 
> xJ <- jitter(x) 
> lm1 <- lm(y~x) 
> lm2 <- lm(y~x+xJ) 
> lm3 <- lm(y~xJ+x) 
> summary(lm1)$coefficients 
       Estimate Std. Error  t value Pr(>|t|) 
(Intercept) -2.220446e-17 4.064501e-17 -5.463023e-01 0.5860998 
x   2.000000e+00 4.037817e-17 4.953172e+16 0.0000000 
> summary(lm2)$coefficients 
       Estimate Std. Error  t value Pr(>|t|) 
(Intercept) 0.000000e+00 4.271540e-17 0.000000e+00 1.0000000 
x   2.000000e+00 3.534137e-13 5.659091e+12 0.0000000 
xJ   4.147502e-13 3.534140e-13 1.173553e+00 0.2434475 
> summary(lm3)$coefficients 
       Estimate Std. Error  t value  Pr(>|t|) 
(Intercept) -1.594538e-18 5.512644e-21 -2.892511e+02 3.147977e-144 
xJ   -3.531641e-16 4.560990e-17 -7.743146e+00 9.391428e-12 
x   2.000000e+00 4.560986e-17 4.385017e+16 0.000000e+00 

我的错误在哪里?

感谢

+0

浮点精度可能也是一个问题。尝试'y < - 2 * x + 3 * xJ + rnrom(100)',这样'xJ'实际上会影响'y'。 – Roland 2013-02-11 12:33:30

+3

@阿伦:我不认为这是怎么回事,这可能解释'y〜x'和'y〜x + xJ'之间的区别,但我不认为它涵盖了'y〜 x + xJ'和'y〜xJ + x'。我认为这是浮点奇怪和“x”与“y”完全相关的事实的组合。 – Marius 2013-02-11 12:38:33

+2

谢谢大家的回答。在这种情况下,我认为马吕斯是正确的(罗兰支持这一想法的测试也是如此)。这是我平时关于统计和类似事情的循环:当我看到真实的数据时,我感到困惑,所以我决定处理小的假实例,并且通常让它们变得太简单/边角情况,所以我变得更加困惑:) – vodka 2013-02-11 12:51:59

回答

2

已经想过这个多一点,我认为,除了任何奇怪的浮点问题,不稳定的系数的原因是mulitcollinearity,从一个事实,即x和几乎导致完全相关。这样做的方差膨胀因子快速测试:

library(car) 
vif(lm2) 
     x  xJ 
103233533 103233533 

VIF的大于5通常被认为的东西看看,所以在这种情况下,这并不奇怪,该系数了一下周围移动。

+1

作为事实上,我试图调查在多重共线性问题的情况下会发生什么(即我有两个相关变量可以很好地解释我的反应 - >他们的pvalues和模型的R平方会发生什么?实际上我有很多变量,我不能先验地删除所有相关的变量......我开始怀疑使用aov还是完全不同的方法会更合适,更快乐,更高效:)) – vodka 2013-02-12 08:53:28

+0

只是为了报告这里的结果更容易解释(从我非常有限的角度来看......至少我设法解释Whuber的答案开始的结果)是这样的:'x < - rnorm(100,mean = 10); x1 < - 抖动(x); y < - 5 * x + rnorm(100); lm1 < - lm(y〜x); lm2 < - lm(y〜x1); lm3 < - lm(y〜x + x1); lm4 < - lm(y〜x1 + x);' – vodka 2013-02-12 09:02:22