messenger_logo
Liên hệ qua Messenger
SciEco

[Dữ liệu chuỗi thời gian] ĐỊNH DẠNG VÀ KHAI BÁO CHUỖI THỜI GIAN

MH
Mỹ Hiền
Ngày viết: 18/08/2023

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Đị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 đó:

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


Bài viết khác
Trong nghiên cứu thực nghiệm, việc thực hiện nhiều phép so sánh cặp cùng một lúc là vô cùng phổ biến. Tuy nhiên, nếu chúng ta chỉ sử dụng các kiểm định t thông thường mà không hiệu chỉnh, tỷ lệ sai số loại một trên toàn bộ họ kiểm định sẽ tăng lên rất nhanh. Khi đó, việc sử dụng các giá trị p hiệu chỉnh là bắt buộc để đảm bảo tính tin cậy của các kết luận thống kê. Bài viết này sẽ hướng dẫn cách xử lý vấn đề đa so sánh bằng gói lệnh emmeans trong ngôn ngữ R, đồng thời giải thích bản chất thống kê từ phân phối đơn biến đến đa biến. Thực Nghiệm Và Mô Hình Phân Tích Phương Sai Một Chiều Chúng ta sẽ bắt đầu với một bộ dữ liệu thực tế về khả năng diệt cỏ của ba hỗn hợp hóa chất so với nhóm đối chứng không xử lý trên cây cỏ dại thuộc họ cà trong ruộng cà chua. Biến phản hồi là khối lượng của cây cỏ dại trong mỗi chậu, và biến giải thích là các công thức xử lý cỏ.
Trong phân tích tài chính và quản trị rủi ro, việc mô phỏng dữ liệu đồng thời của nhiều tài sản mà vẫn giữ nguyên được cấu trúc phụ thuộc phức tạp là một thách thức lớn. Các phương pháp mô hình hóa truyền thống thường dựa vào giả định phân phối chuẩn, vốn dễ dàng thất bại khi đối mặt với dữ liệu thực tế có phân phối đuôi dày hoặc mối quan hệ phi tuyến. Để giải quyết vấn đề này, phương pháp R-vine copula nổi lên như một công cụ mạnh mẽ, cho phép chúng ta ghép nối các phân phối biên khác nhau thành một phân phối chung một cách linh hoạt. Bài viết này sẽ hướng dẫn cách sử dụng thư viện esgtoolkit trong ngôn ngữ R để xây dựng mô hình R-vine copula và tạo dữ liệu giả lập chất lượng cao. Tìm hiểu về R-vine copula và thư viện esgtoolkit Copula là một hàm toán học dùng để liên kết các phân phối biên của các biến ngẫu nhiên đơn lẻ nhằm tạo ra một phân phối đồng thời. Trong số các cấu trúc copula, vine copula phân rã phân phối đồng thời đa chiều thành các cặp copula hai chiều thông qua một cấu trúc dạng cây liên kết. Điều này giúp kiểm soát tốt các mối quan hệ phụ thuộc không đối xứng ở vùng đuôi, một hiện tượng cực kỳ phổ biến trong dữ liệu tài chính khi thị trường sụt giảm mạnh cùng một lúc. Thư viện esgtoolkit cung cấp một giao diện lập trình trực quan và tối ưu hóa để ước lượng các tham số của mô hình R-vine copula, đồng thời chạy các lượt mô phỏng thử nghiệm để tìm ra bộ dữ liệu giả lập khớp nhất với dữ liệu thực tế.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội