参考学术苑2018-11-21推文
我的F统计量去哪儿了?
用Stata做回归,右上角往往会报告F统计量的值,检验的是所有斜率项系数是否同时为0。有些时候,这个值会凭空消失,到底是怎么回事呢?F值消失的原因很多,下面用例子一一说明。
首先虚构一个数据,如下图所示:
情形一:就跑个OLS,用的还是默认的标准误,F值没了
这种情形的最可能原因:你的模型从根本上就错了。例如,我们运行:regy x1 x2 in 1/3,也即拿y对x1和x2做回归但只利用前三个观测值,结果一定是错的。此时,观测值数量是3,待估系数数量也是3(两个斜率项系数加一个常数项),F统计量的分母自由度是0!不仅得不到F值,连单个系数的标准误都得不到。解决方案:纠正模型的错误。
情形二:用默认标准误时好好的,用稳健标准误后F值就没了
这种情形的最可能原因:某个变量的取值太极端了。例如,我们运行:regy x1 x2,一切正常。如果运行:reg y x1 x2, r,F值就算不出来了,只是因为x1的取值比较极端——只有一个观测值取1,其他都是0。如果回归中控制了许多哑变量,很有可能某个哑变量就成了这种极端变量,进而影响F值的计算。解决方案:出现这种问题并不能说明你的模型错误。如果你非要得到F值,那就把这种极端变量变得不极端。例如,原来控制省份哑变量,现在控制得宽松一些(东中西区域变量),降低极端变量出现的可能。
情形三:默认和稳健标准误都没问题,用集群(Cluster)标准误时F值不见了
这种情形有两种最可能的原因,分别对应上面的两个情形:一、集群的数量太少,以至于少于待估系数的数量;二、某个变量在集群层面上取值太极端。针对第一个原因,运行regy x2 或 reg y x2, r 时都没问题,但当运行 reg y x2, vce(cl c1) 时,F值不见了。因为c1定义的集群数量只有两个,待估系数也是两个(一个x2的系数,一个常数项),这样F统计量的分母自由度又变成了0。针对第二个原因,运行 reg y x2, vce(cl c2) 时没有F值,但运行 reg y x2, vce(cl c3) 时,F值又出来了。变量c2和c2定义的集群数量都是3,自由度上没有问题。两者区别是:c2定义的集群中,x2只在集群1上取值非0,在集群2和3上取值都是0——也即x2的取值在集群层面上太极端了。相比之下,x2在c3定义的集群上取值就没那么极端:在集群1中也有非零的值,在集群2中也有非0的值。解决方案:同理,这种情形不能说明模型错误。如果非要得到F值,集聚数量就不能太少;如果太少,不仅自由度可能不够,还可能造成某自变量在集聚层面的取值过于极端。同时,自变量的取值波动要足够大,尽量避免取值极端的情况。
上述几大情形最为常见。当然,还有其他可能原因,完整的解释可参照Stata中help j_robustsingular。
|