xu hướng ngẫu nhiên so với xu hướng xác định / thời vụ trong dự báo chuỗi thời gian


16

Tôi có nền tảng vừa phải trong dự báo chuỗi thời gian. Tôi đã xem một số cuốn sách dự báo và tôi không thấy những câu hỏi sau được giải quyết trong bất kỳ cuốn sách nào.

Tôi có hai câu hỏi:

  1. Làm thế nào tôi có thể xác định khách quan (thông qua kiểm tra thống kê) nếu một chuỗi thời gian nhất định có:

    • Tính thời vụ ngẫu nhiên hoặc tính thời vụ quyết định
    • Xu hướng ngẫu nhiên hoặc Xu hướng xác định
  2. Điều gì sẽ xảy ra nếu tôi mô hình chuỗi thời gian của mình theo xu hướng xác định / thời vụ khi chuỗi có thành phần ngẫu nhiên rõ ràng?

Bất kỳ trợ giúp giải quyết những câu hỏi này sẽ được đánh giá rất cao.

Dữ liệu ví dụ cho xu hướng:

7,657
5,451
10,883
9,554
9,519
10,047
10,663
10,864
11,447
12,710
15,169
16,205
14,507
15,400
16,800
19,000
20,198
18,573
19,375
21,032
23,250
25,219
28,549
29,759
28,262
28,506
33,885
34,776
35,347
34,628
33,043
30,214
31,013
31,496
34,115
33,433
34,198
35,863
37,789
34,561
36,434
34,371
33,307
33,295
36,514
36,593
38,311
42,773
45,000
46,000
42,000
47,000
47,500
48,000
48,500
47,000
48,900

Có 4 trạng thái có thể có của tự nhiên. Không có giải pháp phân tích cho câu hỏi này vì không gian mẫu mô hình là tương đối không giới hạn. Để trả lời bằng thực nghiệm câu hỏi bực tức này, tôi đã giúp phát triển AUTOBOX autobox.com/cms . AUTOBOX điều hành một giải đấu để kiểm tra tất cả 4 trường hợp này và đánh giá chất lượng của 4 mô hình kết quả về sự cần thiết và đầy đủ. Tại sao bạn không đăng một chuỗi thời gian ví dụ về lựa chọn của bạn và tôi sẽ đăng 4 kết quả cho thấy vấn đề này đã được giải quyết như thế nào.
IrishStat

Câu trả lời:


15

1) Liên quan đến câu hỏi đầu tiên của bạn, một số thống kê kiểm tra đã được phát triển và thảo luận trong tài liệu để kiểm tra null của tính ổn định và null của một đơn vị gốc. Một số trong nhiều bài báo được viết về vấn đề này như sau:

Liên quan đến xu hướng:

  • Dickey, D. y Fuller, W. (1979a), Phân phối các công cụ ước tính cho chuỗi thời gian tự phát với một đơn vị gốc, Tạp chí của Hiệp hội Thống kê Hoa Kỳ 74, 427-31.
  • Dickey, D. y Fuller, W. (1981), Thống kê tỷ lệ khả năng cho chuỗi thời gian tự phát với một đơn vị gốc, Kinh tế lượng 49, 1057-1071.
  • Kwiatkowski, D., Phillips, P., Schmidt, P. y Shin, Y. (1992), Kiểm tra giả thuyết khống về sự đứng đắn chống lại sự thay thế của một đơn vị gốc: Làm thế nào chắc chắn rằng chuỗi thời gian kinh tế của chúng ta có gốc đơn vị? , Tạp chí Kinh tế lượng 54, 159-178.
  • Phillips, P. y Perron, P. (1988), Kiểm tra một đơn vị gốc trong hồi quy chuỗi thời gian, Biometrika 75, 335-46.
  • Durlauf, S. y Phillips, P. (1988), Xu hướng so với bước đi ngẫu nhiên trong phân tích chuỗi thời gian, Kinh tế lượng 56, 1333-54.

Liên quan đến thành phần theo mùa:

  • Hylleberg, S., Engle, R., Granger, C. y Yoo, B. (1990), Hội nhập và hợp nhất theo mùa, Tạp chí Kinh tế lượng 44, 215-38.
  • Canova, F. y Hansen, BE (1995), Các mô hình theo mùa có liên tục theo thời gian không? một thử nghiệm cho sự ổn định theo mùa, Tạp chí Thống kê Kinh doanh và Kinh tế 13, 237-252.
  • Franses, P. (1990), Thử nghiệm cho các đơn vị gốc theo mùa trong dữ liệu hàng tháng, Báo cáo kỹ thuật 9032, Viện Kinh tế lượng.
  • Ghysels, E., Lee, H. y Noh, J. (1994), Thử nghiệm cho các đơn vị gốc trong chuỗi thời gian theo mùa. một số phần mở rộng lý thuyết và một cuộc điều tra monte carlo, Tạp chí Kinh tế lượng 62, 415-442.

Sách giáo khoa Banerjee, A., Dolado, J., Galbraith, J. y Hendry, D. (1993), Đồng tích hợp, Sửa lỗi và phân tích kinh tế lượng của dữ liệu không cố định, Các văn bản nâng cao trong Kinh tế lượng. Oxford University Press cũng là một tài liệu tham khảo tốt.

2) Mối quan tâm thứ hai của bạn được chứng minh bằng các tài liệu. Nếu có một kiểm tra gốc đơn vị thì thống kê t truyền thống mà bạn sẽ áp dụng theo xu hướng tuyến tính không tuân theo phân phối chuẩn. Xem ví dụ, Phillips, P. (1987), Hồi quy chuỗi thời gian với gốc đơn vị, Kinh tế lượng 55 (2), 277-301.

Nếu một đơn vị gốc tồn tại và bị bỏ qua, thì xác suất từ ​​chối null mà hệ số của xu hướng tuyến tính bằng 0 sẽ giảm. Đó là, cuối cùng chúng ta sẽ mô hình hóa một xu hướng tuyến tính xác định quá thường xuyên cho một mức ý nghĩa nhất định. Thay vào đó là sự hiện diện của một đơn vị gốc, chúng ta nên chuyển đổi dữ liệu bằng cách lấy sự khác biệt thường xuyên với dữ liệu.

3) Để minh họa, nếu bạn sử dụng R, bạn có thể thực hiện phân tích sau với dữ liệu của mình.

x <- structure(c(7657, 5451, 10883, 9554, 9519, 10047, 10663, 10864, 
  11447, 12710, 15169, 16205, 14507, 15400, 16800, 19000, 20198, 
  18573, 19375, 21032, 23250, 25219, 28549, 29759, 28262, 28506, 
  33885, 34776, 35347, 34628, 33043, 30214, 31013, 31496, 34115, 
  33433, 34198, 35863, 37789, 34561, 36434, 34371, 33307, 33295, 
  36514, 36593, 38311, 42773, 45000, 46000, 42000, 47000, 47500, 
  48000, 48500, 47000, 48900), .Tsp = c(1, 57, 1), class = "ts")

Đầu tiên, bạn có thể áp dụng thử nghiệm Dickey-Fuller cho null của một đơn vị gốc:

require(tseries)
adf.test(x, alternative = "explosive")
#   Augmented Dickey-Fuller Test
#   Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.453
#   alternative hypothesis: explosive

và thử nghiệm KPSS cho giả thuyết null ngược, ổn định chống lại sự thay thế của văn phòng phẩm xung quanh một xu hướng tuyến tính:

kpss.test(x, null = "Trend", lshort = TRUE)
#   KPSS Test for Trend Stationarity
#   KPSS Trend = 0.2691, Truncation lag parameter = 1, p-value = 0.01

Kết quả: Thử nghiệm ADF, ở mức ý nghĩa 5%, một đơn vị gốc không bị từ chối; Thử nghiệm KPSS, null của văn phòng phẩm bị từ chối ủng hộ một mô hình có xu hướng tuyến tính.

Ngoài ra, lưu ý: sử dụng lshort=FALSEnull của bài kiểm tra KPSS không bị từ chối ở mức 5%, tuy nhiên, nó chọn 5 độ trễ; một kiểm tra thêm không được hiển thị ở đây cho thấy rằng việc chọn độ trễ 1-3 là phù hợp với dữ liệu và dẫn đến bác bỏ giả thuyết khống.

Về nguyên tắc, chúng ta nên tự hướng dẫn mình bằng thử nghiệm mà chúng ta có thể bác bỏ giả thuyết khống (thay vì thử nghiệm mà chúng ta không từ chối (chúng ta chấp nhận) null). Tuy nhiên, hồi quy của loạt ban đầu về xu hướng tuyến tính hóa ra không đáng tin cậy. Một mặt, bình phương R cao (trên 90%) được chỉ ra trong tài liệu là một chỉ số của hồi quy giả.

fit <- lm(x ~ 1 + poly(c(time(x))))
summary(fit)
#Coefficients:
#                 Estimate Std. Error t value Pr(>|t|)    
#(Intercept)       28499.3      381.6   74.69   <2e-16 ***
#poly(c(time(x)))  91387.5     2880.9   31.72   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 2881 on 55 degrees of freedom
#Multiple R-squared:  0.9482,   Adjusted R-squared:  0.9472 
#F-statistic:  1006 on 1 and 55 DF,  p-value: < 2.2e-16

Mặt khác, phần dư được tự động hóa:

acf(residuals(fit)) # not displayed to save space

Hơn nữa, null của một đơn vị gốc trong phần dư không thể bị từ chối.

adf.test(residuals(fit))
#   Augmented Dickey-Fuller Test
#Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.547
#alternative hypothesis: stationary

Tại thời điểm này, bạn có thể chọn một mô hình sẽ được sử dụng để thu được dự báo. Ví dụ, dự báo dựa trên mô hình chuỗi thời gian cấu trúc và trên mô hình ARIMA có thể thu được như sau.

# StructTS
fit1 <- StructTS(x, type = "trend")
fit1
#Variances:
# level    slope  epsilon  
#2982955        0   487180 
# 
# forecasts
p1 <- predict(fit1, 10, main = "Local trend model")
p1$pred
# [1] 49466.53 50150.56 50834.59 51518.62 52202.65 52886.68 53570.70 54254.73
# [9] 54938.76 55622.79

# ARIMA
require(forecast)
fit2 <- auto.arima(x, ic="bic", allowdrift = TRUE)
fit2
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift
#      736.4821
#s.e.  267.0055
#sigma^2 estimated as 3992341:  log likelihood=-495.54
#AIC=995.09   AICc=995.31   BIC=999.14
#
# forecasts
p2 <- forecast(fit2, 10, main = "ARIMA model")
p2$mean
# [1] 49636.48 50372.96 51109.45 51845.93 52582.41 53318.89 54055.37 54791.86
# [9] 55528.34 56264.82

Một âm mưu của các dự báo:

par(mfrow = c(2, 1), mar = c(2.5,2.2,2,2))
plot((cbind(x, p1$pred)), plot.type = "single", type = "n", 
  ylim = range(c(x, p1$pred + 1.96 * p1$se)), main = "Local trend model")
grid()
lines(x)
lines(p1$pred, col = "blue")
lines(p1$pred + 1.96 * p1$se, col = "red", lty = 2)
lines(p1$pred - 1.96 * p1$se, col = "red", lty = 2)
legend("topleft", legend = c("forecasts", "95% confidence interval"), 
  lty = c(1,2), col = c("blue", "red"), bty = "n")
plot((cbind(x, p2$mean)), plot.type = "single", type = "n", 
  ylim = range(c(x, p2$upper)), main = "ARIMA (0,1,0) with drift")
grid()
lines(x)
lines(p2$mean, col = "blue")
lines(ts(p2$lower[,2], start = end(x)[1] + 1), col = "red", lty = 2)
lines(ts(p2$upper[,2], start = end(x)[1] + 1), col = "red", lty = 2)

dự báo xu hướng

Các dự báo là tương tự trong cả hai trường hợp và nhìn hợp lý. Lưu ý rằng các dự báo theo một mô hình tương đối xác định tương tự như một xu hướng tuyến tính, nhưng chúng tôi không mô hình hóa rõ ràng một xu hướng tuyến tính. Lý do là như sau: i) trong mô hình xu hướng cục bộ, phương sai của thành phần độ dốc được ước tính bằng không. Điều này biến thành phần xu hướng thành một sự trôi dạt có tác động của xu hướng tuyến tính. ii) ARIMA (0,1,1), một mô hình có độ trôi được chọn trong một mô hình cho chuỗi khác biệt. Hiệu ứng của thuật ngữ không đổi trên chuỗi khác biệt là xu hướng tuyến tính. Điều này được thảo luận trong bài viết này .

Bạn có thể kiểm tra xem nếu mô hình cục bộ hoặc ARIMA (0,1,0) không bị trôi được chọn, thì các dự báo là một đường thẳng nằm ngang và do đó, sẽ không giống với động của dữ liệu được quan sát. Vâng, đây là một phần của câu đố kiểm tra gốc đơn vị và các thành phần xác định.

Chỉnh sửa 1 (kiểm tra phần dư): Tự động tương quan và ACF một phần không đề xuất cấu trúc trong phần dư.

resid1 <- residuals(fit1)
resid2 <- residuals(fit2)
par(mfrow = c(2, 2))
acf(resid1, lag.max = 20, main = "ACF residuals. Local trend model")
pacf(resid1, lag.max = 20, main = "PACF residuals. Local trend model")
acf(resid2, lag.max = 20, main = "ACF residuals. ARIMA(0,1,0) with drift")
pacf(resid2, lag.max = 20, main = "PACF residuals. ARIMA(0,1,0) with drift")

ACF-PACF

Như IrishStat đề xuất, kiểm tra sự hiện diện của các ngoại lệ cũng được khuyến khích. Hai ngoại lệ phụ gia được phát hiện bằng cách sử dụng gói tsoutliers.

require(tsoutliers)
resol <- tsoutliers(x, types = c("AO", "LS", "TC"), 
  remove.method = "bottom-up", 
  args.tsmethod = list(ic="bic", allowdrift=TRUE))
resol
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift        AO2       AO51
#      736.4821  -3819.000  -4500.000
#s.e.  220.6171   1167.396   1167.397
#sigma^2 estimated as 2725622:  log likelihood=-485.05
#AIC=978.09   AICc=978.88   BIC=986.2
#Outliers:
#  type ind time coefhat  tstat
#1   AO   2    2   -3819 -3.271
#2   AO  51   51   -4500 -3.855

Nhìn vào ACF, chúng ta có thể nói rằng, ở mức ý nghĩa 5%, phần dư là ngẫu nhiên trong mô hình này.

par(mfrow = c(2, 1))
acf(residuals(resol$fit), lag.max = 20, main = "ACF residuals. ARIMA with additive outliers")
pacf(residuals(resol$fit), lag.max = 20, main = "PACF residuals. ARIMA with additive outliers")

nhập mô tả hình ảnh ở đây

Trong trường hợp này, sự hiện diện của các ngoại lệ tiềm năng không xuất hiện để làm biến dạng hiệu suất của các mô hình. Điều này được hỗ trợ bởi thử nghiệm Jarque-Bera về tính quy tắc; null của tính quy tắc trong phần dư từ các mô hình ban đầu ( fit1, fit2) không bị từ chối ở mức ý nghĩa 5%.

jarque.bera.test(resid1)[[1]]
# X-squared = 0.3221, df = 2, p-value = 0.8513
jarque.bera.test(resid2)[[1]]
#X-squared = 0.426, df = 2, p-value = 0.8082

Chỉnh sửa 2 (biểu đồ của phần dư và giá trị của chúng) Đây là cách phần dư trông như thế nào:

dư

Và đây là những giá trị của chúng trong định dạng csv:

0;6.9205
-0.9571;-2942.4821
2.6108;4695.5179
-0.5453;-2065.4821
-0.2026;-771.4821
0.1242;-208.4821
0.1909;-120.4821
-0.0179;-535.4821
0.1449;-153.4821
0.484;526.5179
1.0748;1722.5179
0.3818;299.5179
-1.061;-2434.4821
0.0996;156.5179
0.4805;663.5179
0.8969;1463.5179
0.4111;461.5179
-1.0595;-2361.4821
0.0098;65.5179
0.5605;920.5179
0.8835;1481.5179
0.7669;1232.5179
1.4024;2593.5179
0.3785;473.5179
-1.1032;-2233.4821
-0.3813;-492.4821
2.2745;4642.5179
0.2935;154.5179
-0.1138;-165.4821
-0.8035;-1455.4821
-1.2982;-2321.4821
-1.9463;-3565.4821
-0.1648;62.5179
-0.1022;-253.4821
0.9755;1882.5179
-0.5662;-1418.4821
-0.0176;28.5179
0.5;928.5179
0.6831;1189.5179
-1.8889;-3964.4821
0.3896;1136.5179
-1.3113;-2799.4821
-0.9934;-1800.4821
-0.4085;-748.4821
1.2902;2482.5179
-0.0996;-657.4821
0.5539;981.5179
2.0007;3725.5179
1.0227;1490.5179
0.27;263.5179
-2.336;-4736.4821
1.8994;4263.5179
0.1301;-236.4821
-0.0892;-236.4821
-0.1148;-236.4821
-1.1207;-2236.4821
0.4801;1163.5179

1
Bạn có xác minh rằng phần dư từ các mô hình của bạn là ngẫu nhiên hay không, không có cấu trúc ngoại lệ hoặc cấu trúc ARIMA nào được yêu cầu để kiểm tra tầm quan trọng của các hệ số ước tính có ý nghĩa. Lưu ý rằng nếu bạn có các ngoại lệ trong phần dư thì ACF là vô nghĩa vì phương sai lỗi sai lệch dẫn đến ACF bị đánh giá thấp. Bạn có thể vui lòng cung cấp các sơ đồ của các lỗi chứng minh / đề xuất tính ngẫu nhiên nếu không kết luận của bạn về phần dư không được sửa chữa có thể sai.
IrishStat

Chắc chắn một phân tích đầy đủ yêu cầu kiểm tra phần dư. Tôi giới hạn câu trả lời của mình để đặt tên cho một số công cụ có thể được sử dụng để áp dụng các bài kiểm tra mà "người dự báo" đang hỏi và minh họa cách sử dụng của chúng. Tôi vui mừng khi thấy bạn quan tâm đến nhiều chi tiết hơn, tôi đã chỉnh sửa câu hỏi của tôi.
javlacalle

Tôi đã yêu cầu một âm mưu thời gian của phần dư. Bạn có thể vui lòng cung cấp cho họ và cũng tự cung cấp phần dư để tôi có thể xử lý chúng với AUTOBOX để xác nhận rằng chúng không có cấu trúc rõ ràng. Thử nghiệm JB không được ưa thích khi thử nghiệm Xung, Chuyển dịch cấp độ, Xung theo mùa và / hoặc Xu hướng thời gian cục bộ trong một tập dữ liệu mặc dù sự hiện diện của các loại cấu trúc này có thể kích hoạt từ chối giả định quy tắc. Ý tưởng rằng nếu null không bị từ chối thì đó là bằng chứng về sự chấp nhận của nó có thể nguy hiểm. Vui lòng xem chú.edu / ~ jbhill / tsay.pdf
IrishStat

1
Cảm ơn. Tôi đã gửi 57 số dư và 5 trong số chúng được gắn cờ dự kiến ​​là ngoại lệ. Theo thứ tự quan trọng (51,3,27,52 và 48). Biểu đồ của bạn hỗ trợ trực quan những điểm này. Các lỗi kết quả thể hiện không có vi phạm ngẫu nhiên và sau đó không có ACF đáng kể. Để điều chỉnh các giá trị quan sát của bạn để điều chỉnh phát hiện bất thường, vui lòng sử dụng các cách sau: + [X1 (T)] [(- 4494.5)]: PULSE 51 + [X2 (T)] [(+ 4937.5)]: PULSE 3 + [X3 (T)] [(+ 4884.5)]: PULSE 27 + [X4 (T)] [(+ 4505.5)]: PULSE 52 + [X5 (T)] [(+ 3967.5)]: PULSE 48
IrishStat

1
@B_Miner Thông thường bạn sẽ bắt đầu bằng cách xem chức năng tự tương quan của phần dư. Nếu tự động tương quan có ý nghĩa và lớn đối với các đơn đặt hàng lớn (nghĩa là ACF không phân rã theo cấp số nhân về 0) thì bạn có thể xem xét áp dụng kiểm tra gốc đơn vị trên phần dư. Nếu phân tích phần dư cho thấy có gốc đơn vị, điều đó có nghĩa là bạn có thể nên lấy sự khác biệt đầu tiên hai lần trên dữ liệu gốc (nghĩa là lấy lại sự khác biệt trong chuỗi khác biệt).
javlacalle

4

Đối với dữ liệu không theo mùa của bạn ... Xu hướng có thể có hai dạng y (t) = y (t − 1) + θ0 (A) Xu hướng ngẫu nhiên hoặc Y (t) = a + bx1 + cx2 (B) Xác định Xu hướng v.v ... trong đó x1 = 1,2,3,4 .... t và x2 = 0,0,0,0,0,1,2,3,4 do đó, một xu hướng áp dụng cho các quan sát 1 − t và xu hướng thứ hai áp dụng cho các quan sát 6 đến t.

Chuỗi không theo mùa của bạn chứa 29 giá trị. Tôi đã sử dụng AUTOBOX một phần mềm mà tôi đã giúp phát triển theo cách hoàn toàn tự động. AUTOBOX là một quy trình minh bạch vì nó chi tiết từng bước trong quy trình mô hình hóa. Một đồ thị của loạt / giá trị được trang bị / dự báo được trình bày ở đây nhập mô tả hình ảnh ở đây. Sử dụng AUTOBOX để tạo thành một mô hình loại A dẫn đến sau đây nhập mô tả hình ảnh ở đây. Phương trình được trình bày một lần nữa ở đây nhập mô tả hình ảnh ở đây, Các số liệu thống kê của mô hình là nhập mô tả hình ảnh ở đây. Một biểu đồ của phần dư ở đây nhập mô tả hình ảnh ở đâytrong khi bảng các giá trị dự báo ở đây nhập mô tả hình ảnh ở đây. Việc hạn chế AUTOBOX đối với mô hình loại B đã dẫn đến AUTOBOX phát hiện xu hướng tăng lên trong giai đoạn 14 :. nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đâynhập mô tả hình ảnh ở đây!nhập mô tả hình ảnh ở đâynhập mô tả hình ảnh ở đâynhập mô tả hình ảnh ở đây

Về mặt so sánh các mô hình: Do số lượng quan sát được trang bị khác nhau (tương ứng 26 và 29), không thể sử dụng các số liệu tiêu chuẩn (ví dụ: bình phương r, dev tiêu chuẩn lỗi, AIC, v.v.) để xác định sự thống trị mặc dù trong trường hợp này, cái gật đầu sẽ đi đến A. Phần dư từ A tốt hơn do cấu trúc AR (2). Các dự báo từ B là một chút tích cực trong khi mô hình của các dự báo A là trực quan hơn. Người ta có thể giữ lại 4 quan sát và đánh giá độ chính xác dự báo cho dự báo 1 kỳ từ 4 nguồn gốc khác nhau (25,26,27 và 28).


2Irish stat stanks cho phản ứng xuất sắc. Tôi đã đọc một số là chúng ta sẽ kết hợp xu hướng ngẫu nhiên và xác định đó là yt = y (t-1) + a + bt = ct? điều đó có hữu ích không
dự báo

Dạng mô hình y (t) = B0 + B1 * t + a (t) [thetha / phi] sụp đổ nếu phi nói [1-B] vì việc xóa các phân số về cơ bản khác nhau với biến t tạo ra một hằng số va chạm với B0. Nói cách khác, cấu trúc ARIMA được nối với các chỉ báo thời gian có thể tạo ra sự tàn phá. Mô hình bạn chỉ định là có thể ước tính nhưng chắc chắn không phải là một cách tiếp cận ưa thích (có lẽ thiếu tính nội sinh!). Một số người khác đọc nó có thể bình luận có thể giúp về điều này. Nó không phải là một tập hợp con đúng của Hàm truyền i.imgur.com/dv4bAts.png
IrishStat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.