在rms包中,具有交互作用的线性回归失败

在rms包中,具有交互作用的线性回归失败,r,linear-regression,R,Linear Regression,我在玩公式中的交互。我想知道是否有可能对两个虚拟变量中的一个进行交互回归。这似乎适用于使用lm()函数的常规线性回归,但对于rms包中的ols()函数,相同的公式失败。有人知道为什么吗 这是我的例子 data(mtcars) mtcars$gear <- factor(mtcars$gear) regular_lm <- lm(mpg ~ wt + cyl + gear + cyl:gear, data=mtcars) summary(regular_lm) regular_lm

我在玩公式中的交互。我想知道是否有可能对两个虚拟变量中的一个进行交互回归。这似乎适用于使用lm()函数的常规线性回归,但对于rms包中的ols()函数,相同的公式失败。有人知道为什么吗

这是我的例子

data(mtcars)

mtcars$gear <- factor(mtcars$gear)
regular_lm <- lm(mpg ~ wt + cyl + gear + cyl:gear, data=mtcars)
summary(regular_lm)

regular_lm <- lm(mpg ~ wt + cyl + gear + cyl:I(gear == "4"), data=mtcars)
summary(regular_lm)
数据(mtcars)

mtcars$gear我不太清楚,但它与公式的计算方式有关,而不是与模型转换后的拟合方式有关。使用
traceback()
表明问题发生在
设计(eval.parent(m))
;使用
选项(error=recover)
可以让您看到

Browse[1]> fname
[1] "wt"   "cyl"  "gear"
Browse[1]> zname
[1] NA
换句话说,
zname
是一些未正确设置的内部变量,因为
Design
函数不能很好地定义气缸和(齿轮==4)动态假人之间的交互作用

不过,这是可行的:

mtcars$cylgr <- with(mtcars,interaction(cyl,gear == "4"))
regular_ols <- ols(mpg ~ wt + cyl + gear + cylgr, data=mtcars)

mtcars$cylgr谢谢。我曾考虑过创建交互变量,但我有点害怕它会与预测/对比度函数交互
mtcars$cylgr <- with(mtcars,interaction(cyl,gear == "4"))
regular_ols <- ols(mpg ~ wt + cyl + gear + cylgr, data=mtcars)