此帖仅作自我回顾用,如有错误,欢迎批评指正。
最近在做关于psm-did的数据处理,但一直苦于不知道如何处理而搜索了大量的帖子。最终发现不管是混合匹配还是逐期匹配都会存在一定的问题,所以参照了连玉君老师的帖子及统计研究中谢申祥老师在2021年发表的《传统PSM-DID模型的改进与应用》对数据做了序列匹配。但由于本人并没有搜索到相关的stata命令和操作,所以自己用python写了一套代码,按照我自己的逻辑来说应该是可用的,当然不保证一定对,仅作参考。
初始数据是包含处理组和用作匹配的所有对照组的面板数据,时间周期为1-8周,其中1-4周为政策实行前,5-8周为政策实行后。所包含的特殊类变量命名为code,时间变量命名为time。
第一步,由于我的数据量比较大,所以这里选择逐期计算倾向性得分后再合并
import csv
import random
import psmatching.match as psm
import pytest
import pandas as pd
import numpy as np
from psmatching.utilities import *
import scipy
import statsmodels.api as sm
path = "D:\论文和数据\正常vs恶意\正常加恶意.csv"
#model由干预项和其他类别标签组成,形式为"干预项~类别特征+列别特征。。
model = "treat ~ sex + type + city + regdays + quantity + marea + mprice + distance + scall + circlehot + pric