使用Stata进行面板估计-如何按数据子集进行

使用Stata进行面板估计-如何按数据子集进行,stata,Stata,我需要在OLS和固定效应面板模型上运行回归。因变量由一组变量排列。苏丹生命线行动如下: sysuse data, clear bysort group: reg depVar expVar1 expVar2 这是应该的。但是,我还没有成功地使用面板数据: sysuse data, clear xtset id year bysort group: xtreg depVar expVar1 expVar2, fe 但是,由于存在重复的观测值,因此在定义面板变量后,错误会终止该过程。这不是一个“

我需要在OLS和固定效应面板模型上运行回归。因变量由一组变量排列。苏丹生命线行动如下:

sysuse data, clear
bysort group: reg depVar expVar1 expVar2
这是应该的。但是,我还没有成功地使用面板数据:

sysuse data, clear
xtset id year
bysort group: xtreg depVar expVar1 expVar2, fe
但是,由于存在重复的观测值,因此在定义面板变量后,错误会终止该过程。这不是一个“真正的”错误,因为按组排序后不会有重复项

我知道我可以将数据重新格式化为宽格式,并为每个估算键入单独的行,但我想知道是否有其他更方便的方法来解决这个问题。

原则上它是有效的(请参见下面的代码):

问题似乎出在怀疑者身上。我从未遇到过这样的问题。但是,您可以运行两个单独的回归:i)保留数据,ii)从组x中删除观察值iii)运行回归iv)恢复数据并转至步骤i)。这应该会产生相同的结果,只要组是相互排斥的

webuse airacc, clear
xtset airline time, delta(1)
xtreg relsize pmi ait, fe
gen indicator = round(runiform())

preserve
drop if indic == 1
xtreg relsize pmi ait, fe
restore

preserve
drop if indic == 0 
xtreg relsize pmi ait, fe
restore

bys indic: xtreg relsize pmi ait, fe
原则上它可以工作(见下面的代码):

问题似乎出在怀疑者身上。我从未遇到过这样的问题。但是,您可以运行两个单独的回归:i)保留数据,ii)从组x中删除观察值iii)运行回归iv)恢复数据并转至步骤i)。这应该会产生相同的结果,只要组是相互排斥的

webuse airacc, clear
xtset airline time, delta(1)
xtreg relsize pmi ait, fe
gen indicator = round(runiform())

preserve
drop if indic == 1
xtreg relsize pmi ait, fe
restore

preserve
drop if indic == 0 
xtreg relsize pmi ait, fe
restore

bys indic: xtreg relsize pmi ait, fe

彼得:对不起,我的例子不好,谢谢你提供了一个更好的例子!然而,这并不是我想要的。在“我的数据”中,每个组元素的每个id年对显示一次,即,单独的表按行绑定在一起。您可以为非堆叠表创建一个新的分组变量,该表不会创建任何重复项。也许我需要使用
重塑
重新思考一下。您需要使用
dataex
提供一个示例。Antti:要理解您的数据结构对我来说有点困难。然而,我认为重塑数据会有所帮助……彼得:很抱歉我的例子不好,谢谢你提供了一个更好的例子!然而,这并不是我想要的。在“我的数据”中,每个组元素的每个id年对显示一次,即,单独的表按行绑定在一起。您可以为非堆叠表创建一个新的分组变量,该表不会创建任何重复项。也许我需要使用
重塑
重新思考一下。您需要使用
dataex
提供一个示例。Antti:要理解您的数据结构对我来说有点困难。然而,我认为重塑数据将有助于。。。