繁体   English   中英

如何在GAM(mgcv)中使用样本权重进行Logit回归的调查数据?

[英]How to use sample weights in GAM (mgcv) on survey data for Logit regression?

我很有兴趣对全国范围内提供样本权重的调查数据进行GAM回归。 我感兴趣地阅读了这篇文章 我选择了我感兴趣的vars产生DF:

nhanesAnalysis <- nhanesDemo %>%
                    select(fpl,
                           age,
                           gender,
                           persWeight,
                           psu,
                           strata)

根据我的理解,我使用以下代码生成加权DF:

library(survey)    
nhanesDesign <- svydesign(    id      = ~psu,
                              strata  = ~strata,
                              weights = ~persWeight,
                              nest    = TRUE,
                              data    = nhanesAnalysis)

假设我只选择age≥30科目:

ageDesign <- subset(nhanesDesign, age >= 30)

现在,我将使用mgcv package适合GAM模型( fpl ~ s(age) + gender )。 是否可以使用weights参数或使用svydesign对象ageDesign

编辑

我想知道从svyglm对象推断计算权重是否正确,并将其用于GAM中的weights参数。

这比它看起来更难。 有两个问题

  1. 您希望获得适当的平滑量
  2. 您需要有效的标准错误。

只是将采样权重给予mgcv::gam()将不会执行以下任何一项: gam()将权mgcv::gam()为频率权重,因此会认为它拥有的数据比实际数据多得多。 由于权重的原因,您将得到不平衡和低估的标准误差,并且由于群集采样,您也可能会低估标准误差。

简单的解决方法是使用回归样条( splines包)。 这些并不像mgcv使用的惩罚样条那么好,但差异通常不是什么大问题,而且它们与svyglm直接svyglm 您需要选择分配多少自由度。

library(splines)
svglm(fpl ~ ns(age,4) + gender, design = nhanesDesign)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM