全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4333 6
2009-03-31
<p>我现在有400个样本的20年的panel,出于研究目的,需要整合成一个4年的panel,样本每5年平均一次,从而形成一个400*4的新panel,请问在stata中应该如何实现呢?</p>
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-3-31 14:42:00

* https://bbs.pinggu.org/thread-437023-1-1.html
* 生成模拟数据 N=400,T=20
  clear
  *ssc install xtarsim, replace
  xtarsim y x eta, n(400) t(20) gamma(0) beta(0.8) rho(0.2) ///
                    one(corr 1) sn(9) seed(1234)
  tsset ivar tvar
  xtdes
* 5年一平均
  egen tt = seq(), from(1) to(4) block(5)
  foreach v of varlist y x{
     egen `v'_m = mean(`v'), by(tt)
  }
  keep *_m tt ivar
  duplicates drop
  tsset ivar tt
  xtdes

 

*-------------results----------------

. * https://bbs.pinggu.org/thread-437023-1-1.html
. * 生成模拟数据 N=400,T=20
.   clear
.   ssc install xtarsim, replace
.   xtarsim y x eta, n(400) t(20) gamma(0) beta(0.8) rho(0.2) ///
>                     one(corr 1) sn(9) seed(1234)
.   tsset ivar tvar
       panel variable:  ivar (strongly balanced)
        time variable:  tvar, 1 to 20
                delta:  1 unit
.   xtdes
    ivar:  1, 2, ..., 400                                    n =        400
    tvar:  1, 2, ..., 20                                     T =         20
           Delta(tvar) = 1 unit
           Span(tvar)  = 20 periods
           (ivar*tvar uniquely identifies each observation)
Distribution of T_i:   min      5%     25%       50%       75%     95%     max
                        20      20      20        20        20      20      20
     Freq.  Percent    Cum. |  Pattern
 ---------------------------+----------------------
      400    100.00  100.00 |  11111111111111111111
 ---------------------------+----------------------
      400    100.00         |  XXXXXXXXXXXXXXXXXXXX
. * 5年一平均
.   egen tt = seq(), from(1) to(4) block(5)
.   foreach v of varlist y x{
  2.      egen `v'_m = mean(`v'), by(tt)
  3.   }
.   keep *_m tt ivar
.   duplicates drop 
Duplicates in terms of all variables
(6400 observations deleted)
.   tsset ivar tt
       panel variable:  ivar (strongly balanced)
        time variable:  tt, 1 to 4
                delta:  1 unit
.   xtdes
    ivar:  1, 2, ..., 400                                    n =        400
      tt:  1, 2, ..., 4                                      T =          4
           Delta(tt) = 1 unit
           Span(tt)  = 4 periods
           (ivar*tt uniquely identifies each observation)
Distribution of T_i:   min      5%     25%       50%       75%     95%     max
                         4       4       4         4         4       4       4
     Freq.  Percent    Cum. |  Pattern
 ---------------------------+---------
      400    100.00  100.00 |  1111
 ---------------------------+---------
      400    100.00         |  XXXX

[em05]

[此贴子已经被作者于2009-3-31 14:46:31编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-3-31 15:11:00

在做GMM的时候经常用五年一平均。

有没有更简单的命令,看起来头晕

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-3-31 15:37:00

           
sort id year
g n=_n-0.1
replace n=int(n/5)
collapse (mean) id-xn, by(n)
drop
n

*假设原数据库中共有n+2个变量,其中:第一个变量是企业变量id,第二个变量是年份变量year,其余变量是x1-xn。共400个企业,每个企业20年。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-3-31 15:39:00
*补充:上述原数据库中,所有变量都是数值型。生成的新数据库中,年份变量year是求平均后的“平均年份”。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-3-31 22:24:00

谢谢两位斑竹,下午的时候,我已经自己摸索出来了,方法基本跟sungmoo的一样,利用collapse应该是最快捷的。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群