问题描述
我正在尝试运行 diff-in-diff 回归,其中每个处理的变量(批次)与许多未处理的对照批次相匹配。我根据每个处理批次的相对位置创建了一个符合条件的对照批次列表,从中随机选择了 14 个对照批次。我有 70 个处理过的批次,每个批次都有 14 个匹配的对照批次的清单。当我尝试运行回归时,我的问题就出现了。
我可以运行回归,其中所有处理批次和所有控制批次都在没有特定匹配的情况下使用:
m1 <- glm.nb(cpq ~ treated_grouP*is_post,data = df)
我可以对一个处理批次进行回归分析,它是 14 个对照批次:
m2 <- glm.nb(cpq ~ treated_grouP*is_post,data = filter(df,lot_name %in% control$combo[[2]])))
其中 control$combo 是我匹配批次的数据框,combo 列只是处理批次名称和 14 个匹配的对照批次名称的列表. [[2]] 只是因为第二行是列表中第一个处理批次。
但是,我正在努力使用所有 70 个处理批次但仅使用每个匹配的对照批次列表来编写回归。我想我在问是否有一种方法可以组合所有 70 个回归或以某种方式为数据编写一个子集,以便使用的控制批次与每个处理批次匹配。 我的数据框的示例子集:
df:
lot_name | 年 | 四分之一 | cpy | cpq | treatment_group | is_post |
---|---|---|---|---|---|---|
lot1 | 13 | 1 | 47 | 11 | 0 | 0 |
lot1 | 13 | 2 | 47 | 15 | 0 | 0 |
lot1 | 13 | 3 | 47 | 7 | 0 | 0 |
lot1 | 13 | 4 | 47 | 14 | 0 | 0 |
lot1 | 14 | 5 | 53 | 10 | 0 | 1 |
lot1 | 14 | 6 | 53 | 16 | 0 | 1 |
lot1 | 14 | 7 | 53 | 12 | 0 | 1 |
lot1 | 14 | 8 | 53 | 15 | 0 | 1 |
lot2 | 13 | 1 | 38 | 9 | 1 | 0 |
lot2 | 13 | 2 | 38 | 10 | 1 | 0 |
lot2 | 13 | 3 | 38 | 11 | 1 | 0 |
lot2 | 13 | 4 | 38 | 8 | 1 | 0 |
lot2 | 14 | 5 | 41 | 12 | 1 | 1 |
lot2 | 14 | 6 | 41 | 11 | 1 | 1 |
lot2 | 14 | 7 | 41 | 9 | 1 | 1 |
lot2 | 14 | 8 | 41 | 9 | 1 | 1 |
控制:
lot_name | 已处理 | possible_controls | 计数 | 组合 |
---|---|---|---|---|
lot1 | 0 | 不适用 | 不适用 | 不适用 |
lot2 | 1 | lot1,lot5,lot13,... | 64 | lot2,... |
所以 possible_controls 将是所有匹配的控制批次的列表,count 是匹配的数量,combo 是处理批次加上选定的对照批次。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)