1

我正在尝试使用 R 计算广义加法模型(mgcv 包中的 gam)中交互项的 Wald 测试。regTermTest 的文档说该函数采用具有 coef 和 vcov 方法的模型,但将 gam 模型放入没有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 

但游戏模型没有

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")

如果我们使用包 gam

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