2015-02-11 2 views
4

Я пытаюсь применить обратные весовые коэффициенты вероятности к регрессии, но lm() использует только аналитические веса. Это часть репликации. Я работаю над тем, где оригинальный автор использует pweight в Stata, но я пытаюсь реплицировать его в R. Аналитические веса предоставляют более низкие стандартные ошибки, которые вызывают проблемы с некоторыми из моих переменных значение.Обратные весовые коэффициенты вероятности в r

Я пробовал посмотреть на пакет survey, но не знаю, как подготовить объект съемки для использования с svyglm(). Является ли этот подход тем, что я хочу, или есть более простой способ применения обратных вероятностных весов?

dput:

data <- structure(list(lexptot = c(9.1595, 9.86330744180814, 
8.92372556833205, 8.58202430280175, 10.1133857229336), progvillm = c(1L, 
1L, 1L, 1L, 0L), sexhead = c(1L, 1L, 0L, 1L, 1L), agehead = c(79L, 
43L, 52L, 48L, 35L), weight = c(1.04273509979248, 1.01139605045319, 
1.01139605045319, 1.01139605045319, 0.76305216550827)), .Names = c("lexptot", 
"progvillm", "sexhead", "agehead", "weight"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -5L)) 

Линейная модель (с использованием аналитических весов)

prog.lm <- lm(lexptot ~ progvillm + sexhead + agehead, data = data, weight = weight) 
summary(prog.lm) 
+1

Не использовали его раньше, но поиск по RSeek появился [пакет ipw] (http://www.jstatsoft.org/v43/i13/paper). В настоящее время он не включен в CRAN, но вы можете установить архивированную версию. – Gregor

+0

@Gregor Я посмотрел на этот пакет, но, будучи вдали от данных и недоступен в CRAN, я не думал об установке. Кроме того, похоже, что «опрос» занял свое место, но я не могу понять, как получить объект для регрессии. – Vedda

ответ

4

Хорошо, так что я понял это и думал, что я обновлю почту упаковывают другие пытались понять это. На самом деле это довольно просто.

data$X <- 1:nrow(data) 
des1 <- svydesign(id = ~X, weights = ~weight, data = data) 
prog.lm <- svyglm(lexptot ~ progvillm + sexhead + agehead, design=des1) 
summary(prog.lm) 

Стандартные ошибки верны.

+0

Вы уверены, что это правильно? Аргумент 'id' предназначен для указания кластерных конструкций. Идентификатор должен быть '~ 0' или' ~ 1' для простых случайных конструкций. –

+0

@ Michał Да, это правильно. Стандартные ошибки теперь правильные. Я не вижу необходимости в 'id', но если у вас есть предложение, пожалуйста, предоставьте ответ. – Vedda

+1

Этот вопрос два года, но он полезен :) Добавлю, что 'svydesign (id = ~ 1, ...)' проще и дает точно такие же результаты! – Roah

Смежные вопросы