为什么使用 relevel 时模型会发生变化?

机器算法验证 r 回归
2022-03-08 18:09:40

在使用 R 计算回归模型时,我经常使用 relevel 函数来让我的模型也为我提供另一个级别的结果。我注意到有时,但不经常,这会改变模型,因为在重新调整之前重要的其他因素的水平不再存在。这是重新调平所固有的还是异常的,可能是由于我的数据存在问题?它是否表明我的数据可能不满足线性模型的先决条件之一?

与此相关,如果我使用 relevel,重新计算我的模型,然后在我的文章中报告两个模型的显着性值,是否可以?如果两个模型对于某个因素的重要性不同,我想我应该选择一个不太乐观的模型吗?

我想我的问题暴露了我对 lm 的了解不够,无法掌握基本级别的需要。我以为我理解得很好;)不知何故,我读过的介绍都没有解释这一点,或者我太笨了,无法理解。因此,如果有人可以将我引导到一个站点,其中解释了在 lm 中具有基本级别的点或自己解释它,那也很棒!

编辑:这是一个最小的例子:

library(datasets)
sprays<-OrchardSprays
model<-lm(decrease~treatment+rowpos+colpos,data=sprays)
summary(model)

摘要的一部分说

treatmentC    20.625      9.731   2.120  0.03866 *

因此,如果治疗 == C,这对“减少”有显着的积极影响。现在我将“治疗”重新分级为 B,以了解治疗 == A 的影响:

sprays$treatment<-relevel(sprays$treatment,"B")
summary(model)

现在治疗 == C 在这个新模型中并不重要:

treatmentC    17.625      9.731   1.811  0.07567 .

抱歉发错地方了!我可以将我的问题移至 stats statexchange 还是应该在那里打开一个新问题?

1个回答

假设因子conditions具有水平A,B,C,并且您y使用 回归条件下的响应变量mod <- lm(y ~ conditions)现在返回(say )summary(mod)的参考水平的平均值以及条件和条件之间的均值差以及条件(分别报告为) 之间的差。如果你重新计算线性模型,现在你会得到 的平均值,和之间的差,以及之间的差conditionsABACA(Intercept)conditions:Bconditions:Cconditions <- relevel(conditions, ref = 'B')BABCB. 当然,p 值也可能会改变并打印出估计值。这并不意味着您的数据有问题。这并不意味着您的数据必然无法满足线性模型的假设。拟合是相同的,您只需更改打印出的信息,因为您更改了参考水平并使用了治疗对比。您可以使用原始mod.

至于报告什么,在许多领域,习惯上报告conditions(使用 的输出anova(mod))是否有统计显着影响,并在表格中报告完整的回归输出(使用您想要的任何参考水平)。关于如何以及是否报告Avs. B(例如)测试的规范因领域而异。仔细看看你所在领域的好论文。