楼主: 朔风和雪
2583 9

[编程问题求助] 被解释变量为0-1变量的双重差分模型(使用logit回归) [推广有奖]

  • 0关注
  • 0粉丝

高中生

57%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.1341
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
195 点
帖子
7
精华
0
在线时间
71 小时
注册时间
2023-3-7
最后登录
2025-11-26

楼主
朔风和雪 发表于 2023-12-9 23:02:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
y “是否就医” Outpatient(1是,0否)
treat "是否为贫困人口"
post "是否实施扶贫政策"
did=treat*did
X 协变量
i.year 时间固定效应
i.provcd 省份固定效应
  1. xi:logit Outpatient did treat postime X i.year i.provcd, vce(cluster provcd)
复制代码
通过看文献,知道有三种命令可以实现处理效应的表示:inteff、margins和predictnl,inteff和predictnl的结果相差0.01,而margins命令我还不会写代码。
  1. · inteff Outpatient treat postime did X
复制代码
  1. · margins postime,expression(1/(1+exp(-(predict(xb))))) at(treat = (0 1))
复制代码
  1. · predictnl phat = (1/(1+exp(-(_b[_cons]+_b[treat]+_b[postime]+_b[did]+_b[X]*X))))-(1/(1+exp(-(_b[_cons]+_b[treat]+_b[postime]+_b[X]*X)))), se(phat_se)
复制代码
其中,inteff未纳入固定效应;margins代码也不大对,结果也不理想(可能是处理组样本量太少所致);phat的表达式来自Puhani (2012)的推导结果。 phat推导结果 越做越糊涂,感觉哪个都不对,虽然论坛里有帖子说这个没什么好方法法解决。且初次发帖,运行结果还是不太好辨认。
但还是请各位大佬帮忙解答,批评指正,先行谢过,非常感激!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:双重差分模型 logit 0-1变量 双重差分 解释变量 stata、双重差分、DID stata代码求助

沙发
晏几道 发表于 2023-12-11 21:27:47
感谢分享

藤椅
oliyiyi 发表于 2023-12-12 09:35:44
  1. // 使用 inteff 命令计算处理效应
  2. inteff Outpatient treat postime did X

  3. // 使用 margins 命令计算边际效应
  4. margins treat, at(postime=(value1 value2 ...))

  5. // 使用 predictnl 命令估计处理效应
  6. predictnl phat = (1/(1+exp(-(_b[_cons]+_b[treat]+_b[postime]+_b[did]+_b[X]*X))))-(1/(1+exp(-(_b[_cons]+_b[treat]+_b[postime]+_b[X]*X)))), se(phat_se)
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
朔风和雪 + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
朔风和雪 发表于 2023-12-12 12:30:57
oliyiyi 发表于 2023-12-12 09:35
谢谢oliyiyi老师!
我还有个疑问就是,求交叉差的时候,应该先在组内分别求导,再在组间求导,即先对post,再对treat求导在用margins命令时,您写的代码是:
  1. margins treat, at(postime=(value1 value2 ...))
复制代码

报纸
朔风和雪 发表于 2023-12-12 12:30:58
oliyiyi 发表于 2023-12-12 09:35
谢谢oliyiyi老师!
我还有个疑问就是,求交叉差的时候,应该先在组内分别求导,再在组间求导,即先对post,再对treat求导在用margins命令时,您写的代码是:
  1. margins treat, at(postime=(value1 value2 ...))
复制代码

地板
朔风和雪 发表于 2023-12-12 12:41:20
oliyiyi 发表于 2023-12-12 09:35
谢谢oliyiyi老师!
我还有两个疑问一是,Logit模型求交互项边际效应应该是求Δ²P(Y=1)/ΔtreatΔpostime,用您写的代码就是直接对概率求导,所以不需要用expression多此一举嘛?
二是,在本文模型里先对treat求导和先对postime求导,不影响结果对嘛?
  1. margins treat, at(postime=(value1 value2 ...))
复制代码
超级谢谢您!

7
朔风和雪 发表于 2023-12-12 12:47:58
oliyiyi 发表于 2023-12-12 09:35
不好意思,莫名发了好多条回复,删不掉了,您看最后一条即可orz

8
白眉老夫子 在职认证  发表于 2023-12-12 13:18:59

感谢分享

9
oliyiyi 发表于 2023-12-13 11:15:30
确实多次一举了。
在Logit模型中,可以通过计算对treat和postime的交叉导数来获得这个交互项的边际效应。
至于先对treat求导还是先对postime求导的问题,一般情况下,求导的顺序不会影响最终结果。这是因为偏导数的计算是独立的,顺序不会改变最终结果。margins命令中使用了at选项,明确了在哪个值处计算边际效应。

10
朔风和雪 发表于 2023-12-13 22:21:22
oliyiyi 发表于 2023-12-13 11:15
确实多次一举了。
在Logit模型中,可以通过计算对treat和postime的交叉导数来获得这个交互项的边际效应。 ...
好的,超级谢谢您~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-7 08:48