2013-12-17 293 views
1

我有一组面板数据,但并非所有人都存在于所有时段。我看到当我运行我的xtreg时,每组有1-4个观察值,平均值为1.9。我只想包括那些有4个观察值的那些。有什么办法可以轻松做到这一点吗?仅使用Stata在面板回归中包括完整的组

回答

2

我知道你只想在回归中包含那些恰好有4个观察值的组。如果是这种情况,那么一种解决方案是计数每组观测值的数量和条件使用if回归:

clear all 
set more off 

webuse nlswork 
xtset idcode 

list idcode year in 1/50, sepby(idcode) 

bysort idcode: gen counter = _N 

xtreg ln_w grade age c.age#c.age ttl_exp c.ttl_exp#c.ttl_exp tenure /// 
    c.tenure#c.tenure 2.race not_smsa south if counter == 12, be 

在这个例子中回归调节为基团与12个观察。该xtreg命令提供(除其他事项外):

观测数= 1881

组数= 158

,你可以与运行回归没有if的结果比较:

OBS总数= 28091

组数= 4697

正如评论说@NickCox,如果你不介意丢失的意见,你可以dropkeep(UN)所需的组:

bysort idcode: drop if _N != 4 

bysort idcode: keep if _N == 4 

后跟无条件xtreg(ie没有if)。

请注意,两种方法都会计算错误,所以您可能需要对此进行解释。

另一方面,您可能想要考虑为什么要在分析中丢弃该数据。

+1

单线是为了避免划伤或“保留”那些“掉落”面板。在最简单的情况下,这将会像'bysort panelid:keep if _N == 4'。缺少值需要额外的注意和额外的代码。 –