You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Stata面板数据人均GDP增长率变量创建语法错误修复咨询

解决Stata面板数据人均GDP增长率计算的问题

嘿,这个问题我熟!你之前的语法出错是因为误解了Stata里方括号[]的用法——gdppc[2009]是调用第2009个观测值,而不是年份为2009的观测值。你的数据每个县域最多只有2个观测(2005和2009年),所以下标2009完全超出范围,自然生成的变量全是空值啦。

给你几种靠谱的修正方法:

方法1:利用排序后的观测位置(简单直接)

因为你已经用bysort panel_county_id (year)按县域和年份升序排序了,每个县域组里第一个观测是2005年,第二个是2009年,直接用位置下标计算就行:

bysort panel_county_id (year) : gen gdppc_r_2009 = (gdppc[2] - gdppc[1])/gdppc[1]

如果想把增长率只保留在2009年的观测里,可以加个条件:

bysort panel_county_id (year) : gen gdppc_r_2009 = (gdppc[2] - gdppc[1])/gdppc[1] if year == 2009

方法2:通过匹配年份取值(更稳妥,适合存在缺失年份的情况)

如果担心有些县域的年份顺序不对,或者缺失某一年的数据,先把两年的人均GDP提取出来再计算:

// 提取2005年的人均GDP并填充到同县域的所有观测
bysort panel_county_id : gen gdppc_2005 = gdppc if year == 2005
bysort panel_county_id : replace gdppc_2005 = gdppc_2005[1]

// 提取2009年的人均GDP并填充到同县域的所有观测
bysort panel_county_id : gen gdppc_2009 = gdppc if year == 2009
bysort panel_county_id : replace gdppc_2009 = gdppc_2009[1]

// 计算增长率
gen gdppc_r_2009 = (gdppc_2009 - gdppc_2005)/gdppc_2005

方法3:直接在方括号里用年份条件(简洁写法)

Stata允许在方括号里用条件表达式来定位观测,在bysort组内,条件会返回对应年份的观测位置,直接计算:

bysort panel_county_id : gen gdppc_r_2009 = (gdppc[year==2009] - gdppc[year==2005])/gdppc[year==2005]

需要注意的是,如果某个县域只有2005或2009其中一年的数据,计算出的增长率会是缺失值,这是正常的,你可以根据需求用drop if missing(gdppc_r_2009)来过滤这类观测。

内容的提问来源于stack exchange,提问作者Asteroid098

火山引擎 最新活动