Проблемы с функцией MatchIt :: matchit - PullRequest
0 голосов
/ 12 февраля 2020

Привет. Я бы хотел провести логистическую регрессию, скорректировав оценку склонности. Но сначала я бы хотел сопоставить договорные и недоговорные в соответствии с показателями склонности. Вот мой первый скрипт:

mod_match<-matchit(Treatment~Prop.score, method = "nearest", data = Epidemio.prop,caliper = 0.05)

Вот сообщения об ошибках

Ошибка в matchit (Treatment ~ Prop.score, method = "ближайший", data = Epidemio.prop, : В данных существуют отсутствующие значения

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

mod_match<-matchit(Treatment~Prop.score, 
method = "nearest",  data = Epidemio.prop[c("Treatment","Prop.score")],
caliper = 0.1)

У меня все еще есть сообщения об ошибках.

Ошибка в файле weights.matrix (match.matrix, Treat, Discarded): не найдено единиц измерения. Дополнительно: Предупреждающие сообщения:

1: In max (pscore [ Treat == 0]): нет не пропущенных аргументов для max; возвращает -Inf

2: В max (pscore [Treat == 1]): нет не пропущенных аргументов для max; возвращает -Inf

3: в мин. (Pscore [Treat == 0]): нет не пропущенных аргументов в min; возвращается Inf

4: в мин. (Pscore [Treat == 1]): нет не пропущенные аргументы для min; возврат Inf

1 Ответ

0 голосов
/ 13 февраля 2020

Проблема в том, что вы не указываете какие-либо переменные, которые будут использоваться при расчете показателя склонности (т. Е. Вы даете только Treatment и Prop.score, значение которых мне не понятно). Вам нужно передать набор вспомогательных переменных, которые будут использоваться, чтобы соответствовать модели, прогнозирующей оценки склонности.

Кроме того, исходя из моего опыта использования MatchIt, он выдаст ошибку, связанную с пропущенными значениями, независимо от того, что пропущение не связано с переменными, включенными в модель.

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

Примерно так:

vars_to_keep <- c("Treatment", "x1", "x2", "x3", ... )
aux_df <- df[vars_to_keep]

# Select only complete cases (i.e. drop observations with at least one missing)
aux_df <- aux_df[complete.cases(aux_df), ]

mod_match <- matchit(Treatment ~ x1 + x2 + x3 + ..., method = "nearest", data = aux_df) 

Тем не менее, этот урок гораздо более всесторонняя помощь. Я рекомендую взглянуть на это.

Удачи!

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