面板数据中的损耗 - Stata

Attrition in panel data - Stata

我正在根据2010-2013年(连续四年)的调查数据构建面板数据集。与家庭调查数据的通常情况一样,存在流失问题,即一些家庭年复一年地退出调查。我需要弄清楚这些家庭是否随机丢失。

我的想法是,如果 2010 年存在的家庭在 2011 年缺失(否则为 0),则在 2011 年提出一个等于 1 的虚拟变量,以此类推 2012 年、2013 年。然后我想 运行 这个虚拟人的 logit/probit 回归,我想在我的研究中控制一组协变量。家庭 ID 的变量是“hhid”,我当然有时间维度变量“年”。

有谁知道应该如何在 Stata 中正确编码?我知道这并不复杂,但我就是无法全神贯注地想出来....

您的问题是,您在 X 年未观察到的家庭与您在 X 年观察到的家庭相比是否存在差异。没有完美的方法来回答这个问题,因为根据定义,您没有观察那些家庭。

然而,您确实在第 0 年(在您的案例中为 2010 年)观察了研究中的所有家庭。正如您自己暗示的那样,您可以使用第 0 年的观察结果作为代理来回答这些家庭在第 X 年是否不同。我可以帮助您展示如何编写代码,但 Whosebug 不是讨论这个统计的合适论坛鉴于您的数据、数据的收集方式以及您打算使用的分析,有效。

编写此代码的一种方法是在 SSC 提供的名为 ietoolkit 的包中使用 iebaltab(披露,我写了该命令)。

您可以创建一个表示损耗的虚拟变量并使用 iebaltab,如下所示:iebaltab balancevars, grpvar(attrition) 其中 balancevars 是您要确保的家庭特征的变量列表它们在第 0 年相似。您可以使用选项 ftest 将测试包括在您建议的所有平衡变量中。

并不是说这个命令会产生统计数据,但是这是否有效由你来决定,平衡测试的有效性是有争议的。但这些争论并不是关于 Whosebug 所关注的编码。

这是一个示例,说明如何在面板数据中创建虚拟对象,然后将这些虚拟对象折叠到父对象 unit-of-observation 如果父对象 unit-of-observation 在任何时间段内为 1,则使虚拟对象为 1 .然后将父unit-of-observation级数据合并回面板数据。

* Example generated by -dataex-. For more info, type help dataex
clear
input byte hhid int year
1 2010
1 2011
1 2012
1 2013
2 2010
2 2011
2 2013
3 2010
3 2011
end

*Create a dummy for each year-hh level observation for each year
local year_dummies ""
forvalues year = 2010/2013 {
    gen dummy`year' = (year==`year')
    local year_dummies "`year_dummies' dummy`year'"
}

*Collapse the data set to hh level where the dummies is 1 if any year-hh level was 1
preserve
    collapse (max) `year_dummies' , by(hhid)
    tempfile year_dummy_hhlevel
    save `year_dummy_hhlevel'
restore

*Rename to not having to overwrite the first step
rename dummy???? org_dummy????

*Merge the hh level data back to the year-hh level 
*data merging the hh dummy to each year-hh observation
merge m:1 hhid using `year_dummy_hhlevel', nogen