Невозможно сохранить соответствующий образец после matchit (): ошибка в cbind_all (x): аргумент 2 должен иметь имена - PullRequest
0 голосов
/ 26 октября 2018

Я использовал matchit() и Method="nearest". Но когда я пытаюсь сохранить вывод в data.frame на match.data(), появляется ошибка:

Ошибка в cbind_all (x): аргумент 2 должен иметь имена.

Мой код:

a = matchit(Y ~ Year + IndustryCode + ROA + Debt, 
            data=data, method="nearest", ratio=1)
b = match.data(a)
  • переменная года = 2003, 2004 и т. Д.
  • IndustryCode = A02, A21 и т. Д.
  • другие переменные являются числовыми.

Это предупреждения после matchit():

Предупреждающие сообщения:
1: glm.fit: числовые вероятности 0 или 1 произошло
2: в matchit2nearest (c (ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА,:
Меньше контроля, чем обработанных единиц и соответствие без замены. Не все обработанные единицы получат матч. Обработанные единицы будут сопоставлены в порядке, указанном м. заказ: самый большой.

Как вы думаете, в чем причина?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Эта ошибка произошла со мной, потому что у data были группы. Итак, сначала я удостоверился в ungroup(data), но не получил ошибку.

0 голосов
/ 24 ноября 2018

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

Второе предупреждение состоит в том, что ваша обработанная группа больше, чем ваша контрольная группа.Если вы делаете сравнение 1: 1 без замены, все блоки управления будут израсходованы до того, как все обработанные блоки получат соответствие.Чтобы исправить это, вам нужно сопоставить с заменой или подумать, действительно ли вы хотите обобщить данные контрольной группы и поменять метки на группах лечения.Вы можете сделать это, создав новую переменную, скажем notY, которая равна 1 - Y, и затем выполнить те же операции.

Ошибка заключается в том, что я полагаю, что вы используете тиббл, а не стандартные данныеРамка.MatchIt не полностью совместим с тибблами.Прежде чем приступить к анализу, попробуйте запустить data <- as_data_frame(data), чтобы преобразовать его обратно во фрейм данных.Возможно, вам придется загрузить в tibble пакет с library(), прежде чем сделать это.Причина, по которой я считаю, что тиббл может быть вашей проблемой, заключается в том, что match.data() не звонит cbind_all();он вызывает cbind(), который является универсальным методом, который отправляет методу класса, в данном случае, методу тиббла.Метод cbind для тиббла вызывает cbind_all().

...