1

我想运行块引导程序,其中块是国家,并包括国家指标变量。我认为以下内容会起作用。

regress mvalue kstock i.country, vce(bootstrap, cluster(country))

但我收到以下错误。

. regress mvalue kstock i.country, vce(bootstrap, cluster(country))
(running regress on estimation sample)

Bootstrap replications (50)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxx    50
insufficient observations to compute bootstrap standard errors
no results will be saved
r(2000);

看来这应该可行。如果块引导程序为每个块选择相同的国家,那么它似乎应该放弃拦截。

我的错误编码还是概念性的?这是一些使用grunfeld数据的代码。

webuse grunfeld, clear
xtset, clear
generate country = int((company - 1) / 2) + 1
regress mvalue kstock i.country, vce(bootstrap, cluster(country))
4

1 回答 1

3

这里的问题不在于您的编码,而是概念上的。问题是您无法识别每个引导样本中每个回归中的每个系数。并非所有“国家”都包含在每个引导重复的数据集中。vce( , noisily)您可以使用子选项诊断发生了什么:

. regress mvalue kstock i.bscountry, vce(bootstrap, cluster(country) noisily)

由于在使用特定引导样本运行回归时缺少某些系数,因此会产生错误。在每个回归中,您可以看到由于共线性而省略了一些国家的虚拟变量。这应该是意料之中的,并且很有意义——如果没有绘制国家,那么对于引导样本中的所有观察值,国家虚拟变量可能 = 0!

如果你真的想估计国家虚拟变量的系数,如果 K 是国家的数量,你将不得不找到另一种方法,而不是使用 K 个集群进行引导。如果您不关心系数虚拟变量,您可以使用另一个命令来简单地吸收固定效应并仅报告其他自变量(例如,aregxtreg)的系数。思考正在发生的事情的一种方法是它类似于以下内容:

.bootstrap, cluster(country) idcluster(bscountry) noisily: regress mvalue kstock i.bscountry

通过该idcluster()选项,在引导样本中抽取的每个国家/地区都有自己的 ID 号。如果一个国家被画两次,那么就有两个假人。(两个假人的系数自然会变得相同或几乎相同。)但是,此输出中的系数完全没有意义,因为bscountry“2”将是不同自举迭代中的不同国家。由于您会忽略假人上的任何输出,因此您不妨使用类似aregor的模型,xtreg因为它们运行得更快。

尽管有许多应用程序使用集群引导可以正常工作,但这里的问题是在回归中包含集群虚拟变量。这一切都引出了这个练习是否有意义的问题。如果您试图估计国家虚拟变量的系数,那么肯定不会。否则,上面的解决方案可能没问题,但如果不知道你的研究问题就很难说。

于 2013-07-15T16:42:35.553 回答