[英]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
参数。
这比它看起来更难。 有两个问题
只是将采样权重给予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.