数式の相互作用で遊んでいます。2つのダミー変数のうちの1つに対して交互作用を使用して回帰を実行できるかどうか疑問に思いました。これは、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)
そして今、rmsの例
library(rms)
dd <- datadist(mtcars)
options(datadist = "dd")
regular_ols <- ols(mpg ~ wt + cyl + gear + cyl:gear, data=mtcars)
regular_ols
# Fails with:
# Error in if (!length(fname) || !any(fname == zname)) { :
# missing value where TRUE/FALSE needed
regular_ols <- ols(mpg ~ wt + cyl + gear + cyl:I(gear == "4"), data=mtcars)
この実験は、推定値が大幅に変化するように見えるため、実行するのに最も賢明な統計ではないかもしれませんが、ols()が「lmで使用されるのと同じフィッティングルーチン」を実行する必要があるため、なぜ失敗するのか少し興味があります。