r - 如何在 GAM (mgcv) 中对调查数据使用样本权重进行 Logit 回归?
问题描述
我很感兴趣对来自全国范围的调查数据进行 GAM 回归,该调查提供样本权重。我饶有兴趣地阅读了这篇 文章。我选择了我感兴趣的变量来生成一个 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
object这样做ageDesign
?
编辑
我想知道从svyglm
对象推断计算的权重并将其用于weights
GAM 中的参数是否正确。
解决方案
这比看起来更困难。有两个问题
- 您想要获得适量的平滑
- 您需要有效的标准错误。
只给采样权重mgcv::gam()
不会做以下任何一个:gam()
将权重视为频率权重,因此会认为它拥有比实际更多的数据。由于权重,您会得到不平滑和低估的标准误差,并且由于整群抽样,您也可能会得到低估的标准误差。
简单的解决方法是改用回归样条(splines
包)。这些不如 使用的惩罚样条曲线好mgcv
,但差异通常不是什么大问题,并且它们可以直接与svyglm
. 您确实需要选择分配多少自由度。
library(splines)
svglm(fpl ~ ns(age,4) + gender, design = nhanesDesign)
推荐阅读
- javascript - 如何对 NeDB 数据库进行排序以获取响应?(Javascript 回调/箭头函数语法混乱)
- android - 无效的自定义 PageKeyedDataSource 使回收器视图跳转
- asp.net-mvc - 使用默认 {controller}/{id} 路由和 {controller}/{action}/{id} 路由时与路由冲突
- r - 在ggplot2中的geoms上均匀地应用抖动
- r - 检查字符串变量是否是R中另一个变量的子集
- c++ - C++ - 如何创建动态向量
- webserver - 如何加载远程千里马脚本?
- p5.js - 如何在 P5.js 中查找多行文本的文本边界?
- python - 在字符串中的元素之间添加值的索引
- php - 使用 Google Cloud PubSub Client Library for php 时,我们如何最大限度地减少超时?