如何解决我如何在 R 中运行回归,其中每个处理批次都有不同的匹配对照批次?
我正在尝试运行 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 举报,一经查实,本站将立刻删除。