Сопоставление оценки склонности с панельными данными

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

Данные в основном описывают список данных по облигациям и финансовые данные их эмитентов, а также условия облигаций, такие как дата выпуска, купонная ставка, срок погашения и тип облигаций, выпущенных ими. Например:

Firmnames Year ROA Bond_type
AAPL US Equity 2015 0.3 0
AAPL US Equity 2015 0.3 1
AAPL US Equity 2016 0.3 0
AAPL US Equity 2017 0.3 0
C US Equity 2015 0.3 0
C US Equity 2016 0.3 0
C US Equity 2017 0.3 0

......

Я уже знал, как сопоставлять наблюдения по нужным мне критериям, и использую exact = Year, чтобы убедиться, что я сопоставляю наблюдения того же года. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что наблюдения одних и тех же компаний будут совпадать, это не то, что я хочу. Код, который я использовал:

matchit(Bond_type ~ Year + Amount_Issued + Cpn + Total_Assets_bf + AssetsEquityRatio_bf + Asset_Turnover_bf, data = rdata, method = "nearest", distance = "glm", exact = "Year")

Однако, как вы можете видеть, во втором ряду моей выборки могут быть два наблюдения за один год от одних и тех же компаний из-за характера моего исследования (компания может выпускать облигации более одного раза в год). Единственное различие между ними - это Bond_type. Следовательно, функция MathcIt, конечно же, будет рассматривать их как лучшую контрольную группу и группу лечения и сопоставлять эти два наблюдения вместе, поскольку они имеют одинаковый ROA и другие факторы сопоставления в этом году.

На мой взгляд, у меня есть два способа решить эту проблему:

  1. Удалите наблюдения того же года и компании, однако удаление наблюдений может привести к смещению результатов и испортить исследование.

  2. Функция предотвращения MatchIt совпадения наблюдений от той же компании (или с той же Frimnames)

Второй подход будет лучше, поскольку он не приведет к предвзятости, однако я не знаю, смогу ли я сделать это в функции MatchIt. Надеюсь, кто-нибудь может дать мне совет по этому поводу или, может быть, есть лучшее решение этой проблемы, пожалуйста, будьте любезны, поделитесь со мной, заранее спасибо!

Примечание. Если есть дополнительная информация или требования, которые я должен предоставить, просто сообщите мне. Я впервые здесь задаю вопрос!


person Ping-Yu Huang    schedule 08.03.2021    source источник


Ответы (1)


В настоящее время это невозможно с MatchIt (хотя это интересная идея, и ее несложно реализовать, поэтому я могу добавить ее как функцию).

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

В пакете Matching, который выполняет сопоставление ближайшего соседа и генетическое сопоставление, аргумент restrict может быть передан функции сопоставления для ограничения определенных сопоставлений. Вы можете вручную создать матрицу ограничений, ограничив все пары наблюдений в одной компании, а затем передать матрицу Match().

person Noah    schedule 11.03.2021
comment
Привет, Ной, пожалуйста, пойми, что твой ответ означает для меня весь мир. Я обязательно попробую тот пакет, который вы упомянули выше. Могу я задать следующий вопрос, а именно: какой пакет будет для меня наиболее подходящим, если я захочу выполнить подход ближайшего соседа? Этого требует метод, который я применил в своем исследовании, поэтому мне интересно, следует ли мне использовать optmatch или Matching для этого. У меня ограниченный опыт программирования на R (2 месяца), и мне понадобится больше времени, чтобы изучить новый пакет, поэтому я лучше выберу тот, который лучше всего соответствует моим потребностям. - person Ping-Yu Huang; 12.03.2021
comment
Оптимальное сопоставление и сопоставление NN без замены - это, по сути, одно и то же. optmatch проще в использовании и дает вам доступ к полному сопоставлению (что является даже лучшим методом), но может работать медленно с большими наборами данных (›100000 строк). Matching немного сложнее в использовании, но имеет больше возможностей для настройки и дает доступ к генетическому сопоставлению, что также является отличным методом, и сопоставлению с заменой. Это будет быстрее для больших наборов данных. Если вы зададите здесь вопросы, я могу помочь вам использовать их в ваших целях. - person Noah; 12.03.2021
comment
Привет, Ной. Еще раз СПАСИБО за ответы на мои подробные вопросы. Я попробую optmatich, поскольку мой набор данных намного меньше 100000 строк. Если у меня возникнут дополнительные проблемы, я снова подниму свои вопросы и, надеюсь, получу от вас полезные и подробные ответы. - person Ping-Yu Huang; 16.03.2021
comment
Рад, что мне помогли. Не стесняйтесь отметить этот ответ как выбранный, чтобы вопрос не задерживался. Кстати, я решил добавить эту функцию в MatchIt, поэтому она должна появиться в следующем выпуске. - person Noah; 16.03.2021
comment
Нет проблем, сделаю это сразу. Могу я спросить, когда выйдет последняя версия MatchIt'? Еще раз спасибо за вашу доброту. - person Ping-Yu Huang; 19.03.2021