regression - 如何在全局宏中包含交互项以在 reghdfe 命令中使用?
问题描述
我想在社区贡献的 regdhdfe
命令中创建一个交互术语。
两个交互变量之一是连续变量并与全局变量一起使用。另一个变量是性别虚拟变量。
我的代码看起来像这样:
clear all
set obs 25000
local vlist v0 v1 v2 v3 v4 v5 v6 v7 v8 z4 z5 z6
foreach v of local vlist {
generate `v' = runiform()
}
rename v8 i_female
replace i_female=0 if i_female<0.5
replace i_female=1 if i_female>=0.5
foreach num of numlist 4 5 6 {
global varlist_`num' "v`num' z`num'"
}
foreach num of numlist 4 5 6 {
reghdfe v0 ${varlist_`num'} ${varlist_`num'}#i.i_female if v1<0.8, absorb(v7)
}
这将返回以下错误:
错误:有重复的变量:
r(198);
解决方案
在上面的代码中你想要什么和你指示 Stata 做什么是两件不同的事情。
Stata 抱怨有重复的变量,因为当宏展开时你没有得到v4 z4 v4*i_female z4*i_female
.
相反,变量v4
,v5
和v6
是重复的:
foreach num of numlist 4 5 6 {
global varlist_`num' "v`num' z`num'"
}
foreach num of numlist 4 5 6 {
display "v0 ${varlist_`num'} ${varlist_`num'}#i.i_female if v1<0.8, absorb(v7)"
}
v0 v4 z4 v4 z4#i.i_female if v1<0.8, absorb(v7)
v0 v5 z5 v5 z5#i.i_female if v1<0.8, absorb(v7)
v0 v6 z6 v6 z6#i.i_female if v1<0.8, absorb(v7)
为了获得所需的输出,您需要按如下方式修改代码:
foreach num of numlist 4 5 6 {
global varlist1_`num' "v`num' z`num'"
global varlist2_`num' "v`num'#i.i_female z`num'#i.i_female"
}
foreach num of numlist 4 5 6 {
display "v0 ${varlist1_`num'} ${varlist2_`num'} if v1<0.8, absorb(v7)"
}
v0 v4 z4 v4#i.i_female z4#i.i_female if v1<0.8, absorb(v7)
v0 v5 z5 v5#i.i_female z5#i.i_female if v1<0.8, absorb(v7)
v0 v6 z6 v6#i.i_female z6#i.i_female if v1<0.8, absorb(v7)
推荐阅读
- python-3.x - 当我在 Postman 上选择原始 json 时无法成功发布请求
- java - 在 Spring Boot 中调用分页 REST 请求
- c# - C# 程序可以在开发笔记本电脑上运行,但不能在另一台笔记本电脑上运行
- reactjs - 导致问题的异步操作
- excel - 创建适用于任何工作簿的自定义 Excel 功能区选项卡
- javascript - 转移到 TypeScript 后,Jest 测试不起作用
- docker - 码头工人群。每个节点只运行一次服务
- javascript - MongoDb - 使用 deleteOne 时我需要在第二个字段上建立索引吗
- html - 将高度设置为 100vh 在小屏幕设备中显示垂直滚动条
- java - 来自内部存储的 Android 图像共享不起作用