Bor*_*ino 7 r survey sample gam mgcv
我对根据全国抽样调查数据进行的GAM回归很有趣。我对此文章感兴趣 。我选择了感兴趣的变量生成DF:
nhanesAnalysis <- nhanesDemo %>%
select(fpl,
age,
gender,
persWeight,
psu,
strata)
Run Code Online (Sandbox Code Playgroud)
然后,据我所知,我使用以下代码生成了加权DF:
library(survey)
nhanesDesign <- svydesign( id = ~psu,
strata = ~strata,
weights = ~persWeight,
nest = TRUE,
data = nhanesAnalysis)
Run Code Online (Sandbox Code Playgroud)
假设我只选择具有age?30:
ageDesign <- subset(nhanesDesign, age >= 30)
Run Code Online (Sandbox Code Playgroud)
现在,我将使用拟合GAM模型(fpl ~ s(age) + gender)mgcv package。是否可以通过weights参数或使用svydesignobject来实现ageDesign?
编辑
我想知道从svyglm对象推断计算的权重并将其用作weightsGAM中的参数是否正确。
小智 6
这比看起来更困难。有两个问题
仅给予采样权重mgcv::gam()不会执行以下任一操作:gam()将权重视为频率权重,因此会认为它拥有比实际多得多的数据。由于权重,您将得到平滑不足和低估的标准误差,并且由于聚类抽样,您也可能会得到低估的标准误差。
简单的解决方法是使用回归样条(splines包)。这些不如 所使用的惩罚样条线那么好mgcv,但差异通常不是什么大问题,并且它们可以直接与 一起使用svyglm。您确实需要选择要分配的自由度。
library(splines)
svglm(fpl ~ ns(age,4) + gender, design = nhanesDesign)
Run Code Online (Sandbox Code Playgroud)