我打算在stata中使用mixlogit命令。此命令具有如何准备数据的特定要求。下面给出一个例子
choice speed cost group id
0 5 3 1 1
1 8 4 1 1
0 6 3 1 1
0 3 2 2 1
0 2 2 2 1
1 5 4 2 1
0 6 4 2 1
背景是个人根据汽车特征选择汽车。选择是指示选择的二进制变量。速度,成本是特征。 Id表示人员标识符。
我有这样的数据集。
Drug Half_life Price ID
1 8 10 1
2 7 6 2
其中药物是所选药物的id,half_life和price是药物特征,ID是个体标识符。
现在的问题是我没有对每个人都没有选择的药物进行观察。我只有实际选择的观察。我应该如何准备数据集,使其看起来像第一个描述的那样。
答案 0 :(得分:0)
这样的事情可能有用,除非您的数据结构更复杂(价格因人而异,ID不是连续的):
clear
input Drug Half_life Price ID
1 8 10 1
2 7 6 2
end
gen choice = 1
xtset Drug ID
tsfill, full
xfill Half_life Price, i(Drug)
replace choice = 0 if missing(choice)
这会得到类似的东西:
Drug Half_life Price ID choice
1 8 10 1 1
1 8 10 2 0
2 7 6 1 0
2 7 6 2 1
另一种方法是制作药物数据集,并且"交叉"它与用户:
tempfile drugs
preserve
keep Drug Half_life Price
duplicates drop
save `drugs'
restore
keep Drug ID
rename Drug choice
cross using `drugs'
replace choice=0 if Drug!=choice
replace choice=1 if Drug==choice