在下面的代码中,型号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 ~ 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
模型3给出以下错误
Error in if (!length(fname) || !any(fname == zname)) { :
missing value where TRUE/FALSE needed
traceback()的输出是
2: Design(eval.parent(m))
1: ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data = mtcars)
我试着在ols和rms ::: Design上设置debug()并且没有达到目标!我在使用rms :: lrm()时遇到了这个问题,并意识到它也在ols中发生。
为什么#4工作而#3不工作?它们在公式中使用相同的术语,其中一个使用:
,另一个使用*
。 THX。
答案 0 :(得分:0)
谢谢@roland。当你运行#4时,它似乎添加了其他主要效果。以下产生与#4完全相同的输出:
ols(mpg ~ wt + cyl + gear + ind + cyl:ind, data=mtcars) #3b
ols(mpg ~ wt + gear + cyl * ind, data=mtcars) #4b