R ols的带相互作用的公式
在下面的代码中,模型1和2工作得很好,并产生相同的结果。模型4也很好用R ols的带相互作用的公式,r,R,在下面的代码中,模型1和2工作得很好,并产生相同的结果。模型4也很好用 require(rms) mtcars$ind <- I(mtcars$gear==4) dd <- datadist(mtcars) options(datadist = "dd") ols(as.formula(mpg ~ wt + cyl + gear + cyl:gear), data=mtcars) #1 ols(as.formula(mpg
require(rms)
mtcars$ind <- I(mtcars$gear==4)
dd <- datadist(mtcars)
options(datadist = "dd")
ols(as.formula(mpg ~ wt + cyl + gear + cyl:gear), data=mtcars) #1
ols(as.formula(mpg ~ wt + cyl + gear + cyl * gear), data=mtcars) #2
ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data=mtcars) #3
ols(as.formula(mpg ~ wt + cyl + gear + cyl * ind), data=mtcars) #4
回溯的输出是
2: Design(eval.parent(m))
1: ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data = mtcars)
我试图在ols和rms上设置调试:::设计,但没有走多远!!我在使用rms::lrm时遇到了这个问题,并意识到它也发生在ols中
为什么4能工作而3不能?它们在公式中具有相同的术语,其中一个使用:,另一个使用*。谢谢@roland。运行4时,它似乎添加了其他主要效果。以下各项产生与4完全相同的输出:
ols(mpg ~ wt + cyl + gear + ind + cyl:ind, data=mtcars) #3b
ols(mpg ~ wt + gear + cyl * ind, data=mtcars) #4b
你为什么把你的公式用as.formula包装起来?这应该没有必要。此外,你应该提供一个简单的答案,使问题更容易回答。但是,您的第三个模型包含交互cyl:ind,但不包含作为主要效果的ind。只有在非常特殊的情况下,这样做才是一个好主意,但在一般情况下并非如此。这很可能是推测,ols假设交互中的效果总是作为主要效果出现。谢谢@roland。虽然我这里没有生成实例的代码,但mtcars是其中的一部分。因此,上面的代码可以按原样运行。
ols(mpg ~ wt + cyl + gear + ind + cyl:ind, data=mtcars) #3b
ols(mpg ~ wt + gear + cyl * ind, data=mtcars) #4b