如何使用stata做辅助回归求大神指导可追加悬赏

如题所述

clear all
sysuse auto, clear
//最外层循环用于遍历被解释变量,如果被解释变量为数值型变量才可进行,否则遍历下一个变量
foreach i of varlist _all{
cap confirm numeric variable `i' //判断改变量是否为数值型变量的命令,如果为数值型变量,返回的_rc是0
if _rc == 0{
preserve //预保存
drop `i'
global z = ""
foreach j of varlist _all{ //内层循环生成一串解释变量的字符串,前提也是变量必须是数值型变量
cap confirm numeric variable `j'
if _rc == 0{
global z = "$z `j'" //把数值型变量一个个的加在后面
}
}
restore //恢复预保存的数据
qui reg `i' $z
global a_`i' = e(r2)
di "以`i'为被解释变量的回归的R-square为" $a_`i'
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-17
不一定,首先变量提示由于共线性被剔除有两种原因,一种是正常的,不用管,一种是不正常的,需要处理,不过总的来说无论你是否处理,它都不会进入回归(stata会自动忽略),要处理的都是你的模型假设。
正常的,就是说例如这样:我们假设我们分析的群体是51~80岁的,我们想把年龄分成三组,变量1是虚拟变量代表在50~60岁间(是=1,否=0),变量2是虚拟变量代表在61~70岁间,变量3是虚拟变量代表在71~80岁间。那么当你回归时加入这三个虚拟变量控制年龄的时候,因为这三个变量的和一定为1(共线性),所以系统会自动忽略其中一个,但是这个时候你不用在模型中删除那个被忽略的变量,因为这是正常的,这代表那个变量被自动选为基准组。我们在解释其他组的变量的系数上,也是解释为“相对于被忽略的那个基准组,这个变量所代表的组如何影响因变量,这个组是有平均比起基准组更多还是更少的因变量“。

不正常的,就是说明明不是分组的虚拟变量,但也有共线性。比如说可能是这样,你想看丈夫和妻子的年龄差,然后又希望控制丈夫和妻子的年龄,这时由于(年龄差=年龄相减)产生了共线性,这说明你的模型本身就设定失误,我们只需要控制丈夫的年龄就可以达到都控制的效果。
也可能是这样:你想看”是否退休“对因变量的影响,但是因为你的样本比较窄,比如是”20~50“岁的样本,导致所有人都没有退休,”是否退休“变量对所有人都是0(没退休),所以被忽略掉,这时就意味着你的样本不支持做你想要的模型,此时也只得删掉这个变量了。
相似回答