【发布时间】:2012-04-20 21:55:37
【问题描述】:
如何使用gen 或egen 命令在Stata 中生成不同年份观测值之间的百分比变化?例如,我有 1990 年到 2010 年的观察结果,每个观察值都有不同的支出值,我试图生成一个新的观察值,其中包含 1990 年到 1991 年、1991 年到 1992 年等期间的百分比变化。
【问题讨论】:
标签: stata
如何使用gen 或egen 命令在Stata 中生成不同年份观测值之间的百分比变化?例如,我有 1990 年到 2010 年的观察结果,每个观察值都有不同的支出值,我试图生成一个新的观察值,其中包含 1990 年到 1991 年、1991 年到 1992 年等期间的百分比变化。
【问题讨论】:
标签: stata
// 这是另一个衡量增长的示例:
clear
set obs 100
gen year = _n + 1959
gen expenditure = _n^(1/3) + runiform()
line expenditure year, yti("Synthetic data example")
bys year: g expendituregrowth=100*(expenditure[_n]-expenditure[_n-1])/expenditure[_n-1]
// 还有:
gen expenditure_gr = (expenditure/expenditure[_n-1] - 1)*100 // growth rate for expenditure
gen expenditure_bl = 100*expenditure/expenditure[1] // baseline growth rate for expenditure; base 100 = 1960
line expenditure_gr year, yti("Growth rate")
line expenditure_bl year, yti("Growth rate (base 100 = 1960)")
// expenditure_gr 的计算是我认为你正在寻找的。p>
// 如果你的数据是良构的,使用带有时间序列的Stata,很容易得到增长率:
tsset year, delta(1)
cap drop expenditure_gr
gen expenditure_gr = D.expenditure / 100*L.expenditure
【讨论】:
exp_gr 相同的增长率,它应该是gen exp_gr = D.exp/L.exp*100。此外,exp 是一个绝对糟糕的变量名称:如果您忘记了 exp*(stuff1+stuff2) 中的乘号,您将花费一个小时来寻找这个错误(一旦有人注意到您的数字非常大)。
xtset 的数据集获取投影的正确方法是否是bys panel date: gen variable_gr = D.variable/L.variable*100?运行不带 bys 前缀的命令返回 not sorted 错误。
sort 作为单独的命令。