Phân tích dãy số thời gian (Time series analysis) là gì?
Phân tích dãy số thời gian trong giờ đồng hồ Anh là Time series analysis. Phân tích dãy số thời gian có cách gọi khác là phân tích chuỗi thời gian.
Bạn đang xem: Phân tích dữ liệu chuỗi thời gian (Time Series Data Analytics)
Phân tích hàng số thời hạn là phương pháp phân tích số liệu thống kê lại về các quá trình đã diễn ra, được biên chép theo những khoảng thời gian tiếp liền nhau với mục tiêu sử dụng kinh sát hoạch được trong thừa khứ để tham dự báo thực trạng sẽ xảy ra về sau bất định. Như vậy, tin tức dưới dạng hàng số thời gian hoàn toàn có thể phục vụ mang đến các mục tiêu dự báo.

Ví dụ
Hình sau đây trình bày một hàng số thời hạn điển hình. Chúng ta có thể chia ra những dịch chuyển trong dãy số thời gian thành 4 mô hình biến thiên cơ bản. đều thành tố này đồng thời ảnh hưởng tác động tới hàng số thời gian. Cụ thể, chúng ta có:
(a) Xu cầm cố chung: thể hiện hướng di chuyển tương đối trót lọt tru của hàng số thời gian trong thời hạn dài
(b) dịch chuyển chu kì: bao hàm những loại biến động trung hạn, lặp đi tái diễn và nhìn chung gắn với chu kì gớm doanh.
(c) biến động thời vụ: bao gồm những loại biến động trung hạn, lặp đi lặp lại và nối liền với từng mùa khác vào năm. Những biến động thời vụ này ông xã lên xu thế bình thường và dịch chuyển chu kì.
(d) biến động bất thường: là những chuyển đổi thất hay trong dãy số thời gian do những đổi mới cố tự nhiên không dự đoán trước được khiến ra. Những biến động thất hay này ông xã lên xu nuốm chung, dịch chuyển chu kì và biến động thời vụ.
Đặc trưng và ý nghĩa sâu sắc của phân tích dãy số thời gian
- cách thức phân tích dãy số thời gian tập trung vào câu hỏi tách tác động của từng thành tố trên của dãy số thời hạn với mục tiêu sử dụng nó để tham gia báo về tương lai.
- Để xác định xu thế phổ biến trong một hàng số thời gian, những nhà thống kê có thể sử dụng cách thức phân tích hồi qui, nghĩa là xác định một đường tương xứng với những giá trị quan giáp của hàng số thời gian bằng phương thức bình phương nhỏ dại nhất. Ở đây, thời hạn được coi là biến chủ quyền trong phương trình hồi qui cầu lượng được và biến hóa quan gần cạnh được coi là biến phụ thuộc.
- xung quanh ra, các nhà thống kê có thể sử dụng phương thức bình quân di động để san bằng dãy số thời gian, qua đó xác minh xu cố kỉnh cơ bạn dạng của nó. Chẳng hạn, họ áp dụng số trung bình di rượu cồn 5 thời kì trải qua việc thay thế sửa chữa mỗi cực hiếm quan sát tiếp nối bằng một vài bình quân của giá trị quan gần đó và hai quý giá quan cạnh bên trước và sau nó.
- cách thức san bởi mũ số là một phương pháp khác nhằm san bằng dãy số thời gian. Cách thức này tương tự như phương thức bình quân di động, nhưng những giá trị quan liền kề gần hơn được gia quyền to hơn khi tính số bình quân.
Lưu ý
- Để xác định ảnh hưởng của dịch chuyển thời vụ, những nhà thống kê cấu hình thiết lập chỉ tiêu dịch chuyển thời vụ, gọi là chỉ số thời vụ, và áp dụng nó để đào thải tính thời vụ trong dãy số thời gian. Qua đó, bạn ta chỉ ra rằng được rằng nếu không tồn tại những dịch chuyển thời vụ thì dãy số thời hạn sẽ ra sao. Sau khi xác minh được xu thế, người ta hoàn toàn có thể ngoại suy xu vậy đó và cầu lượng quý hiếm xu thế của những thời kì tương lai.
- ví dụ điển hình trong hình trên, xu thế cho tới thời kì t, bao quát cả t, có thể dùng để ngoại suy mang đến thời kì t+1. Bởi vì vậy, ngoại suy trở thành phương thức dự báo, tuy nhiên độ chính xác của cực hiếm dự báo còn nhờ vào vào chỗ sau đây những nhân tố cơ bản tác cồn tới dãy số thời hạn trong vượt khứ có liên tiếp tác rượu cồn theo cách thức cũ không.
Lời mở đầuChào những bạn, hôm nay tuy không nhàn hạ lắm, tuy vậy mình vẫn thử dịch với viết một bài bác về Time Series data (dữ liệu theo thời gian). Bài viết này dựa trên ý hiểu của chính mình khi đọc bài xích gốc, bao gồm gì sai sót mong các bạn bỏ qua.Bạn vẫn xem: Phân tích tài liệu chuỗi thời gian bằng Python (Time Series Data Analytics with Python)
Định nghĩaTime series data là gì ? Để trả lời thắc mắc này, tôi sẽ đưa ra 3 tình huống:
Bạn làm thống trị ở một nhà hàng quán ăn pizza, bạn thấy mỗi máy 7 giá deals tăng lên một chút, bạn có nhu cầu biết việc bán ra của mình có theo một quy luật đặc biệt quan trọng nào không.Công ty của người sử dụng bán một sản phẩm và các bạn được giao trách nhiệm dự đoán lượng mua, dự đoán số nguyên liệu cần cho sản phẩm này.Bạn là người bảo trì hệ thống tài liệu tập trung. Bạn muốn phát hiện tại ra các vấn đề xảy ra trong quá trình của khối hệ thống như việc áp dụng CPU bất thông thường dẫn đến máy chủ sập. Bởi vậy các bạn phải theo dõi giá chỉ trị áp dụng CPU theo thời gian.Như các bạn thấy trong các ví dụ trên, tôi đã cùng đang làm việc với tài liệu theo thời gian, từ đối chọi hàng cho tới dự đoán của sản phẩm, ... Thể hiện rõ ràng nhất ở đây là biểu đồ triệu chứng khoán.
Trong làng hội hiện đại, khi lượng thông tin ngày càng tăng, vấn đề phân tích tài liệu time series trở nên rất là quan trọng, nhưng đến dù có tương đối nhiều thuật toán hay quy mô trí tuệ nhân tạo sinh ra, việc dự đoán tương lai vẫn thất bại vì chưng sự thiếu định hình trong chuỗi thời gian.
Một vài thuật ngữ trong khoảng time Series
Trend: xu hướng của tài liệu (tăng hoặc giảm). Điều này hoàn toàn có thể phát hiện trải qua độ dốc của tài liệu trên biểu đồ.
Seasonality: tài liệu bị ảnh hưởng theo thước đo thời gian như: giờ, tuần, tháng, năm, ... Trong trường hợp, này dữ liệu có chu kỳ luân hồi lặp đi tái diễn theo thước đo thời gian kể trên với một tần suất cố định.
Cyclicity: một chu kỳ xẩy ra khi dữ liệu tăng với giảm không áp theo một tần suất cố định. Thường thấy nhất ở đấy là trong nghành nghề kinh tế.
Residuals: dữ liệu time series có thể tạo thành 2 loại: cực hiếm dự báo tại thời điểm t với phần thặng dư tại thời gian t
Value of series at time t = Predicted value at time t + Residual at time t
Một số ví dụ:
Chuỗi theo xu hướng tăng:

Một chuỗi cũng rất có thể là tổ hợp của không ít loại kể trên.
Tính bất biến của chuỗi
Đơn giản hiểu là một trong những chuỗi lặp đi tái diễn theo một chu kỳ, cực hiếm không tăng theo thời gian. Dự đoán chuỗi có tính ổn định định rất dễ do có các đặc tính như: mean, variance, autocorrelation, ...
Biến đổi về chuỗi ổn định định
Đại nhiều phần trường hợp chúng ta bắt gặp các chuỗi không ổn định định, bởi vì vậy buộc phải phải loại trừ những nhân tố gây không ổn định định.
De-trending (thủ tiêu xu hướng): như tên gọi, sa thải các khu vực mang yếu đuối tố xu hướng trong chuỗi. Câu hỏi loại bỏ có không ít cách, phụ thuộc vào bản chất của dữ liệu: index tốt non-index.Differencing: seasonal hoặc cyclical hoàn toàn có thể được loại bỏ bằng cách lấy quý giá quan gần cạnh tại thời gian t trừ quý hiếm quan cạnh bên tại thời khắc t-1.Logging: nôm mãng cầu là khi xu hướng không dựa vào chỉ số chi tiêu (trong trường hợp chưa phải chuỗi chi phí tệ) , logging sẽ trở nên chuỗi thành một chuỗi đường tính (log(exp(x)).Pratice codeKiểm tra tính bình ổn của chuỗi
Visualize
Cách dễ dàng nhất là quan ngay cạnh chuỗi bằng mắt thường. Nếu như khách hàng là dân code ngôn từ python-er như mình có thể dùng thư viện matplotlib để vẽ tài liệu thành biểu đồ.
Ở trên đây tôi dùng dữ liệu xuất nhập vào Úc-Nhật.
csv_path = "/home/pham.minh.hoang/Pictures/monthly-australian-imports-from-.csv"data_imports = pd.read_csv(csv_path)data = data_imports.drop(, 1)data.values.reshape(-1,1)plt.plot(data)plt.title("Australian imports")plt.show()data_detrend = (data - data.rolling(window=12).mean()) / data.rolling(window=12).std()data_season = data_detrend - data_detrend.shift(12)fig, ax = plt.subplots(3,figsize=(12, 9))ax.plot(data.index, data, label="raw data")ax.plot(data.rolling(window=12).mean(), label="rolling mean");ax.plot(data.rolling(window=12).std(), label="rolling std (x10)");ax.legend()ax.plot(data.index, data_detrend, label="de-trended data")ax.plot(data_detrend.rolling(window=12).mean(), label="rolling mean");ax.plot(data_detrend.rolling(window=12).std(), label="rolling std (x10)");ax.legend()ax.plot(data.index, data_season, label="12 lag differenced de-trended data")ax.plot(data_season.rolling(window=12).mean(), label="rolling mean");ax.plot(data_season.rolling(window=12).std(), label="rolling std (x10)");ax.legend()plt.tight_layout()fig.autofmt_xdate()

Adfuller
Cách 2, cần sử dụng adfuller thử nghiệm để bình chọn tính định hình của chuỗi. Bạn phải tải về tủ sách statsmodels
pip install statsmodelsfrom statsmodels.tsa.stattools import adfullerprint(" > Is the data stationary ?")dftest = adfuller(data, autolag="AIC")print("Test statistic = :.3f".format(dftest))print("P-value = :.3f".format(dftest))print("Critical values :")for k, v in dftest.items(): print(" : - The data is stationary with % confidence".format(k, v, "not" if vdftest else "", 100-int(k))) print("
> Is the de-trended data stationary ?")dftest = adfuller(data_detrend.dropna(), autolag="AIC")print("Test statistic = :.3f".format(dftest))print("P-value = :.3f".format(dftest))print("Critical values :")for k, v in dftest.items(): print(" : - The data is stationary with % confidence".format(k, v, "not" if vdftest else "", 100-int(k))) print("
> Is the 12-lag differenced de-trended data stationary ?")dftest = adfuller(data_season.dropna(), autolag="AIC")print("Test statistic = :.3f".format(dftest))print("P-value = :.3f".format(dftest))print("Critical values :")for k, v in dftest.items(): print(" : - The data is stationary with % confidence".format(k, v, "not" if vdftest else "", 100-int(k))) > Is the data stationary ?
Test statistic = 0.811P-value = 0.992Critical values :1%: -3.450632157720528 - The data is not stationary with 99% confidence5%: -2.870474482366864 - The data is not stationary with 95% confidence10%: -2.5715301325443787 - The data is not stationary with 90% confidence > Is the de-trended data stationary ?
Test statistic = -5.530P-value = 0.000Critical values :1%: -3.4521175397304784 - The data is stationary with 99% confidence5%: -2.8711265007266666 - The data is stationary with 95% confidence10%: -2.571877823851692 - The data is stationary with 90% confidence
KPSS
Cách 3, cần sử dụng KPSS thử nghiệm với trả thuyết rằng chuỗi có xu hướng ổn định. Nói phương pháp khác, p-value sa thải giả thuyết này, chuỗi không có xu hướng định hình và ngược lại.from statsmodels.tsa.stattools import kpssprint(" > Is the data stationary ?")statistic, p_value, n_lags, critical_values = kpss(data)print("Test statistic = :.3f".format(statistic))print("P-value = :.3f".format(p_value))print("num lags: ".format(n_lags))print("Critical values :")for k, v in critical_values.items(): print(f" k : v")print(f"Result: The series is "not " if p_value 0.05 else ""stationary") > Is the data stationary ?
Test statistic = 1.902P-value = 0.010num lags: 17Critical values : 10% : 0.347 5% : 0.463 2.5% : 0.574 1% : 0.739Result: The series is not stationary/python3.7/site-packages/statsmodels/tsa/stattools.py:1907: Interpolation
Warning:The thử nghiệm statistic is outside of the range of p-values available in thelook-up table. The actual p-value is smaller than the p-value returned.warn_msg.format(direction="smaller"), Interpolation
Warning
ACF và PACF
Autocorrelation (ACF) plot là đồ thị diễn đạt sự tương quan giữa chuỗi và độ trễ của chủ yếu nó.Partial autocorrelation (PACF) plot là thứ thị thể hiện con số tương quan thân chuỗi với độ trễ, xung quanh mối tương quan với độ trễ thấp.
Lý tưởng tốt nhất là không tồn tại tương quan tiền nào giữa chuỗi với độ trễ. Tức là chuỗi luôn cập nhật chính xác và kịp thời.
from statsmodels.graphics.tsaplots import plot_acf, plot_pacffig, ax = plt.subplots(2, figsize=(12,6))ax = plot_acf(data_detrend.dropna(), ax=ax, lags=20)ax = plot_pacf(data_detrend.dropna(), ax=ax, lags=20)
Các cột vượt thừa vùng xanh mô tả mối tương quan với độ trễ 1, 2, 3, 4
Phương pháp làm cho mịn này tương xứng với dữ liệu không theo xu phía hoặc không áp theo chu kỳ.
Các phương thức làm mịn dữ liệu có cách làm cơ bản là tính trung bình cùng của vượt khứ. Cùng với những cách thức nâng cao thì hoàn toàn có thể thêm tính chu kỳ và tính xu hướng.
Để dễ hiểu hơn, tôi sẽ giải thích bằng cách làm toán học với y là chuỗi, p. Là công dụng dự đoán, l là giá chỉ trị p đã được smooth, s là giá chỉ trị chu kỳ luân hồi và b là quý giá xu hướng.
Simple Exponential Smoothing
Thuật toán này dùng khi ít dữ liệu, không tồn tại xu hướng với chu kỳ. Công thức tại đây là:
pt=ltp_t = l_tpt=lt
lt=α∗yt+(1−α)∗lt−1l_t = alpha * y_t + (1-alpha) * l_t-1lt=α∗yt+(1−α)∗lt−1
Ở điểm ban đầu, lấy công dụng dự đoán ban đầu làm giá trị khởi chế tạo ra của l. Quý giá smooth ở thời gian t = cực hiếm smooth ở thời khắc t-1 nhân với 1-αalphaα (thông số làm mịn) cộng với αalphaα nhân với giá trị quan giáp ở thời điểm t-1.
from statsmodels.tsa.holtwinters import Simple
Exp
Smoothing, Holttrain = data.iloctest = data.ilocmodel = Simple
Exp
Smoothing(np.asarray(train))fit1 = model.fit()pred1 = fit1.forecast(10)fit2 = model.fit(smoothing_level=.2)pred2 = fit2.forecast(10)fit3 = model.fit(smoothing_level=.5)pred3 = fit3.forecast(10)fig, ax = plt.subplots(figsize=(12, 6))ax.plot(train.index, train.values)ax.plot(test.index, test.values, color="gray")for p, f, c in zip((pred1, pred2, pred3),(fit1, fit2, fit3),("#ff7823","#3c763d","c")): ax.plot(train.index, f.fittedvalues, color=c) ax.plot(test.index, p, label="alpha="+str(f.params), color=c)plt.title("Simple Exponential Smoothing") plt.legend();
Holt’s Linear Smoothing
Phương pháp làm cho mịn này cân xứng với dữ liệu theo xu hướng, không áp theo chu kỳ
(1)Forecastpt+h∣t=lt+bt(1) Forecast p_t = l_t + b_t(1)Forecastpt+h∣t=lt+bt
(2)lt=α∗yt+(1−α)∗lt−1(α=smoothinglevel)(2) l_t = alpha * y_t + (1-alpha) * l_t-1 (alpha = smoothing level)(2)lt=α∗yt+(1−α)∗lt−1(α=smoothinglevel)
(3)bt=β∗(lt−lt−1)+(1−β)∗bt−1(β=smoothingslope)(3) b_t = eta * (l_t - l_t-1) + (1-eta) * b_t-1 (eta = smoothing slope)(3)bt=β∗(lt−lt−1)+(1−β)∗bt−1(β=smoothingslope)
from statsmodels.tsa.holtwinters import Simple
Exp
Smoothing, Holttrain = data.iloctest = data.ilocmodel = Holt(np.asarray(train))fit1 = model.fit(smoothing_level=.3, smoothing_trend=.05)pred1 = fit1.forecast(10)fit2 = model.fit(optimized=True)pred2 = fit2.forecast(10)fit3 = model.fit(smoothing_level=.3, smoothing_trend=.2)pred3 = fit3.forecast(10)fig, ax = plt.subplots(figsize=(12, 6))ax.plot(train.index, train.values)ax.plot(test.index, test.values, color="gray")for p, f, c in zip((pred1, pred2, pred3),(fit1, fit2, fit3),("#ff7823","#3c763d","c")): ax.plot(train.index, f.fittedvalues, color=c) ax.plot(test.index, p, label="alpha="+str(f.params)+", beta="+str(f.params), color=c)plt.title("Holt"s Exponential Smoothing")plt.legend();
Dễ thấy sinh hoạt đây, Holt"s Linear cho ra hiệu quả tốt hơn một chút so với SES. Nhưng lại không thực tiễn do xu thế tính bằng cách thức này là hằng số không đổi sau này (tăng cho vô hạn và sút đến vô hạn). Vày vậy bạn ta suy nghĩ ra một giải pháp là thêm một thông số để xu hướng hội tụ trong tương lai.
from statsmodels.tsa.holtwinters import Exponential
Smoothingimport numpy as npmodel = Exponential
Smoothing(data), trend="mul", seasonal=None)model2 = Exponential
Smoothing(data), trend="mul", seasonal=None, damped=True)model._index = pd.to_datetime(train.index)fit1 = model.fit()fit2 = model2.fit()pred1 = fit1.forecast(9)pred2 = fit2.forecast(10)fig, ax = plt.subplots(2, figsize=(12, 12))ax.plot(train.index, train.values)ax.plot(test.index, test.values, color="gray", label="truth")ax.plot(train.index, train.values)ax.plot(test.index, test.values, color="gray", label="truth")for p, f, c in zip((pred1, pred2),(fit1, fit2),("#ff7823","#3c763d")): ax.plot(train.index, f.fittedvalues, color=c) ax.plot(train.index, f.fittedvalues, color=c) ax.plot(test.index, p, label="alpha="+str(f.params)+", beta="+str(f.params)+ ", damping="+str(True if f.params>0 else False), color=c) ax.plot(test.index, p, label="alpha="+str(f.params)+", beta="+str(f.params)+ ", damping="+str(True if f.params>0 else False), color=c)ax.set_title("Damped Exponential Smoothing");ax.set_title("Damped Exponential Smoothing - zoomed");plt.legend();
Còn phương thức Holt-Winter’s Seasonal smoothing giành riêng cho chuỗi theo chu kỳ luân hồi nhưng tôi sẽ đề cập lần sau.
Kết luậnỞ trên đây tôi sẽ không còn viết về ARIMA, các chúng ta có thể tham khảo blog của anh Khánh ví như muốn nắm rõ hơn. Tổng thể cả bài tôi ra mắt sơ qua tư tưởng về chuỗi thời hạn và một số phương thức làm mịn dữ liệu. Nhưng do lười phải tôi chỉ viết mang đến đây thôi, hẹn chúng ta phần sau
1. Reviews về chuỗi thời gian
Dự báo chuỗi thời hạn là một lớp mô hình đặc biệt trong thống kê, kinh tế lượng với machine learning. Sở dĩ họ gọi lớp mô hình này là chuỗi thời hạn (time series) là vì mô hình được vận dụng trên các chuỗi đặc thù có nhân tố thời gian. Một quy mô chuỗi thời hạn thường dự báo dựa vào giả định rằng những qui lý lẽ trong thừa khứ sẽ tái diễn ở tương lai. Cho nên vì vậy xây dựng mô hình chuỗi thời gian là chúng ta đang quy mô hóa mối quan hệ trong quá khứ giữa biến độc lập (biến đầu vào) và biến nhờ vào (biến mục tiêu). Phụ thuộc vào mối dục tình này để tham gia đoán giá chỉ trị trong tương lai của thay đổi phụ thuộc.
Do là dữ liệu chịu ảnh hưởng bởi tính chất thời gian nên chuỗi thời hạn thường xuất hiện những qui luật đặc thù như : nguyên tố chu kỳ, mùa vụ với yếu tố xu hướng. Đây là những đặc trưng thường trông thấy và lộ diện ở hầu hết các chuỗi thời gian.
nguyên tố chu kỳ, mùa vụ là hồ hết đặc tính tái diễn theo chu kỳ. Ví dụ như nhiệt độ trung bình những tháng trong thời hạn sẽ chịu tác động bởi các mùa xuân, hạ, thu, đông. Tuyệt xuất nhập khẩu của một nước nhà thường có chu kỳ theo các quí.Hình 1: Đồ thị về chuỗi ánh nắng mặt trời trung bình theo tháng miêu tả yếu tố mùa vụ.
yếu hèn tố xu hướng (trend) thể hiện đà tăng trưởng hoặc bớt của chuỗi trong tương lai. Chẳng hạn như lạm phân phát là xu thế chung của các nền khiếp tế, vì chưng đó túi tiền trung bình của giỏ sản phẩm & hàng hóa cơ sở hay có cách gọi khác là chỉ số CPI luôn luôn có xu hướng tăng và xu thế tăng này đại diện thay mặt cho sự mất giá bán của đồng tiền.Hình 2: Đồ thị về yếu tố xu hướng trong chuỗi thời hạn của chuỗi giá.
Các dự báo chuỗi thời gian có tính ứng dụng cao với được sử dụng không ít lĩnh vực như tài thiết yếu ngân hàng, chứng khoán, bảo hiểm, dịch vụ thương mại điện tử, marketing, quản lý chính sách. Bên dưới là một số trong những ứng dụng của dự báo chuỗi thời gian:
Dự báo nhu yếu thị trường nhằm lập kết hoạch sản xuất sale cho hãng. Dự đoán lợi suất tài sản tài chính, tỷ giá, túi tiền hàng hóa phái sinh để tiến hành trading công dụng trong market risk. Dự làm giá chứng khoán, các chuỗi lợi suất danh mục để quản ngại trị hạng mục đầu tư. Dự làm giá bitcoin, giá bán dầu mỏ, giá chỉ gas,… dự đoán nhiệt độ, lượng mưa để lập kế hoạch sản xuất nông, lâm, ngư nghiệp. Dự báo tác động của các nhân tố vĩ mô như lãi suất, cung tiền, chi tiêu trực tiếp nước ngoài, giá cả chính phủ, lân phát,… ảnh hưởng tác động lên lớn lên GDP để điều hành và quản lý nền khiếp tế.Vai trò của chuỗi thời hạn rất quan trọng đối với nền tài chính và hoạt động của doanh nghiệp đề nghị trong machine learning và thống kê có những ngành học nghiên cứu và phân tích chuyên sâu về chuỗi thời gian như kinh tế lượng, định giá tài sản tài chính.
Khác cùng với các quy mô dự báo thường thì trong machine learning, các mô hình trong đoán trước chuỗi thời gian trong kinh tế tài chính lượng có những đặc trưng rất riêng. Đòi hỏi phải vâng lệnh nghiêm ngặt những điều khiếu nại về chuỗi dừng, nhiễu trắng với tự tương quan. Có khá nhiều lớp quy mô chuỗi thời gian khác biệt và mỗi một lớp quy mô sẽ bao gồm một tiêu chuẩn áp lý lẽ thể. Bạn có thể liệt kê một số quy mô phổ biến:
Mô hình ARIMA: dựa vào giả thuyết chuỗi dừng với phương không nên sai số ko đổi. Quy mô sử dụng đầu vào chính là những biểu thị quá khứ của chuỗi được dự báo để tham gia báo nó. Những tín hiệu đó bao gồm: chuỗi tự hồi qui AR (auto regression) với chuỗi trung bình trượt MA (moving average). Phần đông các chuỗi thời gian sẽ có được xu phía tăng hoặc sút theo thời gian, do đó yếu tố chuỗi dừng thường không đạt được. Trong trường phù hợp chuỗi không dừng thì ta đã cần chuyển đổi sang chuỗi dừng bằng sai phân. Lúc ấy tham số đặc thù của quy mô sẽ gồm thêm yếu tắc bậc của không nên phân d và mô hình được quánh tả bởi 3 thông số ARIMA(p, d, q). Mô hình SARIMA: Về thực chất đây là quy mô ARIMA cơ mà được điều chỉnh đặc biệt quan trọng để áp dụng cho hồ hết chuỗi thời gian có nguyên tố mùa vụ. Như bọn họ đã biết về thực chất ARIMA chính là mô hình hồi qui tuyến tính nhưng quan hệ tuyến tính hay không giải thích tốt chuỗi trong trường đúng theo chuỗi lộ diện yếu tố mùa vụ. Bởi vì thế, bằng phương pháp tìm ra chu kì của qui luật mùa vụ và loại trừ nó khỏi chuỗi ta sẽ dễ dàng hồi qui quy mô theo cách thức ARIMA. Mô hình ARIMAX: là một dạng mở rộng của model ARIMA. Mô hình cũng dựa trên giải định về quan hệ tuyến tính giữa quý giá và phương không nên trong quá khứ với cái giá trị lúc này và áp dụng phương trình hồi qui tuyến tính được suy ra từ mối quan hệ trong vượt khứ nhằm mục tiêu dự báo tương lai. Quy mô sẽ tất cả thêm một vài ba biến tự do khác và cũng khá được xem như một quy mô hồi qui đụng (hoặc một số tài liệu giờ đồng hồ việt call là mô hình hồi qui đụng thái). Về bản chất ARIMAX tương ứng với một mô hình hồi qui đa đổi mới nhưng chiếm ưu thế trong đoán trước nhờ coi xét mang lại yếu tố tự đối sánh được màn biểu diễn trong phần dư của tế bào hình. Nhờ vào đó cải thiện độ thiết yếu xác. Mô hình GARCH: những giả thuyết về chuỗi dừng với phương sai sai số không đổi hầu như không dễ dành được trong thực tế. Trái lại phương không đúng sai số biến đổi rất dễ dàng xảy ra so với các chuỗi tài chính, kinh tế bởi thông thường sẽ có những sự khiếu nại không hy vọng đợi với cú sốc kinh tế tài chính không lường trước khiến biến hễ phương sai của chuỗi cầm cố đổi. Vào trường hợp đó nếu vận dụng ARIMA thì thường không với lại công dụng cao đến mô hình. Những nhà tài chính lượng cùng thống kê học đã nghĩ mang lại một lớp mô hình mà có thể dự báo được phương không nên để kiểm soát các chuyển đổi không muốn đợi. Dựa vào qui nguyên lý của phương sai, hiệu quả dự báo chuỗi sẽ tốt hơn đối với trước đó.2. Mô hình ARIMAHiện tại cả R cùng python đều tư vấn xây dựng các mô hình chuỗi thời gian ARIMA, SARIMA, ARIMAX, GARCH,…. Bên trên R chúng ta có thể sử dụng những packages như forecast với lmtest để thiết kế các quy mô này khá dễ dàng. Đối với thống kê cùng các mô hình chuỗi thời hạn R đã support tốt hơn python. Một lý do đó là những nhà thống kê lại và kinh tế tài chính lượng ưa chuộng sử dụng R hơn. Lí giải xây dựng quy mô ARIMA trên R các chúng ta cũng có thể xem trên ARIMA turtorial và GARCH time series model.
Bài lúc này tôi đã hướng dẫn chúng ta sử dụng python để sản xuất các model ARIMA. Cơ mà trước tiên họ cần kiếm tìm hiểu lý thuyết của mô hình trước khi đi vào phần thực hành thực tế ở mục 3 cùng 4.
2.1. Lý thuyết mô hình ARIMA
Lý thuyết:Chúng ta biết rằng số đông các chuỗi thời gian đều có sự tương quan giữa quý hiếm trong vượt khứ mang đến giá trị hiện tại tại. Nấc độ đối sánh càng lớn khi chuỗi càng gần thời gian hiện tại. Chính vì thể quy mô ARIMA vẫn tìm cách đưa vào những biến trễ nhằm tạo ra một mô hình dự báo fitting tốt hơn cực hiếm của chuỗi.
ARIMA mã sản phẩm là viết tắt của nhiều từ Autoregressive Intergrated Moving Average. Quy mô sẽ trình diễn phương trình hồi qui tuyến đường tính đa phát triển thành (multiple linear regression) của những biến đầu vào (còn điện thoại tư vấn là biến phụ thuộc vào trong thống kê) là 2 nhân tố chính:
Auto regression: Kí hiệu là AR. Đây là nguyên tố tự hồi qui bao gồm tợp hợp những độ trễ của biến hóa hiện tại. Độ trễ bậc $p$ chính là giá trị lùi về quá khứ $p$ bước thời hạn của chuỗi. Độ trễ nhiều năm hoặc ngắn trong quá trình AR phụ thuộc vào vào tham số trễ $p$. Thế thể, quá trình $ extAR(p)$ của chuỗi $x_t$ được màn trình diễn như mặt dưới: Moving average: Qúa trình vừa đủ trượt được phát âm là thừa trình dịch rời hoặc chuyển đổi giá trị mức độ vừa phải của chuổi theo thời gian. Vì chuỗi của chúng ta được đưa định là dừng yêu cầu quá trình biến hóa trung bình ngoài ra là một chuỗi nhiễu trắng. Qúa trình moving average sẽ tìm mối liên hệ về mặt tuyến tính giữa các phần tử ngẫu nhiên $epsilon_t$ (stochastic term). Chuỗi này phải là một trong những chuỗi nhiễu trắng thỏa mãn các tính chất:\Như vậy độc giả đã hình dung ra moving average là gì rồi chứ? Về mặt phát minh thì đó đó là quá trình hồi qui con đường tính của giá bán trị hiện tại theo những giá trị lúc này và thừa khứ của không đúng số nhiễu white (white noise error term) đại diện thay mặt cho những yếu tố shock ngẫu nhiên, hồ hết sự biến hóa không tính trước và phân tích và lý giải bởi tế bào hình.
Intergrated: Là quy trình đồng tích thích hợp hoặc rước sai phân. Yêu mong chung của những thuật toán trong khoảng thời gian series là chuỗi phải đảm bảo an toàn tính dừng. Hầu như các chuỗi phần nhiều tăng hoặc sút theo thời gian. Cho nên vì vậy yếu tố đối sánh giữa bọn chúng chưa chắc hẳn rằng thực sự mà là vì chúng cùng tương quan theo thời gian. Khi thay đổi sang chuỗi dừng, các nhân tố ảnh hưởng thời gian được sa thải và chuỗi đã dễ dự báo hơn. Để tạo thành thành chuỗi dừng, một phương thức đơn giản độc nhất vô nhị là họ sẽ rước sai phân. Một số trong những chuỗi tài bao gồm còn qui trở qua logarit hoặc lợi suất. Bậc của sai phân để tạo ra thành chuỗi dừng nói một cách khác là bậc của quá trình đồng tích thích hợp (order of intergration). Qúa trình không đúng phân bậc $d$ của chuỗi được triển khai như sau:
Sai phân bậc 1:( extI(1) = Delta(x_t) = x_t - x_t-1)
Sai phân bậc d:( extI(d) = Delta^d(x_t) = underbraceDelta(Delta(dots Delta(x_t)))_ extd times)
Thông hay chuỗi sẽ dừng sau quá trình đồng tích đúng theo $ extI(0)$ hoặc $ extI(1)$. Cực kỳ ít chuỗi họ phải đem tới không nên phân bậc 2. Một trong những trường hợp họ sẽ cần biến đổi logarit hoặc căn bậc 2 để tạo thành thành chuỗi dừng.Phương trình hồi qui ARIMA(p, d, q) rất có thể được trình diễn dưới dạng:
Trong đó $Delta x_t$ là quý giá sai phân bậc $d$ và $epsilon_t$ là các chuỗi nhiễu trắng.
Như vậy về tổng thể thì ARIMA là tế bào hình phối hợp của 2 quá trình tự hồi qui và trung bình trượt. Tài liệu trong thừa khứ sẽ tiến hành sử dụng để tham gia báo dữ liệu trong tương lai. Trước khi huấn luyện và đào tạo mô hình, bắt buộc chuyển hóa chuỗi thanh lịch chuỗi dừng bằng cách lấy sai phân bậc 1 hoặc logarit. Hình như mô hình cũng cần vâng lệnh điều kiện ngặt về không đúng số không tồn tại hiện tượng tự tương quan và phần dư là nhiễu trắng. Đó là định hướng của kinh tế lượng. Còn theo phe cánh machine learning thì tôi chỉ cần lưu ý đến làm sao để lựa chọn 1 mô hình tất cả sai số dự báo là nhỏ dại nhất. Tiếp theo bọn họ sẽ sử dụng package vnquant, một package được tôi viết nhằm hỗ trợ xã hội khai thác tài liệu chứng khoán thuận lợi hơn.
3. Ứng dụng vnquant trong thu thập dữ liệu.Xem thêm: Tải Ứng Dụng Khóa Màn Hình Cho Windows Phone, Download Khoa Man Hinh
3.1. Tích lũy dữ liệu
Bây giờ bọn họ sẽ cùng lấy dữ liệu chỉ số VNINDEX 30 trải qua package vnquant nào.