我想用Stata计算每个季度GDP的同比增长率。基本上,我想计算:(gdp_q1y1980-gdp_q1y1979)/ gdp_q1y1979。
答案 0 :(得分:2)
// 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
有关详细信息,请参阅here。
答案 1 :(得分:1)
我更喜欢@Maarten Buis的解决方案,但也知道你可以使用下载:
sort time
gen growth = (gdp / gdp[_n-4]) - 1
运行help subscripting
了解详情(或http://www.stata.com/help.cgi?subscripting)。
请注意,例如,如果您的时间序列存在差距,则必须格外小心:
. 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 |
+--------------------------------------+
一旦差距开始(1963q1),下标解决方案的结果(变量growth2
)就会搞砸。我认为,有理由更喜欢tsset
。