2015-11-04 96 views
0

我正在Stata中运行一个我希望使用cluster2http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/se_programming.htm)的回归。因子变量不被允许时的相互作用变量(Stata)

我遇到以下问题。 Stata报告factor variables and time-series operators not allowed。我正在使用一个大型控件矢量,广泛应用Stata提供的用于交互的方法。

例如:state##c.wind_speed##L.c.relative_humiditycluster2以及其他Stata包不允许包含这些表达式作为独立变量。如何自己创建如此长的交互变量向量是否有效?

回答

1

我相信,一个可以欺骗通过鲍姆 - 谢弗 - 斯蒂尔曼ivreg2投入运行OLS具有双向集聚和互动正是如此:

. webuse nlswork 
(National Longitudinal Survey. Young Women 14-26 years of age in 1968) 

. ivreg2 ln_w grade c.age##c.ttl_exp tenure, cluster(idcode year) 

OLS estimation 
-------------- 

Estimates efficient for homoskedasticity only 
Statistics robust to heteroskedasticity and clustering on idcode and year 

Number of clusters (idcode) =  4697    Number of obs = 28099 
Number of clusters (year) =   15    F( 5, 14) = 674.29 
                 Prob > F  = 0.0000 
Total (centered) SS  = 6414.823933    Centered R2 = 0.3206 
Total (uncentered) SS = 85448.21266    Uncentered R2 = 0.9490 
Residual SS    = 4357.997339    Root MSE  = .3938 

--------------------------------------------------------------------------------- 
       |    Robust 
     ln_wage |  Coef. Std. Err.  z P>|z|  [95% Conf. Interval] 
----------------+---------------------------------------------------------------- 
      grade | .0734785 .002644 27.79 0.000  .0682964 .0786606 
      age | -.0005405 .002259 -0.24 0.811 -.0049681 .0038871 
     ttl_exp | .0656393 .0068499  9.58 0.000  .0522138 .0790648 
       | 
c.age#c.ttl_exp | -.0010539 .0002217 -4.75 0.000 -.0014885 -.0006194 
       | 
     tenure | .0197137 .0029555  6.67 0.000  .013921 .0255064 
      _cons | .5165052 .0529343  9.76 0.000  .4127559 .6202544 
--------------------------------------------------------------------------------- 
Included instruments: grade age ttl_exp c.age#c.ttl_exp tenure 
------------------------------------------------------------------------------ 

只是可以肯定比较,为OLS系数:

. reg ln_w grade c.age##c.ttl_exp tenure 

     Source |  SS   df  MS  Number of obs = 28,099 
-------------+---------------------------------- F(5, 28093)  = 2651.79 
     Model | 2056.82659   5 411.365319 Prob > F  = 0.0000 
    Residual | 4357.99734 28,093 .155127517 R-squared  = 0.3206 
-------------+---------------------------------- Adj R-squared = 0.3205 
     Total | 6414.82393 28,098 .228301798 Root MSE  = .39386 

--------------------------------------------------------------------------------- 
     ln_wage |  Coef. Std. Err.  t P>|t|  [95% Conf. Interval] 
----------------+---------------------------------------------------------------- 
      grade | .0734785 .0010414 70.55 0.000  .0714373 .0755198 
      age | -.0005405 .000663 -0.82 0.415 -.0018401 .0007591 
     ttl_exp | .0656393 .0030809 21.31 0.000  .0596007 .0716779 
       | 
c.age#c.ttl_exp | -.0010539 .0000856 -12.32 0.000 -.0012216 -.0008862 
       | 
     tenure | .0197137 .0008568 23.01 0.000  .0180344  .021393 
      _cons | .5165052 .0206744 24.98 0.000  .4759823  .557028 
--------------------------------------------------------------------------------- 
0

您不包含可验证的示例。有关重要建议请参阅https://stackoverflow.com/help/mcve

然而,乍一看,问题是cluster2是2006/2007年编写的旧式程序,其syntax声明不允许使用因子变量。

你可以尝试黑客程序的克隆来解决这个问题;我不知道这是否足够。

对于“其他Stata软件包”,您可能会遇到相同的问题,但可能出于同样的原因,不可能有任何具体的评论。在2009年Stata 11 (see here for documentation)中引入了因子变量,而较老的程序将不允许它们未经修改。

一般来说,我会问这样的问题关于Statalist。这个计划很有可能已被一些不同的计划所取代。

如果你在网上找到没有帮助文件的Stata程序,在这里看起来就是这种情况,它通常是一个指示程序写入ad hoc并且不被维护。在这种情况下,很明显该程序在Stata 11以后的6年内还没有更新。

您也可以像您暗示的那样,自己创建交互变量。我不认为有人写过一个真正通用的工具来实现这一点:自2009年以来,没有必要采用复杂的因子变量符号替代方法。