全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
803 3
2022-11-11
悬赏 25 个论坛币 未解决
我想分年份和省份,计算每个样本所在省份的参保率(计算时不包括该样本家庭),如何用STATA实现呢?请教哈。比如


北京市的样本A


2010年 参保


2012年 不参保






北京市的样本B


2010年 不参保


2012年  参保






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


北京市的样本A


2010年 参保率为 0


2012年 参保率为1






北京市的样本B


2010年 参保率为1


2012年 参保率为0

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
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学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群