Science for Economics.

[Dữ liệu chuỗi thời gian] ĐỊNH DẠNG VÀ KHAI BÁO CHUỖI THỜI GIAN
Cover Image for [Dữ liệu chuỗi thời gian] ĐỊNH DẠNG VÀ KHAI BÁO CHUỖI THỜI GIAN
Mỹ Hiền
Mỹ Hiền
Ngày viết:
STATA

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.

Định dạng và khai báo chuỗi thời gian

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Định dạng (%t)

set obs 50
gen time = tq(2000q1) + _n-1
format %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:

gen month = ym(y,m)
format 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:

date (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
  • 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ố.

VD:

date("1/15/08","MDY",1999) = 15jan1908

date("1/15/08","MDY",2019) = 15jan2008

date("1/15/50","MDY",2000) = 15jan1950

date("1/15/00","MDY",2050) = 15jan2000

Thực hành trên stata:

* Đối với “date1

gen datevar = date(date1,"DMY",2008)
format datevar %td

* Đối với “date2

gen datevar = date(date2,"MDY",2008)
format datevar %td

* Đối với “date3

Tostring date3a=, gen (date3a)
gen datevar = date(date3a,"YMD")
format 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

gen day=day(date)
gen week = week(date)
gen month = month(date)
gen quar = quarter(date)
gen 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
  • gen monthly = mofd(date)
    format monthly %tm
  • tạo dữ liệu quý từ dữ liệu ngày
  • gen quarterly = qofd(date)
    format quarterly %tq
  • tạo dữ liệu năm từ dữ liệu theo ngày
    gen yearly = yofd(date)
    format 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ý:

gen quarterly =qofd(dofm(monthly))
format 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:

tsset 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é!

Comments:


    Nội dung khác.