楼主: ewfwedwd
7221 0

[其他] 工具变量乘以年份虚拟变量如何实现 [推广有奖]

  • 0关注
  • 1粉丝

svip1

已卖:423份资源

学科带头人

10%

还不是VIP/贵宾

-

威望
0
论坛币
1313 个
通用积分
456.6953
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
12600 点
帖子
903
精华
0
在线时间
220 小时
注册时间
2022-11-18
最后登录
2026-1-30

楼主
ewfwedwd 发表于 2025-8-5 20:15:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

Stata 里把工具变量 IV × 年份虚拟变量变成一组随时间变化的工具变量,只需三步即可:生成年份虚拟 循环或 forvalues 批量交互 2SLS 里一次性调用。下面给出完整模板,可直接复制使用。





场景示例

截面 IV:城市地形起伏度 terrain(不随时间变)

面板数据city-year 维度

目标:为地形 × 年份交互项生成 2000-2020 21 个工具变量





生成年份虚拟变量

stata


tab year, gen(dyear)     // 自动生成 dyear1, dyear2, …





批量生成交互工具变量(两种写法)


写法 A:循环生成(最直观)

stata


// 假设年份范围 2000-2020forvalues y = 2000/2020 {

    gen iv_`y' = terrain * (year == `y')}


写法 B:一行到位(因子变量交互)

stata


// 生成 dyear#c.terrain 交互组,变量名形如 c.terrain#2000.yearfvset base none year* 下面用因子变量写法即可,无需手动批量 gen





2SLS / GMM 中调用

传统 ivreg2

stata


ivreg2 y controls (x = iv_2000-iv_2020), cluster(city)


因子变量写法(更简洁)

stata


ivreg2 y controls (x = c.terrain#i.year), cluster(city)

解释:Stata 会把 c.terrain#i.year 自动展开成 terrain×year 21 个交互项,并全部视为工具变量。





检查工具变量个数 & 过度识别

stata


estat firststage   // 查看第一阶段 F estat overid       // Hansen J 检验





一行总结

tab year, gen(dyear) 生成年份哑元,再用 gen iv_y' = IV * dyearc.IV#i.year即可批量得到 **随时间变化的工具变量**,随后直接喂给ivreg2/xtivreg2`,无需额外循环。

二维码

扫码加我 拉你入群

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

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

关键词:如何实现 虚拟变量 工具变量 forvalues Controls

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

本版微信群
扫码
拉您进交流群
GMT+8, 2026-1-31 00:45