不允许因子变量时的交互变量(Stata)

时间:2015-11-04 09:06:56

标签: stata

我在Stata中运行回归,我想使用cluster2http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/se_programming.htm)。

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

例如:state##c.wind_speed##L.c.relative_humiditycluster2以及其他Stata包不允许将此类表达式包含为自变量。是否有一种富有成效的方法如何自己创建这么长的交互变量向量?

2 个答案:

答案 0 :(得分:1)

我相信Baum-Shaffer-Stillman可以通过双向聚类和交互来欺骗ivreg2

. 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
---------------------------------------------------------------------------------

答案 1 :(得分:0)

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

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

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

"其他Stata套餐&#34>无法发表具体评论。你暗示有同样的问题,除非它可能因同样的原因而出现。因子变量于2009年在Stata 11 (see here for documentation)中引入,较旧的程序不允许在没有修改的情况下允许它们。

一般来说,我会在Statalist上提出这样的问题。这个程序很可能已经被一些不同的程序所取代。

如果您在互联网上找到没有帮助文件的Stata程序,就像这里的情况一样,它通常表示该程序是 ad hoc 编写的,并且没有被维护。在这种情况下,显然该程序自Stata 11以来的6年内没有更新。

您也可以自己创建交互变量。我不认为有人写过一个非常通用的工具来实现自动化:在因子变量表示法的复杂替代中,没有任何意义(自2009年以来)。