我的代码发生了一件非常奇怪的事情。我有面板数据集,面板ID为 p_id ,我正在尝试使用panel_id创建另一个变量。我的代码是这样的,其中 p_id 是每个时间段内观察到的人的面板ID, marital_status , x 是我想要的变量创建。
bys p_id: gen count =_N
bys p_id: gen count1 =_n
bys p_id: gen x= marital_status if count1 ==1
但是当我这样做时
tab x
每次运行此代码时,我都会获得不同的行数(行总数不会更改)。数字非常密集,但我需要了解为什么会发生这种情况。
答案 0 :(得分:1)
虽然缺乏可重复的例子是不好的做法,但可以猜测发生了什么。第一行代码没有问题,但后两行与
具有相同的效果bys p_id: gen x = marital_status if _n == 1
在单词中,新变量包含来自每组观察中第一次观察的婚姻状态数据 ,用于不同的p_id
。但是p_id
上的排序没有说明具有相同p_id
的观测值的排序顺序,并且如果没有足够的约束,则组内排序顺序不可重现。所以第一次观察很容易就会有所不同(除非自然每组只有一个观察结果),你报告的结果。
具体地说,假设有p_id
42的3个观察值。那么这些观察的6个可能顺序中的任何一个与p_id
上的排序一致。等等。
据推测,每组的观察结果都有一些特别之处。您需要更多地了解您的数据以及您希望获得更全面的建议,但这个问题不是一个难题。