Stata 计算每个季度GDP的同比增长

Stata 计算每个季度GDP的同比增长,stata,Stata,我想统计每个季度GDP的同比增长率。基本上,我想计算:gdp_q1y1980-gdp_q1y1979/gdp_q1y1979 // create some silly example data clear set obs 10 gen time = _n format time %tq gen gdp = _n^2*100 // do the computation tsset time gen growth = S4.gdp / L4.gdp // admire the result li

我想统计每个季度GDP的同比增长率。基本上,我想计算:gdp_q1y1980-gdp_q1y1979/gdp_q1y1979

// create some silly example data
clear
set obs 10
gen time = _n
format time %tq
gen gdp = _n^2*100

// do the computation
tsset time
gen growth = S4.gdp / L4.gdp

// admire the result
list

有关更多信息,请参见。

我更喜欢@Maarten Buis的解决方案,但也知道您可以使用订阅:

运行帮助订阅以获取详细信息或

请注意,如果时间序列中存在间隙,则必须格外小心:

. clear all

. set more off

. 
. // create some silly example data
. set obs 15
obs was 0, now 15

. gen time = _n

. format time %tq

. gen gdp = _n^2*100

. 
. // create a gap deleting 1962q4
. drop in 11
(1 observation deleted)

. 
. // using -tsset-
. tsset time
        time variable:  time, 1960q2 to 1963q4, but with a gap
                delta:  1 quarter

. gen growth = S4.gdp / L4.gdp
(5 missing values generated)

. 
. // subscripting
. sort time

. gen growth2 = (gdp / gdp[_n-4]) - 1
(4 missing values generated)

. 
. list, separator(0)

     +--------------------------------------+
     |   time     gdp     growth    growth2 |
     |--------------------------------------|
  1. | 1960q2     100          .          . |
  2. | 1960q3     400          .          . |
  3. | 1960q4     900          .          . |
  4. | 1961q1    1600          .          . |
  5. | 1961q2    2500         24         24 |
  6. | 1961q3    3600          8          8 |
  7. | 1961q4    4900   4.444445   4.444445 |
  8. | 1962q1    6400          3          3 |
  9. | 1962q2    8100       2.24       2.24 |
 10. | 1962q3   10000   1.777778   1.777778 |
 11. | 1963q1   14400       1.25   1.938776 |
 12. | 1963q2   16900    1.08642   1.640625 |
 13. | 1963q3   19600        .96   1.419753 |
 14. | 1963q4   22500          .       1.25 |
     +--------------------------------------+

下标为变量growth2的解决方案的结果在1963q1缺口开始时就被弄乱了。我认为,选择tsset是一个很好的理由。

这是一个纯粹的stata问题,所以不需要R。对吗?
. clear all

. set more off

. 
. // create some silly example data
. set obs 15
obs was 0, now 15

. gen time = _n

. format time %tq

. gen gdp = _n^2*100

. 
. // create a gap deleting 1962q4
. drop in 11
(1 observation deleted)

. 
. // using -tsset-
. tsset time
        time variable:  time, 1960q2 to 1963q4, but with a gap
                delta:  1 quarter

. gen growth = S4.gdp / L4.gdp
(5 missing values generated)

. 
. // subscripting
. sort time

. gen growth2 = (gdp / gdp[_n-4]) - 1
(4 missing values generated)

. 
. list, separator(0)

     +--------------------------------------+
     |   time     gdp     growth    growth2 |
     |--------------------------------------|
  1. | 1960q2     100          .          . |
  2. | 1960q3     400          .          . |
  3. | 1960q4     900          .          . |
  4. | 1961q1    1600          .          . |
  5. | 1961q2    2500         24         24 |
  6. | 1961q3    3600          8          8 |
  7. | 1961q4    4900   4.444445   4.444445 |
  8. | 1962q1    6400          3          3 |
  9. | 1962q2    8100       2.24       2.24 |
 10. | 1962q3   10000   1.777778   1.777778 |
 11. | 1963q1   14400       1.25   1.938776 |
 12. | 1963q2   16900    1.08642   1.640625 |
 13. | 1963q3   19600        .96   1.419753 |
 14. | 1963q4   22500          .       1.25 |
     +--------------------------------------+