【问题标题】:Generate percent change between annual observations in Stata?在Stata中产生年度观察之间的百分比变化?
【发布时间】:2012-04-20 21:55:37
【问题描述】:

如何使用genegen 命令在Stata 中生成不同年份观测值之间的百分比变化?例如,我有 1990 年到 2010 年的观察结果,每个观察值都有不同的支出值,我试图生成一个新的观察值,其中包含 1990 年到 1991 年、1991 年到 1992 年等期间的百分比变化。

【问题讨论】:

    标签: stata


    【解决方案1】:

    // 这是另一个衡量增长的示例:

    clear
    set obs 100
    gen year = _n + 1959
    gen expenditure = _n^(1/3) + runiform()
    line expenditure year, yti("Synthetic data example")
    

    //From Statalist:

    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 作为单独的命令。
    猜你喜欢
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多