1
Rのeffects
パッケージを使用して関数を開発しています。私はデバッグできない問題が常に発生しています。xlevelsで効果の機能が失敗する
私は次のコードを実行します:それは魔法のように動作
rm(list = ls()) # clear working directory
library(effects)
head(mtcars)
mod <- lm(mpg ~ gear*cyl + gear + cyl + carb, data=mtcars)
summary(mod)
eff.dat <- effect("gear*cyl", mod=mod, KR=TRUE, xlevels=list(gear=seq(3,5,1)))
eff.dat <- as.data.frame(eff.dat)
View(eff.dat)
をgear
が3, 4,
と5
とcyl
の対応する値に等しいとき、私はmpg
上の相互作用項の効果を得ることができます。
proba <- function(term, model, main) {
eff.dat2 <<- effect(term, mod=model, KR=TRUE,
xlevels=list(main=seq(min(mtcars[[main]]),
max(mtcars[[main]]), 1)))
eff.dat2 <<- as.data.frame(eff.dat2)
}
proba("gear*cyl", model=mod, main="gear")
View(eff.dat2)
xlevels
一部に障害が発生したとの相互作用項がgear
のデフォルト値、Iが指定されていたもののために推定されている:
effect
のためだけに何かを書くのは気にしません。
ありがとうございました!何が起こるか
なぜ戻り値なしで関数を作成していますが、副作用がありますか? – Roland
また、 'setNames(list(seq(min)(mtcars [[main]))、 max(mtcars [[main]])、))、main)'を使用してください。あなたのコードはリスト要素の名前として '' main "'を使います。 – Roland
ありがとう、これは動作します!私はそれを答えとして書くべきですが、私はそれを受け入れることを嬉しく思っています。しかし、なぜ私は 'setNames'を必要としているのか分かりません。 – eborbath