【发布时间】:2014-09-08 22:27:09
【问题描述】:
我想从 R 公式中删除一些交互项。我的情况是,我有一个具有很多级别的因子变量(称为 A,它的取值范围为 1-50),还有另一个我想与之交互的连续变量(称为 B)。
A*B
创建术语 A1:B, A2:B, A3:B,... 我想要一种简单的方法来摆脱第一个 A1:B 术语。
注意:我看到了一些关于 lm 案例的先前答案,它们调用了 update 然后删除了一些术语。这对我不起作用,因为我正在尝试使用 mlogit 包估计多项式 logit 模型,并且我无法在不放弃一些交互的情况下进行第一次估计。
编辑:虽然我没有尝试使用 lm,但如果我能发生以下情况,那么我认为它会解决我的问题。
dd<-data.frame(A=sample(letters[1:10], 100, replace=T),B = runif(100),z=rexp(100))
#need to drop B term below
reg1 <- lm(z~A*B, dd)
#or need to drop Aa:B term here
reg2 <- lm(z~A*B - B, dd)
#but this doesn't work (I realize why, but this is an
#example of what I would like to have happen)
reg3 <- lm(z~A*B - B - Aa:B, dd)
【问题讨论】:
-
我不确定我是否理解。当您执行
dd<-data.frame(A=sample(letters[1:10], 100, replace=T), B = runif(100), z=rexp(100)); lm(z~A*B, dd)时,您会看到Aa或Aa:B没有估计值,因为当您有截距项时,它们无法区分。那么,您是否正在拟合一个不会自动删除的模型? reproducible example 在这里肯定会有所帮助。 -
那么您希望这些观察结果如何?它们会成为参考类别并被拦截吗?
-
我没有使用 lm,而是尝试使用 mlogit 包估计多项式 logit 模型。基本上,您必须对 mlogit 做出一些识别假设(需要将 1 个附加系数设置为等于 0)。与 lm 不同,如果您具有完美的共线性,它将为您删除一个变量/报告 NA 系数,mlgit 不会收敛。希望这会有所帮助,但无论如何,我只需要删除其中一个交互项即可。
-
@MrFlick,感谢您的评论。在您的示例中,我还想从公式中删除 B 。我已将我的问题扩展到您的示例。我认为现在更清楚了,但如果需要,我很乐意再次澄清。
标签: r