如何在GAM中对调查数据使用样本权重?

时间:2019-05-26 13:16:48

标签: r statistics regression gam mgcv

我对根据全国抽样调查数据得出的GAM回归很感兴趣。我对此post感兴趣。 我选择了感兴趣的变量生成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)

现在,我将GAM模型(fpl ~ s(age) + gender)与mgcv package相匹配。是否可以使用weights参数或使用svydesign对象ageDesign来做到这一点?

1 个答案:

答案 0 :(得分:1)

这比看起来要困难得多。有两个问题

  1. 您想要获得适量的平滑效果
  2. 您想要有效的标准错误。

仅将采样权重赋予load: 1.52 cmd: node 5397 waiting 0.14u 0.03s 不会执行以下任何一项操作:mgcv::gam()将权重视为频率权重,因此会认为它的数据比实际多得多。由于权重,您会得到不够平滑和被低估的标准误,而且由于聚类抽样,您也可能会被低估的标准误。

简单的解决方法是改用回归样条线(gam()包)。这些效果不如splines所使用的惩罚样条曲线好,但是通常差异并不大,它们可以直接与mgcv一起使用。您确实需要选择分配多少个自由度。

svyglm