为什么R中的线性模型不能显示所有需要的水平



我试图在R中做一个线性模型。我有24个实验(完全析因分析(。我对这个模型有三个因素。但是,密度因子有三个级别(B、M、A(。我知道DensityB不需要出现,因为如果DensityM和DensityA的值为0,则DensityB会被间接激活。但在互动中,我们需要密度B:MatS。因为如果我们有MatN,我们可以使用0来激活它。然而,这种情况发生了:

Estimate Std. Error t value Pr(>|t|)    
(Intercept)    0.35500    0.06094   5.826 2.03e-05 ***
Thickness2     0.11516    0.04606   2.500  0.02294 *  
DensityM      -0.05080    0.07978  -0.637  0.53279    
DensityA      -0.24315    0.07978  -3.048  0.00728 ** 
MatS           0.22882    0.07978   2.868  0.01066 *  
**DensityM:MatS** -0.21393    0.11283  -1.896  0.07509 . 

**DensityA:MatS** -0.27452    0.11283  -2.433  0.02631 *

当我不使用重新排序因子的级别时,就不会发生这种情况

df$Density  = factor(df$Density, levels=c("B", "M", "A"))

当我不使用它时,结果如下:

(Intercept)    0.11185    0.06094   1.835  0.08399 . 
Thickness2     0.11516    0.04606   2.500  0.02294 * 
DensityB       0.24315    0.07978   3.048  0.00728 **
DensityM       0.19235    0.07978   2.411  0.02751 * 
**DensityA:MatS** -0.04570    0.07978  -0.573  0.57426   
**DensityB:MatS**  0.22882    0.07978   2.868  0.01066 * 
**DensityM:MatS**  0.01489    0.07978   0.187  0.85412 

他们是正确的。

为什么重新描述因素的水平会改变这种相互作用?我需要重新排序标高,因为我希望DensityM和DensityA显示在线性模型中(而DensityB是较低的标高;因此,如果DensityM和DencityA值为0,则DensityB将被激活(。

调整后的平方R和线性模型的p值是相同的。

谢谢!

这只是过度参数化的结果,无需担心。您的建模代码只是将因子Density的最终级别作为参考级别。其他级别的效果只是与参考级别的差异。

为了看到这一点,在您的第一个模型中;B";作为参考电平;A";以及";M〃;为-0.05080--0.24315=0.19235。在您的第二个模型中;A";作为参考电平;M〃;(即"A"one_answers"M"之间的估计差值(为0.19235。完全相同的值。

你可以从任何一个模型中计算出你喜欢的任何效果的值,这两个值将是相同的。您只需要考虑模型所使用的参数化即可。

我投票结束这个问题,因为我相信它更适合stackexchange:这是一个统计问题,而不是编程问题。

相关内容

  • 没有找到相关文章

最新更新