我有大约200个假人,并且希望运行受约束的OLS回归,其中我强加假人的所有系数之和等于1.
一种选择是输入:
constraint define 1 dummy_1+dummy_2 +...+dummy_200=1
cnsreg y x_1 x_2 dummy_1-dummy_200, c(1)
...但是输入约束显然会非常痛苦。
有没有办法快速定义这么大的约束?矩阵形式非常快速和简单,但经过在线和Stata指南的大量阅读后,我不清楚如何以矩阵形式进行约束,如果它们甚至是可能的话。
答案 0 :(得分:1)
至少有两个方面,如何做到以及它是否会在任何统计意义上起作用。
如何做到这一点似乎比你担心更容易,因为困难的一点就是插入" +"变量名之间的符号,以及该字符串操作。像
这样的东西unab myvars : dummy_*
local myvars : subinstr local myvars " " "+", all
mac li
constraint 1 `myvars' = 1
应该让你入门。 macro list
是这样你可以看到你做了什么,特别是如果它不是你想要的。
它是否会在统计上对你起作用超出了本论坛的范围,但如果这是唯一的约束条件,它与各种负面和正面系数一致。也许你的问题的特殊功能使它成为一个自然约束,但我的直觉是这样的模型很难估计。
答案 1 :(得分:1)
我会采取完全不同的方法。当针对一组指示符变量尝试不同的编码方案时,通常会发生这种约束。如果是这种情况,那么我会使用Stata的factor variables,并结合margins with the contrast operators。