R не в состоянии генерировать оценки склонности в соответствии с формулой;нет ошибок пока нет расчетов - PullRequest
0 голосов
/ 31 мая 2018

Я хочу сделать оценку склонности после многократного вменения, однако я думаю, что R неисправен, несмотря на отсутствие ошибок.

При загрузке пакета "кобальт" есть встроенный набор данных: lalonde_mis, который мы будем использовать дляэтот пример.

Несколько вменяемых данных следующим образом:

library(mice)
library(cobalt)
library(MatchIt)
data(lalonde_mis)

m <- 10 
imp <- mice(lalonde_mis, m = m, print = FALSE) 
imp.data <- complete(imp, "long", include = FALSE)
imp.data <- imp.data[with(imp.data, order(.imp, .id)),]

Теперь вычисление баллов склонности:

imp.data$ps <- imp.data$match.weight <- rep(0, nrow(imp.data))
for (i in levels(imp.data$.imp)) {
    in.imp <- imp.data$.imp == i
    imp.data$ps[in.imp] <- glm(treat ~ age + educ + race + 
                                   married + nodegree +
                                   re74 + re75, 
                               data = imp.data[in.imp,], 
                               family = "binomial")$fitted.values
    m.out <- matchit(treat ~ ps, data = imp.data[in.imp,], 
                     distance = imp.data$ps[in.imp])
    imp.data$match.weight[in.imp] <- m.out$weights
}

Эта часть вышеупомянутой формулы должна вычислить и дать мнеоценки склонности:

imp.data$ps <- imp.data$match.weight <- rep(0, nrow(imp.data))
for (i in levels(imp.data$.imp)) {
    in.imp <- imp.data$.imp == i
    imp.data$ps[in.imp] <- glm(treat ~ age + educ + race + 
                                   married + nodegree +
                                   re74 + re75, 
                               data = imp.data[in.imp,], 
                               family = "binomial")$fitted.values}

Однако, когда я оглядываюсь назад на набор данных, оба значения imp.data $ match.weight, а также imp.data $ ps остаются равными 0;R не показывает ошибку, хотя;что здесь происходит?

Редактировать: sessionInfo () для анализов

R version 3.4.4 (2018-03-15)
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

1 Ответ

0 голосов
/ 24 июня 2018

Проблема в том, что mice изменил тип переменной .imp в их выводе complete() с factor на numeric.Из-за этого у него нет уровней, и levels(imp.data$.imp) возвращает NULL, поэтому цикл никогда не запускается.Замените levels на unique, и это должно исправить ошибку.Я обновляю виньетку cobalt в следующем выпуске, чтобы отразить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...