如何准备数据集以在stata中使用mixlogit
我计划在stata中使用mixlogit命令。该命令对如何准备数据有特定要求。下面给出了一个例子如何准备数据集以在stata中使用mixlogit,stata,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
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
背景是个人根据汽车特征选择汽车。Choice是一个表示选择的二进制变量。速度、成本是其特点。Id表示个人标识符
我有一个这样的数据集
Drug Half_life Price ID
1 8 10 1
2 7 6 2
其中,药物是所选药物的id,半衰期和价格是药物特征,id是个体标识符
现在的问题是我没有观察到每个人都没有选择的药物。我只有实际选择的观察结果。我应该如何准备数据集,使其看起来像第一个描述的数据集 除非您的数据具有更复杂的结构(价格因人而异,ID不是按顺序排列的),否则类似的方法可能有效: 这将使您获得以下信息:
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
我有一个更复杂的数据结构。首先,它是一个面板。第二,每种药物的价格因人而异。如果您不知道如何修改我的代码,为什么不在问题中添加一个更现实的数据示例?另外,给出特定数据示例所需的输出。我正在尝试修改代码。小组不是问题。显然,id不连续是个问题。需要各种各样的假设来给出解决方案。例如,如果某个人没有购买,并且价格因人而异,您如何知道他所报的价格?时间变量看起来像什么?面板是否平衡?如果你的ID有很多漏洞,那么使用第二种方法可能是最简单的。我同意。这就是为什么很难给出问题中的所有细节。我正在努力。当我弄清楚做这件事的必要步骤和需要的假设时,我会编辑这些问题。谢谢你的建议。
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