0
在下面的代碼中,模型1 & 2工作得很好,併產生相同的結果。模型4也可以正常工作。具有ols相互作用的公式
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
回溯的)對OLS和RMS輸出()是
2: Design(eval.parent(m))
1: ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data = mtcars)
我試圖設置調試(:::設計沒有得到很遠!我在使用rms :: lrm()時遇到了這個問題,並意識到它也發生在ols上。
爲什麼#4工作而#3不工作?他們在公式中使用相同的術語,其中一個使用:
,另一個使用*
。謝謝。
爲什麼你將公式包裝在'as.formula'中?這不應該是必要的。此外,您應該提供[可重現的示例](http://stackoverflow.com/a/5963610/1412059)以使問題更容易回答。但是,您的第三個模型包含'cyl:ind'的交互,但不包含'ind'作爲主要效果。只有在非常特殊的情況下,類似這樣的想法纔是好主意,但並不總。很可能(這是猜測)是'ols'假定交互中的效果總是作爲主要效果出現。 – Roland
Thanks @roland。雖然我沒有在這裏生成實例的代碼,但是mtcars是[datasets]的一部分(https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/mtcars.html)。因此,上面的代碼可以按原樣運行。 – ironv