Stata:生成一个循环将回归输出保存为新变量



我有微观数据,我正在对行业假人的工资进行回归。

我的回归输出包括每个行业的系数,我想将其保存为一个名为wd(工资差异)的新变量。

下面的代码举例说明了我想做的事情,但实际上我有数百个行业和近30年的时间。

我怎样才能使一个循环有效地做到这一点呢?

reg lnwage i.industry if year == 2002
gen wd = 0
replace wd = 0 if industry==1 & year==2002
replace wd = _b[2.industry] if industry==2 & year==2002
replace wd = _b[3.industry] if industry==3 & year==2002
replace wd = _b[4.industry] if industry==4 & year==2002
replace wd = _b[5.industry] if industry==5 & year==2002
replace wd = _b[6.industry] if industry==6 & year==2002
replace wd = _b[7.industry] if industry==7 & year==2002
replace wd = _b[8.industry] if industry==8 & year==2002
replace wd = _b[9.industry] if industry==9 & year==2002
replace wd = _b[10.industry] if industry==10 & year==2002
replace wd = _b[11.industry] if industry==11 & year==2002
replace wd = _b[12.industry] if industry==12 & year==2002
replace wd = _b[13.industry] if industry==13 & year==2002
replace wd = _b[14.industry] if industry==14 & year==2002
replace wd = _b[15.industry] if industry==15 & year==2002

最有效的循环是根本不循环。

考虑这个例子。对于只有一个因素变量的回归,predict几乎做了所有你想要的。

. sysuse auto, clear
(1978 Automobile Data)
. regress price i.rep78
Source |       SS           df       MS      Number of obs   =        69
-------------+----------------------------------   F(4, 64)        =      0.24
Model |  8360542.63         4  2090135.66   Prob > F        =    0.9174
Residual |   568436416        64     8881819   R-squared       =    0.0145
-------------+----------------------------------   Adj R-squared   =   -0.0471
Total |   576796959        68  8482308.22   Root MSE        =    2980.2
------------------------------------------------------------------------------
price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
rep78 |
2  |   1403.125   2356.085     0.60   0.554    -3303.696    6109.946
3  |   1864.733   2176.458     0.86   0.395    -2483.242    6212.708
4  |       1507   2221.338     0.68   0.500    -2930.633    5944.633
5  |     1348.5   2290.927     0.59   0.558    -3228.153    5925.153
|
_cons |     4564.5   2107.347     2.17   0.034     354.5913    8774.409
------------------------------------------------------------------------------
. predict foo
(option xb assumed; fitted values)
(5 missing values generated)
. tabdisp rep78, c(foo)
-------------------------
Repair    |
Record    |
1978      | Fitted values
----------+--------------
1 |        4564.5
2 |      5967.625
3 |      6429.233
4 |        6071.5
5 |          5913
. |              
-------------------------

有多种处理方法,一种是直接减去截距,另一种是在

上做一些变化。
. egen reference = mean(cond(rep78 == 1, foo, .))
. replace foo  = foo  - reference
(69 real changes made)
. tabdisp rep78, c(foo)

按年循环确实意味着按年循环,但请参阅Statalist的帖子,了解许多直接这样做的方法。

相关内容

  • 没有找到相关文章

最新更新