具有ols相互作用的公式

时间:2014-04-14 04:34:28

标签: 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 ~ 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。

1 个答案:

答案 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