【问题标题】:In R, can't get results of regTermTest for gam model在 R 中,无法获得 gam 模型的 regTermTest 的结果
【发布时间】:2012-05-29 12:30:44
【问题描述】:

我正在尝试使用 R 计算广义加法模型(mgcv 包中的 gam)中交互项的 Wald 测试。documentation for regTermTest 表示该函数采用具有 coef 和 vcov 方法的模型,但放置了一个 gam 模型in 似乎不起作用。我怎样才能让这种方法起作用?如果做不到,是否有另一种简单的方法来计算 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

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您使用库 gam 而不是 mgcv,这将起作用。

    regTermTest 函数依赖于从给定模型的模型矩阵中提取 'assign' 属性。

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

    这个对象aa用于在创建V时构造索引

    mgcv 包中的 gam 对象没有此属性。使用来自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 报告的错误。

    【讨论】:

    • 谢谢——非常有帮助的答案!我最终使用了 aod 包中的 wald.test 函数,因为我想继续使用 mgcv。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多