1

Rを使用して、一般化された加法モデル(mgcvパッケージのgam)の交互作用項のWald検定を計算しようとしています tは機能しているようです。このメソッドを機能させるにはどうすればよいですか?それができない場合、Rで同じ値を計算する別の簡単な方法はありますか?

lmモデルは動作します

model <- lm(sysbp~pmper10*se_race4,data=mesa)
regTermTest(model,"pmper10:se_race4")
# Wald test for pmper10:se_race4
# in lm(formula = sysbp ~ pmper10 * se_race4, data = mesa)
# F =  3.940545  on  3  and  43621  df: p= 0.0080253 

しかし、gamモデルはそうではありません

model <- gam(sysbp~pmper10*se_race4,data=mesa)
regTermTest(model,"pmper10:se_race4")
# Error in solve.default(V) : 'a' is 0-diml
4

1 に答える 1

2

これは、ライブラリを使用する場合は機能しますが、使用しない場合は機能しgamますmgcv

この関数は、特定のモデルのモデル行列から属性regTermTestを抽出することに依存しています。'assign'

aa <- attr(model.matrix(model), "assign")[okbeta]

このオブジェクトaaは、作成時にインデックスを作成するために使用されますV

gamパッケージのオブジェクトにmgcvはこの属性がありません。からの例を使用してsurvey::regTermTest

data(esoph)
 model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * 
   alcgp, data = esoph, family = binomial())


regTermTest(model1,"tobgp")

パッケージゲームを使用する場合

library(gam)
 model2 <- gam(cbind(ncases, ncontrols) ~ agegp + tobgp * 
   alcgp, data = esoph, family = binomial())

 regTermTest(model2,"tobgp")

出力を提供します

Wald test for tobgp
   in gam(formula = cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, 
     family = binomial(), data = esoph)
  F =  3.961947  on  3  and  67  df: p= 0.011609 

その間

library(mgcv)

model3 <- gam(cbind(ncases, ncontrols) ~ agegp + tobgp * 
   alcgp, data = esoph, family = binomial())


 regTermTest(model3,"tobgp")

OPによって報告されたエラーを示します。

于 2012-05-23T01:29:31.067 に答える