Стратифицированный свигльм в R

#r #logistic-regression #survey

Вопрос:

Я ищу совета о том, как провести взвешенный логистический регрессионный анализ, стратифицированный по полу, в R.

Для моего основного, нестратифицированного анализа я сгенерировал обратные веса вероятности (invp) и провел взвешенную логистическую регрессию следующим образом:

 complete_cases_weighted <- svydesign(id=~1, weights=~invp, data=complete_cases)
svyglm(outcome ~ exposure, design=complete_cases_weighted, family="binomial")
 

Теперь я хочу, по существу, повторить этот анализ дважды, один раз только для женщин и один раз только для мужчин.

Как лучше всего это сделать с правильным взвешиванием? Должен ли я повторить весь процесс генерации весов и выполнения взвешенной логистической регрессии, разделив мои данные на мужчин и женщин? Или есть какая-то причудливая работа ногами, которую я могу сделать с svydesign / svyglm для этого?

Комментарии:

1. это похоже на вопрос статистики, поэтому он может быть лучше подходит для stats.stackexchange.com

2. Извините, чтобы уточнить — мне ясна статистика, стоящая за этим, я просто пытаюсь понять, как лучше всего закодировать это в R. По сути, должен ли я повторять существующий код генерации и анализа веса для подмножеств данных или svydesign svyglm у меня есть встроенные функции, которые справляются с этим.

Ответ №1:

От ?svyglm

 library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
summary(svyglm(api00~ell meals mobility, design=dstrat))
 

цикл через все уровни sch.wide

 for( this_value in unique( apistrat$sch.wide ) ){

    print( this_value )
    print( summary(svyglm(api00~ell meals mobility, design=subset(dstrat,sch.wide== this_value ))))

}
 

Комментарии:

1. отличное решение. Спасибо, что объяснили нюансы работы с подмножествами. Только странно, что это не совпадает с результатами svyby(formula = api00 ~ ell meals mobility, by = ~ sch.wide, design = dstrat, FUN = svyglm)

2. @YuriySaraykin да, svyby результат более сжатый