为什么R中的线性模型不能显示所有需要的级别?

为什么R中的线性模型不能显示所有需要的级别?,r,statistics,refactoring,linear-regression,interaction,R,Statistics,Refactoring,Linear Regression,Interaction,我试图在R中做一个线性模型。我有24个实验(完全析因分析)。我对这个模型有三个因素。但是,密度因子有3个级别(B、M、A)。我知道DensityB不需要出现,因为如果DensityM和DensityA的值为0,DensityB会被间接激活。但在相互作用中,我们需要密度B:MatS。因为如果我们有MatN,我们可以使用0激活它。然而,这种情况会发生: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.

我试图在R中做一个线性模型。我有24个实验(完全析因分析)。我对这个模型有三个因素。但是,密度因子有3个级别(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和DensityA值为0,则DensityB被激活)

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


谢谢大家!

这只是过度参数化的结果,不需要担心。您的建模代码只是将因子
密度的最终级别作为参考级别。其他水平的影响只是与参考水平的差异

要了解这一点,在您的第一个模型中,以“B”为参考水平,“A”和“M”之间的差值为-0.05080--0.24315=0.19235。在第二个模型中,以“A”为参考水平,“M”的系数(即“A”和“M”之间的估计差值)为0.19235。完全相同的值

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


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

这只是过度参数化的结果,不需要担心。您的建模代码只是将因子
密度的最终级别作为参考级别。其他水平的影响只是与参考水平的差异

要了解这一点,在您的第一个模型中,以“B”为参考水平,“A”和“M”之间的差值为-0.05080--0.24315=0.19235。在第二个模型中,以“A”为参考水平,“M”的系数(即“A”和“M”之间的估计差值)为0.19235。完全相同的值

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


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

这不是一个真正的编程问题,因此应该在stackexchange上。但无论哪种方式,原因都与密度缺少1级的原因(如您所述)相同。在这种情况下,
MatS
的“添加”效果来自
MatS
的基本级别。(如果密度的所有其他级别均为零,则为有效级别)。就是这样。这不是一个真正的编程问题,因此应该放在stackexchange上。但无论哪种方式,原因都与密度缺少1级的原因(如您所述)相同。在这种情况下,
MatS
的“添加”效果来自
MatS
的基本级别。(如果密度的所有其他级别均为零,则为有效级别)。就是这样。它只是没有“写出来”。