Epsilon LTT 2024-04-18 12:50 采纳率: 77.8%
浏览 16

使用混合截面数据构造DID模型

假设如下,有A,B两所学校,每所学校都有10个不同的专业。收集了2014年至2020年毕业生的各种信息和每一个学生的就业情况形成了混合截面数据集。
A学校在2016年开始了一项新政策:开设就业辅导班。B学校一直未开设就业辅导班。A学校的学生可以自由选择是否参加辅导班。因此,样本可以分为5类:

  • 2016年前A学校的学生(无就业辅导班);

  • 2016年前B学校的学生(无就业辅导班);

  • 2016年后A学校参与就业辅导班的学生;

  • 2016年后A学校未参与就业辅导班的学生;

  • 2016年后B学校的学生(无就业辅导班)

想要探究的是,就业辅导班对学生的就业率有什么影响。
我的初步想法是把A学校定义为处理组,B学校定义为控制组。但是A学校中不参与就业培训班的学生该如何定义呢?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-18 12:50
    关注

    引自免费微信小程序:皆我百晓生

    为了构建一个双重差分(DID)模型来分析就业辅导班对学生就业率的影响,我们可以遵循以下步骤。首先,你需要准备数据,并确保每个学生都有唯一的标识符,以及他们的毕业年份、学校、是否参加了就业辅导班以及就业状态等变量。这里是一个简化的数据结构示例:

    import pandas as pd
    data = {
        'student_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        'year_of_graduation': [2015, 2015, 2016, 2016, 2017, 2017, 2018, 2018, 2019, 2019],
        'school': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
        'job_training': [False, False, True, False, True, False, True, False, True, False],
        'employment_status': [True, True, True, True, False, True, False, True, True, False]
    }
    df = pd.DataFrame(data)
    

    接下来,我们将创建一些额外的变量用于双重差分模型,包括学校固定效应(school fixed effect)、时间固定效应(year fixed effect),以及交互项(treatment dummy 和 school*year interaction term):

    # 创建学校固定效应
    df['school_fixed_effect'] = df['school'].astype('category').cat.codes
    
    # 创建时间固定效应
    df['year_fixed_effect'] = df['year_of_graduation'] - df['year_of_graduation'].min()
    
    # 创建治疗哑变量 ( treatment = 1 for A school post-2016 with job training )
    df['treatment'] = ((df['school'] == 'A') & (df['year_of_graduation'] >= 2016)) & df['job_training']
    
    # 创建学校与时间的交互项
    df['school_year_intercept'] = df['school_fixed_effect'] * df['year_fixed_effect']
    

    然后,我们可以使用线性回归模型来估计就业辅导班的影响。在这个例子中,我们使用Python的statsmodels库进行回归分析:

    from statsmodels.formula.api import ols
    
    # 模型公式: employment_status ~ treatment + school_fixed_effect + year_fixed_effect + school_year_intercept
    model = ols("employment_status ~ C(treatment) + C(school_fixed_effect) + C(year_fixed_effect) + C(school_year_intercept)", data=df).fit()
    summary = model.summary()
    print(summary)
    

    这个模型将估计出就业辅导班(treatment)对就业状态的影响,同时控制了学校和时间的固定效应,以及它们之间的交互项。结果中的treatment系数就是就业辅导班对就业率的平均处理效果(ATE)。

    注意,这个模型假设没有遗漏变量偏误,并且除了就业辅导班之外,其他因素在A和B学校之间没有显著差异。此外,还假设就业辅导班的效果在整个观察期内是一致的,这可能不是实际情况,因此可能存在异时性偏差。要更深入地研究这个问题,可能需要进一步的数据和更复杂的模型,例如工具变量法或更高级的面板数据方法。

    如果你有任何疑问或者需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月18日

悬赏问题

  • ¥15 数据库原理及应用(相关搜索:数据类型)
  • ¥100 解决数据不连续出现问题
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误