Khi thực hành với dữ liệu chuỗi thời gian sẽ có một số định dạng thời gian không thích hợp cho Stata. Vì vậy, chúng ta phải định dạng biến thời gian thích hợp. Trong bài viết này, SciEco cung cấp nội dung về định dạng và khai báo chuỗi thời gian trên Stata.
1. Tạo chuỗi thời gian bất kì
Trong Stata, khi muốn thực hiện các phép tính hoặc phân tích liên quan đến ngày và thời gian thì cần chuyển đổi dữ liệu thành các giá trị số nguyên dưới dạng %t (định dạng ngày và thời gian của Stata).
Một số dạng chuỗi thời gian trên Stata:
Thời gian | Ví dụ | Hàm-Stata | Định dạng |
date | 01jan2000 | td(day-month-year) | %td |
weekly date | 2000w1 | tw(year-week) | %tw |
monthly date | 2000m1 | tm(year-month) | %tm |
quarterly date | 2000q1 | tq(year-quarter) | %tq |
yearly date | 2000 | year | %ty |
Hướng dẫn cách tạo dữ liệu theo ngày trên Stata:
VD: đối với 50 quan sát dữ liệu hàng ngày bắt đầu từ năm 2000, có thể tạo bằng cách dựa vào Hàm-Stata và Định dạng (%t)
1set obs 50
2gen time = tq(2000q1) + _n-1
3format %tq time
Tương tự, có thể tự tạo chuỗi thời gian theo tuần, tháng, quý,..
Để xem các tùy chọn khác và để tìm hiểu thêm cách chúng hoạt động, có thể nhập: help dates and times
2. Tạo chuỗi thời gian từ các thành phần thời gian
Thời gian | Hàm-Stata |
date | td = mdy(M-D-Y) |
weekly date | tw = yw(Y-W) |
monthly date | tm = ym(Y-M) |
quarterly date | tq = yq(Y-Q) |
yearly date | ty = y(Y) |
VD: Tập dữ liệu có 2 biến số m (tháng) và y (năm), chuyển đổi sang dạng ngày Stata có thể hiểu được như sau:
1gen month = ym(y,m)
2format month %tm
3. Định dạng chuỗi thời gian
Giới thiệu về data: Các biến ngày tháng đang ở dữ liệu dạng chuỗi (string- màu đỏ) từ “1-Jan-98” đến “15-Jan-08” (hình dưới). Do đó, cần định dạng để Stata hiểu.
Trước hết, dùng các hàm chuyển đổi từ "string" sang "numeric" để chuyển chuỗi ký tự này thành một giá trị số nguyên phù hợp để định dạng chuỗi ngày tháng (%t). Với chuỗi kí tự "1-Jan-98" sử dụng hàm date()
.
Cấu trúc câu lệnh:
1date (s1, s2 [, Y])
Trong đó:
s1
- chuỗi thời gian.s2
- chuỗi định dạng cách thức mà s1 được biểu diễn (giúp Stata hiểu cách đọc s1). Bao gồm các kí tự sau: M(tháng), D(ngày) và [##]Y(năm).- VD: s1=
“11/15/91”
thì s2 =“MD19Y”
trả kết quả là:15nov1991
- VD: s1=
- Y - tùy chọn. Năm tối đa mà hàm trả về khi gặp năm hai chữ số trong s1. Nếu không cung cấp Y, hàm sẽ trả về giá trị thiếu (missing) khi gặp năm hai chữ số.
Ví dụ:
1date("1/15/08","MDY",1999) = 15jan1908
2date("1/15/08","MDY",2019) = 15jan2008
3date("1/15/50","MDY",2000) = 15jan1950
4date("1/15/00","MDY",2050) = 15jan2000
Thực hành trên stata:
Đối với “date1”
1gen datevar = date(date1,"DMY",2008)
2format datevar %td
Đối với “date2”
1gen datevar = date(date2,"MDY",2008)
2format datevar %td
Đối với “date3”
1tostring date3a=, gen (date3a)
2gen datevar = date(date3a,"YMD")
3format datevar %td
Tương tự:
Format | String-to-numeric conversion function |
%td | date(string,mask) |
%tw | weekly(string, mask) |
%tm | monthly(string, mask) |
%tq | quarterly(string, mask) |
%ty | yearly(string, mask) |
4. Trích xuất thành phần từ ngày và thời gian
Khi có một biến %t, chúng ta có thể sử dụng các hàm trích xuất để lấy các thành phần của biến đó. Ví dụ, các hàm sau đây thích hợp để sử dụng với các biến %td (date)
Function | Return |
year(date) | năm có 4 chữ số; vd: 1980, 2002,.. |
month(date) | tháng: 1, 2, . . . , 12 |
day(date) | ngày trong tháng 1, 2, . . . , 31 |
quarter(date) | qúy trong năm 1,2,3,4 |
week(date) | tuần trong năm 1, 2, . . . , 52 |
dow(date) | ngày của tuần 0, 1, . . . , 6; 0 = Sunday |
doy(date) | ngày của năm 1, 2, . . . , 366 |
VD: Biến date được định dạng như hình dưới, cần trích xuất thành các thánh phần của chuỗi thời gian
1gen day=day(date)
2gen week = week(date)
3gen month = month(date)
4gen quar = quarter(date)
5gen year=year(date)
5. Chuyển đổi dữ liệu
Chuyển đổi từ dữ liệu ngày - td thành:
From date to | |
weekly | tw = wofd(td) |
monthly | tm = mofd(td) |
quarterly | tq = qofd(td) |
yearly | ty = yofd(td) |
VD: Biến date đang ở dạng td
tạo dữ liệu tháng từ dữ liệu ngày
1gen monthly = mofd(date)
2format monthly %tm
tạo dữ liệu quý từ dữ liệu ngày
1gen quarterly = qofd(date)
2format quarterly %tq
tạo dữ liệu năm từ dữ liệu theo ngày
1gen yearly = yofd(date)
2format yearly %ty
Chuyển đổi từ .... về dữ liệu ngày-td (tương ứng ngày đầu tiên của tháng):
From | To - date |
weekly | td = dofw(tw) |
monthly | td = dofm(tw) |
quarterly | td = dofq(tq) |
yearly | td = dofy(ty) |
VD: Từ dữ liệu theo Tháng tạo dữ liệu theo Quý:
1gen quarterly =qofd(dofm(monthly))
2format quarterly %tq
6. Khai báo chuỗi dữ liệu
Khi có biến thời gian ở 'date format' - cần khai báo dữ liệu của mình dưới dạng chuỗi thời gian để sử dụng toán tử chuỗi thời gian. Trong Stata:
1tsset thời gian
Lệnh tsset thời gian, cho Stata biết rằng biến thời gian sẽ được xác định là biến đưa ra thời gian trên lịch, tất cả các đầu và độ trễ sau đó dựa trên thứ tự từ biến này.
Theo dõi Science for Economics để cập nhật thêm những bài viết tiếp theo nhé!