[英]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.