以下两个xtabond2
估算命令给出相同的估算结果:
webuse abdata, clear
gen wL3=l3.w
gen wL2=l2.w
xtabond2 n nL1 w yr* if wL3~=., gmm(w, lag(1 1)) iv(yr*) nolevel robust
keep if wL2~=.
xtabond2 n nL1 w yr*, gmm(w, lag(1 1)) iv(yr*) nolevel robust
而以下两个xtabond2
估算命令给出不同的估算结果(即使它们基于相同的样本并且等效地指定它们的仪器组):
webuse abdata, clear
gen wL3=l3.w
gen wL2=l2.w
xtabond2 n nL1 w yr* if wL3~=., gmm(w, lag(1 2)) iv(yr*) nolevel robust
keep if wL2~=.
xtabond2 n nL1 w yr*, gmm(w, lag(1 2)) iv(yr*) nolevel robust
在后一个例子中,xtabond2在第一次估算中报告了18种工具,在第二次估算中报告了17种工具。
[从检查仪器矩阵开始,xtabond2
似乎从内存中的所有数据构建仪器矩阵,而忽略了if
对依赖和独立变量的预估样本限制声明(即xtabond2
忽略if wL3~=.
)。]
我的问题是:有没有办法从
生成估算结果keep if wL2~=.
xtabond2 n nL1 w yr*, gmm(w, lag(1 2)) iv(yr*) nolevel robust
以上没有先放弃观察?是否有一种聪明的方法可以控制内存中数据滞后的数量,以便在不丢弃观察值的情况下获得相同结果的工具?
将主数据集子集N次以将xtabond2
应用于N个不同的数据子集(同时还限制构造仪器集的样本)似乎效率低下。
答案 0 :(得分:0)
放弃观察似乎是(目前)控制/限制进入仪器矩阵的观测的唯一方法。
Stata具有内置功能,可用于删除观察结果,然后恢复原始数据集。而不是做
drop if ...
xtabond2 ...
use ..., clear
可以改为做
preserve
xtabond2 ...
restore
有关详细信息,请参阅help preserve
。
请注意,在此过程之后恢复e(sample)
会很困难,因为restore
会将其删除。我发现的唯一建议是Richard Williams here
> I suppose if you really wanted/needed to keep e(sample) alive, you
> could create and save a new dataset before you did you restore, and
> then merge your original data set with the one that contained
> e(sample). Alternatively, I suppose it wouldn't be too hard to
> figure out the commands that would generate e(sample) if you didn't
> already have it.