R - Отбрасывание определенных фиктивных переменных в svyglm - PullRequest
0 голосов
/ 07 сентября 2018

Я использую опрос glm для оценки коэффициентов, которые затем использую для прогнозирования вне выборки с данными на уровне населения.

download.file("https://meps.ahrq.gov/data_files/pufs/h192ssp.zip", temp <- tempfile())
unzipped_file = unzip(temp)
data = read.xport(unzipped_file)
unlink(temp) 
mepsdsgn <- svydesign(id = ~VARPSU,strata = ~VARSTR,weights = ~PERWT16F,data = data,nest = TRUE)

Данные, используемые в регрессии, сообщают о возрасте и доходе как непрерывные переменные, но данные о населении имеют их в группах (т. Е. Доход 10K-15K).

С этой целью я создал две факторные переменные, уровни дохода и возраст, которые соответствуют данным о населении. Я делаю это ужасным образом (я знаю), используя вложенные операторы if. Я просто не знаю лучшего способа сделать это.

incomelevels <-ifelse(h169$FAMINC16<10000,0,ifelse(h169$FAMINC16>=10000&h169$FAMINC16<15000,1,ifelse((h169$FAMINC16>=15000)&h169$FAMINC16<100000),2,ifelse(h169$FAMINC16>=100000,3,"NA"))))

При использовании surveyglm () я обнаружил, что только некоторые из моих фиктивных переменных для возраста и дохода являются прогностическими. Я пытался отсеять тех, которые этого не делают, используя опцию Exclude в функции factor (), но это полностью исключает данные, а не исключает их из создания фиктивной переменной, специфичной для этого уровня.

dental_levels <- svyglm(DVGEXP16 ~factor(income_levels)+factor(SEX),design=mepsdsgn)

Я знаю, что должен быть лучший способ работать с фиктивными переменными, но я не могу его найти. Все посты StackOverflow, которые я обнаружил, похоже, говорят «R обрабатывает фиктивные переменные для вас», но они не показывают, как удалить конкретную фиктивную фигуру или установить базовый уровень.

Извините за немодульный код, я довольно новичок в этом, и думаю об этом проекте.

...