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

问题描述 投票:0回答:2

我有兴趣对来自全国范围调查的数据执行 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)

现在,我将使用

fpl ~ s(age) + gender
拟合 GAM 模型 (
mgcv package
)。是否可以使用
weights
参数或使用
svydesign
对象
ageDesign
来做到这一点?

编辑

我想知道从

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

r sample survey gam mgcv
2个回答
5
投票

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

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

仅将采样权重赋予

mgcv::gam()
不会执行以下任一操作:
gam()
将权重视为频率权重,因此会认为它拥有比实际更多的数据。由于权重,您会得到平滑度不足和低估的标准误差,并且由于整群抽样,您也可能会得到低估的标准误差。

简单的解决方法是改用回归样条(

splines
包)。这些不如
mgcv
使用的惩罚样条好,但差异通常不是什么大问题,它们可以直接与
svyglm
一起使用。您确实需要选择分配多少个自由度。

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

-1
投票

你处理过这个问题吗?这些天我也对此感到困惑。如果在执行 GAM 回归时或使用原始数据时必须对其进行加权?

© www.soinside.com 2019 - 2024. All rights reserved.