Stata中如何计算分年龄组婚姻率年度变化率并绘制趋势图
解决方案
1. 计算婚姻率年度变化率
你的代码问题出在括号位置错误,正确的变化率公式应为(本期值 - 上期值)/上期值,每个年龄组的第一年没有上期数据,会自动生成缺失值,这是合理的。
方法一:手动修正公式
直接调整括号位置,重新生成变量:
bysort age (year): gen marriage_growth = (prop.married - prop.married[_n-1]) / prop.married[_n-1]
如果需要将变化率转为百分比,乘以100即可:
bysort age (year): gen marriage_growth_pct = 100 * (prop.married - prop.married[_n-1]) / prop.married[_n-1]
方法二:用Stata内置growth命令
Stata有专门计算增长率的命令,写法更简洁:
bysort age (year): gen marriage_growth = growth(prop.married)
该命令会自动计算(x_t / x_{t-1}) - 1,和手动公式结果一致,同样第一年为缺失值。
2. 绘制各年龄组折线图
用line命令即可实现分组折线图,x轴为年份,y轴为变化率,按年龄组区分线条:
分图展示各年龄组趋势
line marriage_growth year, by(age) /// 每个年龄组单独生成一幅图 title("婚姻率年度变化率趋势") /// 总标题 ytitle("年度变化率") /// y轴标题 xtitle("年份") /// x轴标题 legend(off) /// 按组分开后无需图例
同图对比所有年龄组趋势
line marriage_growth year, by(, title("婚姻率年度变化率趋势")) /// 统一总标题 ytitle("年度变化率") xtitle("年份") legend(label(1 "27-31") label(2 "32-36") label(3 "37-41") label(4 "42-45") label(5 "X-X")) /// 根据实际年龄组修改标签
如果想绘制婚姻率本身的时间趋势(而非变化率),把代码中的marriage_growth替换为prop.married即可。
内容的提问来源于stack exchange,提问作者LawrenceBern
相关产品推荐
相关产品推荐

