Уменьшение размера «обработки» выборки с помощью MatchIt (или другого пакета) для увеличения сходства выборки - PullRequest
2 голосов
/ 28 июня 2019

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

Я хочу получить подобранную выборку с максимально близкими участниками, и я в порядке с потерей размера выборки в контрольной группе.Прямо сейчас MatchIt возвращает только две группы по 1000, тогда как мне нужны две группы, которые очень близко совпадают и подходят для небольших групп (например, 500 вместо 1000).

Есть ли способ сделать это через MatchIt или другой пакет?Я бы предпочел не использовать случайную выборку, а затем сопоставлять, если это возможно, потому что я хочу максимально приблизить совпадение между группами.

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

Ниже приведен код Iиметь для сопоставления двух групп.

data<- na.omit(data)
data$Group<- as.numeric(data$Group)
data$Group<- recode(data$Group, '1 = 1; 2 = 0')

m.out <- matchit(Group ~ Age + YearsEdu + Income + Gender, data = data, ratio = 1)
s.out <- summary(m.out, standardize = TRUE)
plot(s.out)

matched.data <- match.data(m.out)

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Вам следует заглянуть в пакет designmatch, который реализует форму сопоставления, называемую кардинальным соответствием, которая выполняет то, что вы хотите (то есть найдите самый большой совпавший набор, который дает желаемый баланс). В отличие от MatchIt, designmatch не использует переменную расстояния; вместо этого он использует оптимизацию для решения проблемы соответствия. Вы выбираете, насколько точно вы хотите сбалансировать каждый ковариат, и он сделает все возможное, чтобы решить проблему, сохранив при этом как можно больше совпадений. Методология описана в Zubizarreta, Paredes & Rosenbaum (2014) .

0 голосов
/ 02 июля 2019

MatchIt, как и другие подобные пакеты, предлагает несколько подходящих процедур, которые позволяют вам поиграть с настройками. Проверьте аргумент method, который по умолчанию установлен на method = 'nearest'. Это означает, что, если вы не укажете, он будет искать наилучшее соответствие для каждого из наблюдений за лечением. В вашем случае у вас всегда будет 1000 парных матчей с этим параметром.

Вы можете установить его на method = 'exact', что гораздо более ограничительно. В документации вы найдете:

Этот метод сопоставляет каждую обработанную единицу со всеми возможные блоки управления с одинаковыми значениями на всех ковариатах, образующих подклассы так, чтобы в каждом подклассе все единицы (обработка и контроль) имели одинаковые ковариатные значения.

В наборе данных lalonde вы можете запустить:

m.out <- matchit(treat ~ educ + black + hispan, data = lalonde, method = 'exact')
summary(m.out)

Как следствие, он отбрасывает некоторые наблюдения за лечением, которые не могут быть сопоставлены. Посмотрите на другие возможности для method, может быть, вы найдете то, что вам понравится больше.

При этом будьте внимательны, чтобы не отбрасывать слишком много наблюдений за лечением. Если вы это сделаете, вы сделаете лечебную группу похожей на контрольную (а не на противоположную), что может привести к нежелательным результатам.

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