egen 的 seq() 函数出现故障?
Glitch in the seq() function of egen?
当我尝试在 Stata 中设置每月动态面板数据时:
clear all
drop _all
cls
scalar mnpe = 3
scalar cssize = 6
scalar ldataset = mnpe * cssize
set obs `=ldataset'
//Define variables for the Timewindow to be analized
scalar tstart = 480 //From: 2000/January
scalar tend = `=tstart' + `=cssize' //To : 2000/June
//Generate id and time for the Dynamic Panel
egen id = seq(), block(`=cssize')
egen time = seq(), from(`=tstart') to(`=tend')
format %tm time //Period definition tm: monthly
//Declare THE Dynamic Panel
tsset id time, monthly //Period definition : monthly
//Generate endogenous & exogenous variables
gen y = rnormal(5,1)
gen x1 = rnormal(10,1)
//List them up, by id
list, sepby(id)
xtline x1, tlabel(#3) overlay
我遇到了以下缺失的时间数据:
+-----------------------------------+
| id time y x1 |
|-----------------------------------|
1. | 1 2000m1 3.821689 10.56352 |
2. | 1 2000m2 4.572973 12.12826 |
3. | 1 2000m3 5.798653 8.558586 |
4. | 1 2000m4 8.021777 12.33319 |
5. | 1 2000m5 3.917288 9.168543 |
6. | 1 2000m6 4.780022 10.94 |
|-----------------------------------|
7. | 2 2000m1 4.70402 9.462132 |
8. | 2 2000m2 4.164953 11.23561 |
9. | 2 2000m3 7.09228 10.03154 |
10. | 2 2000m4 4.429367 10.36254 |
11. | 2 2000m5 3.171889 9.664372 |
12. | 2 2000m7 4.455237 10.33883 |
|-----------------------------------|
13. | 3 2000m1 3.643499 12.20954 |
14. | 3 2000m2 4.201683 9.507583 |
15. | 3 2000m3 4.809181 11.44474 |
16. | 3 2000m4 5.51936 10.25571 |
17. | 3 2000m6 5.279757 9.676065 |
18. | 3 2000m7 5.379889 11.40392 |
+-----------------------------------+
如您所见,缺少月份。不确定到底发生了什么,但我不认为是夏令时造成的差异。
没有故障 - 标量 tend
中的值是错误的。
你需要从中减去1
:
clear
scalar mnpe = 3
scalar cssize = 6
scalar ldataset = mnpe * cssize
set obs `=ldataset'
scalar tstart = 480
scalar tend = `=tstart' + `=cssize' - 1
egen id = seq(), block(6)
egen time = seq(), from(`=tstart') to(`=tend')
format %tm time
这会产生所需的结果:
list, sepby(id)
+-------------+
| id time |
|-------------|
1. | 1 2000m1 |
2. | 1 2000m2 |
3. | 1 2000m3 |
4. | 1 2000m4 |
5. | 1 2000m5 |
6. | 1 2000m6 |
|-------------|
7. | 2 2000m1 |
8. | 2 2000m2 |
9. | 2 2000m3 |
10. | 2 2000m4 |
11. | 2 2000m5 |
12. | 2 2000m6 |
|-------------|
13. | 3 2000m1 |
14. | 3 2000m2 |
15. | 3 2000m3 |
16. | 3 2000m4 |
17. | 3 2000m5 |
18. | 3 2000m6 |
+-------------+
当我尝试在 Stata 中设置每月动态面板数据时:
clear all
drop _all
cls
scalar mnpe = 3
scalar cssize = 6
scalar ldataset = mnpe * cssize
set obs `=ldataset'
//Define variables for the Timewindow to be analized
scalar tstart = 480 //From: 2000/January
scalar tend = `=tstart' + `=cssize' //To : 2000/June
//Generate id and time for the Dynamic Panel
egen id = seq(), block(`=cssize')
egen time = seq(), from(`=tstart') to(`=tend')
format %tm time //Period definition tm: monthly
//Declare THE Dynamic Panel
tsset id time, monthly //Period definition : monthly
//Generate endogenous & exogenous variables
gen y = rnormal(5,1)
gen x1 = rnormal(10,1)
//List them up, by id
list, sepby(id)
xtline x1, tlabel(#3) overlay
我遇到了以下缺失的时间数据:
+-----------------------------------+
| id time y x1 |
|-----------------------------------|
1. | 1 2000m1 3.821689 10.56352 |
2. | 1 2000m2 4.572973 12.12826 |
3. | 1 2000m3 5.798653 8.558586 |
4. | 1 2000m4 8.021777 12.33319 |
5. | 1 2000m5 3.917288 9.168543 |
6. | 1 2000m6 4.780022 10.94 |
|-----------------------------------|
7. | 2 2000m1 4.70402 9.462132 |
8. | 2 2000m2 4.164953 11.23561 |
9. | 2 2000m3 7.09228 10.03154 |
10. | 2 2000m4 4.429367 10.36254 |
11. | 2 2000m5 3.171889 9.664372 |
12. | 2 2000m7 4.455237 10.33883 |
|-----------------------------------|
13. | 3 2000m1 3.643499 12.20954 |
14. | 3 2000m2 4.201683 9.507583 |
15. | 3 2000m3 4.809181 11.44474 |
16. | 3 2000m4 5.51936 10.25571 |
17. | 3 2000m6 5.279757 9.676065 |
18. | 3 2000m7 5.379889 11.40392 |
+-----------------------------------+
如您所见,缺少月份。不确定到底发生了什么,但我不认为是夏令时造成的差异。
没有故障 - 标量 tend
中的值是错误的。
你需要从中减去1
:
clear
scalar mnpe = 3
scalar cssize = 6
scalar ldataset = mnpe * cssize
set obs `=ldataset'
scalar tstart = 480
scalar tend = `=tstart' + `=cssize' - 1
egen id = seq(), block(6)
egen time = seq(), from(`=tstart') to(`=tend')
format %tm time
这会产生所需的结果:
list, sepby(id)
+-------------+
| id time |
|-------------|
1. | 1 2000m1 |
2. | 1 2000m2 |
3. | 1 2000m3 |
4. | 1 2000m4 |
5. | 1 2000m5 |
6. | 1 2000m6 |
|-------------|
7. | 2 2000m1 |
8. | 2 2000m2 |
9. | 2 2000m3 |
10. | 2 2000m4 |
11. | 2 2000m5 |
12. | 2 2000m6 |
|-------------|
13. | 3 2000m1 |
14. | 3 2000m2 |
15. | 3 2000m3 |
16. | 3 2000m4 |
17. | 3 2000m5 |
18. | 3 2000m6 |
+-------------+