如何生成Stata中asclogit和nlogit所需的选择格式数据集?
转换后的数据集(适配Stata asclogit模型)
这里是按照你需求转换后的数据集,用Markdown表格呈现更清晰,同时保留了你示例里的分组分隔逻辑:
| 序号 | id | car | choice | sex | income |
|---|---|---|---|---|---|
| 1. | 1 | European | 1 | Male | 45000 |
| 2. | 1 | American | 0 | Male | 45000 |
| 3. | 1 | Japanese | 0 | Male | 45000 |
| ------ | ---- | ----------- | -------- | -------- | -------- |
| 4. | 2 | European | 0 | Female | 48000 |
| 5. | 2 | American | 0 | Female | 48000 |
| 6. | 2 | Japanese | 1 | Female | 48000 |
| ------ | ---- | ----------- | -------- | -------- | -------- |
| 7. | 3 | European | 0 | Male | 53000 |
| 8. | 3 | American | 1 | Male | 53000 |
| 9. | 3 | Japanese | 0 | Male | 53000 |
Stata自动生成该格式的简便方法
如果你不想手动转换,Stata里可以用几条命令批量完成,步骤如下:
- 先导入你的原始数据集(假设原始数据文件名为
original_data.dta):
use "original_data.dta", clear
- 为每个观测值生成3条重复记录,对应三种车型选项:
expand 3
- 为每条重复记录分配不同的车型标签:
bysort id: gen car = cond(_n==1, "European", cond(_n==2, "American", "Japanese"))
- 生成
choice变量,标记用户实际选择的车型为1,其他选项为0:
bysort id: gen choice = (car == car[1])
- 最后按
id排序,让数据结构更规整:
sort id
这样就能自动生成适配asclogit模型的数据集,比手动转换高效很多。
内容的提问来源于stack exchange,提问作者Espie Rather
相关产品推荐
相关产品推荐

