【问题标题】:Fe and first difference in a regression table回归表中的 Fe 和一阶差分
【发布时间】:2014-09-06 16:13:49
【问题描述】:

我正在 Stata 中进行分析,我有很多不同的面板回归(内部、一阶差分和随机趋势),为了正确查看结果,我使用了 eststoesttab

我现在的问题是,要获得随机趋势的一阶差分和双差分,我使用d.varname 和d.d.varname。 然后,Stata 认为差异是新变量,并将它们放在自己的行中,这变得非常难以阅读。

有谁知道我如何获得一个回归表,其中 Stata 将 varname、d.varname 和 d.d.varname 视为同一个变量?

我的回归是这样的:

 foreach v in a aa aaa aaaa{
 qui eststo: xtreg `v' b b1 b2 b3 b4 b5 i.year, fe cluster(xy)
 qui eststo: xtreg `v' b b1 b2 b3 b4 b5 i.year if c>d, fe cluster(xy)
 qui eststo: reg d.`v' d.b d.b1 d.b2 d.b3 d.b4 d.b5 i.year, cluster(xy)
 qui eststo: reg d.`v' d.b d.b1 d.b2 d.b3 d.b4 d.b5 i.year if c>d, cluster(xy)
 qui eststo: reg d.d.`v' d.d.b d.d.b1 d.d.b2 d.d.b3 d.d.b4 d.d.b5 i.year, cluster(xy)
 qui eststo: reg d.d.`v' d.d.b d.d.b1 d.d.b2 d.d.b3 d.d.b4 d.d.b5 i.year if c>d, cluster(xy)
 esttab using output.tex, wide
 }

然后我在我的表中得到我的估计

 b
 b1
 b2
 b3
 b4
 b5
 d.b1
 d.d.b1
 d.b2
 d.d.b2
 and so on..

【问题讨论】:

  • eststo 命令实际上可以很容易地做到这一点。我添加一个如何处理该问题的示例: esttab,compress nogaps drop(monthdummy*) /// 指示("Time Effects = yeardummy*") /// rename( D.Pre1Q Pre1Q D2.Pre1Q Pre1Q D.Pre2Q Pre2Q D2.Pre2Q Pre2Q /// D.Pre3Q Pre3Q D2.Pre3Q Pre3Q ) /// b(%7,4f) se(%6.4f) /*stats(N ar2 )*/ scalars("N Observations" "N_clust Cities " "AvgTime 平均时间" "r2_a 调整后 (R^{2})" ) sfmt(%4,0f %4,0f %5,2f %5,4f) 星号(+ 0.1 * 0.05 ** 0.01 *** 0.001 ) ///

标签: regression panel stata


【解决方案1】:

这有点乱七八糟——最终它没有做任何花哨的事情,只是自动跨规范更改变量名。对于这样一个简单的问题,似乎代码太多了,但我不知道有更简单的方法来做到这一点。

***create dummy data
set seed 99
webuse xtsetxmpl, clear
foreach i in "" 1 2 3 4 5 {
    g b`i' = uniform()
    }
foreach i in a aa aaa aaaa c d {
    g `i'= y*uniform()
    }
*next two lines just so the differencing works
g xy = pid
replace tod = (tod-1609570800000)/(36*100000)
xtset pid tod
***end of data creation

cap program drop diff
program define  diff
syntax anything
cap drop *_adj *adjDV
if "`anything'" == "orig" {
foreach i in "" 1 2 3 4 5 {
    g b`i'_adj = b`i'
    }
foreach i in a aa aaa aaaa {
    g `i'_adjDV = `i'
    }
}
else {
foreach i in "" 1 2 3 4 5 {
    g b`i'_adj = `anything'b`i'
    }
foreach i in a aa aaa aaaa {
    g `i'_adjDV = `anything'`i'
    }
}
 end
 **************************************
 *run original regression (excluding year term not necessary to example)
 **************************************
 eststo clear
 foreach v in a aa aaa aaaa {
 diff orig
 eststo: xtreg `v'_adjDV *adj , fe cluster(xy)
 eststo: xtreg `v'_adjDV *adj  if c>d, fe cluster(xy)
 diff d.
 eststo: reg `v'_adjDV *adj , cluster(xy)
 eststo: reg `v'_adjDV *adj  if c>d, cluster(xy)
 diff d.d.
 eststo: reg `v'_adjDV *adj , cluster(xy)
 eststo: reg `v'_adjDV *adj  if c>d, cluster(xy)
 esttab _all, wide
 }

你是新来的,所以为了将来,试着发布一个 MWE(最小的工作示例)——这会让事情变得更快。您可以看到我在代码的第一部分中给出了如何执行此操作的示例。

【讨论】:

  • 郑重声明,除非您安装了eststoesttab,否则这个(好看的)代码将不起作用。
  • 谢谢 SOConnell,但是当我尝试使用我的真实数据时,我总是收到错误“b not found”(我将变量重命名为 b1 (b2...)),所以我没有完全改变你的代码。您知道会出现什么问题吗?
  • @Jacob 我认为您需要提供比b not found 更多的信息。至少描述错误之前的命令。如果错误发生在循环中或源于 SOConnell 的漂亮程序diff,请使用set trace on 来揭示隐藏代码。
【解决方案2】:

它实际上只使用 esttab 命令即可。一个例子:

esttab ,compress nogaps booktabs drop( _cons) ///
 indicate("State specific effects = var_dummy_*") ///
rename(    D.b b D2.b b D.b2 b2 D2.b b2 )   ///

重命名可以完成工作。其余部分包含在内以显示更多可能性。

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 2021-10-16
    • 1970-01-01
    • 2021-03-21
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2020-07-19
    相关资源
    最近更新 更多