楼主: 一名博思僧
802 3

[回归分析求助] stata命令 分年份分省份计算参保率 [推广有奖]

  • 3关注
  • 0粉丝

硕士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0.0413
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1300 点
帖子
56
精华
0
在线时间
192 小时
注册时间
2020-5-11
最后登录
2026-1-29

楼主
一名博思僧 发表于 2022-11-11 18:09:55 |AI写论文
25论坛币
我想分年份和省份,计算每个样本所在省份的参保率(计算时不包括该样本家庭),如何用STATA实现呢?请教哈。比如


北京市的样本A


2010年 参保


2012年 不参保






北京市的样本B


2010年 不参保


2012年  参保






那么,在计算样本所在省份的参保率时,


北京市的样本A


2010年 参保率为 0


2012年 参保率为1






北京市的样本B


2010年 参保率为1


2012年 参保率为0

关键词:stata命令 Stata tata 分省份 北京市

沙发
但求毕业 发表于 2024-1-19 20:00:30
请问您解决了吗,我也遇到了这个问题

藤椅
差不多就 发表于 2024-3-22 22:34:18
你好,这个解决了么,俺也是

板凳
赵安豆 发表于 2024-12-25 16:05:37
为了实现你的需求,我们可以通过以下步骤在STATA中操作:

第一步:创建一个变量,该变量表示除当前家庭外的参保人数。这需要使用`egen`命令和`sum`函数(注意去除掉自己)。假设参保情况由变量`insurance_status`表示(1为参保,0为未参保),年份由`year`表示,省份由`province`表示。

```
bysort province year: egen ins_outside_sum = sum(insurance_status) if _n != _N & _n != 1
```

这一步中,`_n`是一个系统变量,表示当前观察值在按排序后的序列中的位置。当`_n == _N`时,说明是这个组(即年份和省份)里的最后一个观测值;而`_n == 1`则表示是第一个观测值。使用`if _n != _N & _n != 1`是防止在排序的开头或结尾位置上计算时发生错误。

然而,为了更准确地排除当前家庭,我们应修改命令如下:

```
gen id = _n // 创建一个序号变量
bysort province year: egen ins_outside_sum = sum(insurance_status) if id != _n
drop id
```

第二步:创建一个变量表示除当前家庭外的总人数。这可以通过类似的方式实现,但使用`count`函数。

```
bysort province year: egen total_count = count(_n)
bysort province year: egen total_outside_count = sum(1) if id != _n
drop total_count // 因为total_count包含了当前家庭,我们不再需要它。
```

第三步:计算参保率。这可以通过将`ins_outside_sum`除以`total_outside_count`来实现。

```
gen insurance_rate = ins_outside_sum / total_outside_count
```

这样你就得到了每个样本所在省份、年份的参保率,且在计算时已经排除了当前家庭的影响。

请注意,在实际操作中可能需要根据你的数据结构和变量命名进行相应的调整。特别是如果数据集非常大或有特殊排序需求,可能还需要进一步优化以上命令以提高效率。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 06:22