如何准备数据集以在stata中使用mixlogit

时间:2015-05-05 17:01:25

标签: stata

我打算在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是个体标识符。

现在的问题是我没有对每个人都没有选择的药物进行观察。我只有实际选择的观察。我应该如何准备数据集,使其看起来像第一个描述的那样。

1 个答案:

答案 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