Quy trình phân tích thời gian và phương pháp sử dụng R


13

Tôi đang làm việc trong một dự án nhỏ nơi chúng tôi đang cố gắng dự đoán giá cả hàng hóa (Dầu, Nhôm, Tin, v.v.) trong 6 tháng tới. Tôi có 12 biến như vậy để dự đoán và tôi có dữ liệu từ tháng 4 năm 2008 - tháng 5 năm 2013.

Làm thế nào tôi nên đi về dự đoán? Tôi đã làm như sau:

  • Dữ liệu được nhập dưới dạng tập dữ liệu của Timeseries
  • Tất cả tính thời vụ của biến có xu hướng thay đổi theo Xu hướng, vì vậy tôi sẽ chuyển sang mô hình nhân.
  • Tôi lấy nhật ký của biến để chuyển đổi thành mô hình phụ gia
  • Đối với mỗi biến được phân tách dữ liệu bằng STL

Tôi đang lên kế hoạch sử dụng Holt Winters làm mịn theo cấp số nhân, ARIMA và mạng lưới thần kinh để dự báo. Tôi chia dữ liệu thành đào tạo và thử nghiệm (80, 20). Lập kế hoạch để chọn mô hình với ít MAE, MPE, MAPE và MASE.

Tôi làm đúng không?

Ngoài ra một câu hỏi tôi đã có, trước khi chuyển sang ARIMA hoặc mạng lưới thần kinh tôi có nên làm mịn dữ liệu? Nếu có, sử dụng cái gì? Dữ liệu cho thấy cả Thời vụ và xu hướng.

BIÊN TẬP:

Đính kèm cốt truyện và dữ liệu thời gian nhập mô tả hình ảnh ở đây

Year  <- c(2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2009, 2009, 
           2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2010, 
           2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 
           2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 
           2011, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 
           2012, 2012, 2013, 2013)
Month <- c(4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
           12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 
           8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2) 
Coil  <- c(44000, 44500, 42000, 45000, 42500, 41000, 39000, 35000, 34000, 
           29700, 29700, 29000, 30000, 30000, 31000, 31000, 33500, 33500, 
           33000, 31500, 34000, 35000, 35000, 36000, 38500, 38500, 35500, 
           33500, 34500, 36000, 35500, 34500, 35500, 38500, 44500, 40700, 
           40500, 39100, 39100, 39100, 38600, 39500, 39500, 38500, 39500, 
           40000, 40000, 40500, 41000, 41000, 41000, 40500, 40000, 39300, 
           39300, 39300, 39300, 39300, 39800)
coil <- data.frame(Year = Year, Month = Month, Coil = Coil)

EDIT 2: Một câu hỏi, bạn có thể vui lòng cho tôi biết nếu dữ liệu của tôi có bất kỳ tính thời vụ hoặc xu hướng nào không? Và cũng xin vui lòng cho tôi một số lời khuyên về cách xác định chúng. nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


2
Nếu bạn đang cố gắng dự báo các nhóm hàng hóa, chẳng hạn như các loại kim loại khác nhau (thép A, thép B, thép C, v.v.), thì có thể đáng để thử nghiệm cho sự tồn tại của sự hợp nhất. Ví dụ, một cái gì đó như thế này: Giá thép có di chuyển cùng nhau không? . Điều này có thể cung cấp dự báo 6 tháng (trung hạn / dài hạn) tốt hơn so với các phương pháp đơn biến, nhưng thực sự đây là một trò chơi khó mà bạn đang cố gắng chơi. ;-)
Graeme Walsh

1
NHƯ @GraemeWalsh chỉ ra, phép ngoại suy xu hướng đơn biến có thể không lý tưởng cho loại dữ liệu này. Có những phương pháp được thiết lập tốt trong tài liệu dự báo giá dầu, giá thép có thể đáng để khám phá.
dự báo

1
Bạn có thể đăng các chỉnh sửa mới như một câu hỏi riêng biệt? Vì bạn đã chấp nhận một câu trả lời, các câu hỏi mới có thể không nhận được sự chú ý mà nó cần. Từ nhãn cầu dữ liệu tôi có thể nói không ai trong số họ có xu hướng hoặc mô hình theo mùa. Như đã lưu ý trong bài viết của tôi dưới đây, có vẻ như xu hướng giảm trước năm 2009 là một hiện tượng kinh tế vĩ mô như suy thoái?
dự báo

@ forecaster, @ GraemeWalsh: Cảm ơn bạn. Tôi đang lên kế hoạch sử dụng phương pháp hợp nhất bằng các xét nghiệm ADF.
Niranjan Sonachalam

1
Bạn đã cung cấp bối cảnh trong câu hỏi mới của bạn và nó có ý nghĩa mosre bây giờ. Vì vậy, giảm trước năm 2009 thực sự là một số hiện tượng kinh tế vĩ mô. Trong trường hợp đó, vui lòng sử dụng phương pháp đi bộ ngẫu nhiên với drift hoặc (arima (0,1,0) + drift
forecaster

Câu trả lời:


21

Bạn nên sử dụng gói dự báo , hỗ trợ tất cả các mô hình này (và hơn thế nữa) và làm cho chúng phù hợp nhanh chóng:

library(forecast)
x <- AirPassengers
mod_arima <- auto.arima(x, ic='aicc', stepwise=FALSE)
mod_exponential <- ets(x, ic='aicc', restrict=FALSE)
mod_neural <- nnetar(x, p=12, size=25)
mod_tbats <- tbats(x, ic='aicc', seasonal.periods=12)
par(mfrow=c(4, 1))
plot(forecast(mod_arima, 12), include=36)
plot(forecast(mod_exponential, 12), include=36)
plot(forecast(mod_neural, 12), include=36)
plot(forecast(mod_tbats, 12), include=36)

Tôi sẽ khuyên không nên làm mịn dữ liệu trước khi lắp mô hình của bạn. Mô hình của bạn vốn đã cố gắng làm mịn dữ liệu, vì vậy việc làm mịn trước chỉ làm phức tạp mọi thứ.

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

Chỉnh sửa dựa trên dữ liệu mới:

Nó thực sự trông giống như arima là một trong những mô hình tồi tệ nhất bạn có thể chọn cho tập huấn luyện và thử nghiệm này.

Tôi đã lưu dữ liệu của bạn vào một cuộc gọi tệp coil.csv, tải nó vào R và chia nó thành tập huấn luyện và kiểm tra:

library(forecast)
dat <- read.csv('~/coil.csv')
x <- ts(dat$Coil, start=c(dat$Year[1], dat$Month[1]), frequency=12)
test_x <- window(x, start=c(2012, 3))
x <- window(x, end=c(2012, 2))

Tiếp theo tôi phù hợp với một loạt các mô hình chuỗi thời gian: arima, làm mịn theo cấp số nhân, mạng lưới thần kinh, tbats, dơi, phân rã theo mùa và chuỗi thời gian cấu trúc:

models <- list(
  mod_arima = auto.arima(x, ic='aicc', stepwise=FALSE),
  mod_exp = ets(x, ic='aicc', restrict=FALSE),
  mod_neural = nnetar(x, p=12, size=25),
  mod_tbats = tbats(x, ic='aicc', seasonal.periods=12),
  mod_bats = bats(x, ic='aicc', seasonal.periods=12),
  mod_stl = stlm(x, s.window=12, ic='aicc', robust=TRUE, method='ets'),
  mod_sts = StructTS(x)
  )

Sau đó, tôi đã thực hiện một số dự báo và so sánh với bộ thử nghiệm. Tôi đã bao gồm một dự báo ngây thơ luôn dự đoán một đường thẳng, ngang:

forecasts <- lapply(models, forecast, 12)
forecasts$naive <- naive(x, 12)
par(mfrow=c(4, 2))
for(f in forecasts){
  plot(f)
  lines(test_x, col='red')
}

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

Như bạn có thể thấy, mô hình arima có xu hướng sai, nhưng tôi giống như kiểu của "Mô hình kết cấu cơ bản"

Cuối cùng, tôi đã đo độ chính xác của từng mô hình trên bộ thử nghiệm:

acc <- lapply(forecasts, function(f){
  accuracy(f, test_x)[2,,drop=FALSE]
})
acc <- Reduce(rbind, acc)
row.names(acc) <- names(forecasts)
acc <- acc[order(acc[,'MASE']),]
round(acc, 2)
                ME    RMSE     MAE   MPE MAPE MASE ACF1 Theil's U
mod_sts     283.15  609.04  514.46  0.69 1.27 0.10 0.77      1.65
mod_bats     65.36  706.93  638.31  0.13 1.59 0.12 0.85      1.96
mod_tbats    65.22  706.92  638.32  0.13 1.59 0.12 0.85      1.96
mod_exp      25.00  706.52  641.67  0.03 1.60 0.12 0.85      1.96
naive        25.00  706.52  641.67  0.03 1.60 0.12 0.85      1.96
mod_neural   81.14  853.86  754.61  0.18 1.89 0.14 0.14      2.39
mod_arima   766.51  904.06  766.51  1.90 1.90 0.14 0.73      2.48
mod_stl    -208.74 1166.84 1005.81 -0.52 2.50 0.19 0.32      3.02

Các số liệu được sử dụng được mô tả trong Hyndman, RJ và Athanasopoulos, G. (2014) "Dự báo: nguyên tắc và thực hành" , người cũng tình cờ là tác giả của gói dự báo. Tôi đặc biệt khuyên bạn nên đọc văn bản của họ: nó có sẵn miễn phí trên mạng. Chuỗi thời gian cấu trúc là mô hình tốt nhất theo một số số liệu, bao gồm MASE, đây là số liệu tôi có xu hướng thích lựa chọn mô hình.

Một câu hỏi cuối cùng là: mô hình cấu trúc có gặp may mắn trong bộ thử nghiệm này không? Một cách để đánh giá điều này là xem xét các lỗi tập huấn luyện. Lỗi tập huấn luyện ít đáng tin cậy hơn lỗi tập kiểm thử (vì chúng có thể quá khớp), nhưng trong trường hợp này, mô hình cấu trúc vẫn xuất hiện trên đầu:

acc <- lapply(forecasts, function(f){
  accuracy(f, test_x)[1,,drop=FALSE]
})
acc <- Reduce(rbind, acc)
row.names(acc) <- names(forecasts)
acc <- acc[order(acc[,'MASE']),]
round(acc, 2)
                ME    RMSE     MAE   MPE MAPE MASE  ACF1 Theil's U
mod_sts      -0.03    0.99    0.71  0.00 0.00 0.00  0.08        NA
mod_neural    3.00 1145.91  839.15 -0.09 2.25 0.16  0.00        NA
mod_exp     -82.74 1915.75 1359.87 -0.33 3.68 0.25  0.06        NA
naive       -86.96 1936.38 1386.96 -0.34 3.75 0.26  0.06        NA
mod_arima  -180.32 1889.56 1393.94 -0.74 3.79 0.26  0.09        NA
mod_stl     -38.12 2158.25 1471.63 -0.22 4.00 0.28 -0.09        NA
mod_bats     57.07 2184.16 1525.28  0.00 4.07 0.29 -0.03        NA
mod_tbats    62.30 2203.54 1531.48  0.01 4.08 0.29 -0.03        NA

(Lưu ý rằng mạng nơ-ron hoạt động quá mức, hoạt động xuất sắc trên tập huấn luyện và kém trên tập kiểm tra)

Cuối cùng, sẽ là một ý tưởng tốt để xác nhận chéo tất cả các mô hình này, có thể bằng cách đào tạo vào năm 2008-2009 / thử nghiệm vào năm 2010, đào tạo vào năm 2008-2010 / thử nghiệm vào năm 2011, đào tạo vào năm 2008-2011 / thử nghiệm vào năm 2012, đào tạo vào năm 2012 vào 2008-2012 / thử nghiệm vào năm 2013 và tính trung bình các lỗi trong tất cả các khoảng thời gian này. Nếu bạn muốn đi theo tuyến đường đó, tôi có gói hoàn chỉnh một phần cho các mô hình chuỗi thời gian xác thực chéo trên github mà tôi muốn bạn dùng thử và gửi cho tôi yêu cầu phản hồi / kéo về:

devtools::install_github('zachmayer/cv.ts')
library(cv.ts)

Chỉnh sửa 2: Hãy xem tôi có nhớ cách sử dụng gói của riêng mình không!

Trước hết, cài đặt và tải gói từ github (xem bên trên). Sau đó xác thực chéo một số mô hình (sử dụng bộ dữ liệu đầy đủ):

library(cv.ts)
x <- ts(dat$Coil, start=c(dat$Year[1], dat$Month[1]), frequency=12)
ctrl <- tseriesControl(stepSize=1, maxHorizon=12, minObs=36, fixedWindow=TRUE)
models <- list()

models$arima = cv.ts(
  x, auto.arimaForecast, tsControl=ctrl,
  ic='aicc', stepwise=FALSE)

models$exp = cv.ts(
  x, etsForecast, tsControl=ctrl,
  ic='aicc', restrict=FALSE)

models$neural = cv.ts(
  x, nnetarForecast, tsControl=ctrl,
  nn_p=6, size=5)

models$tbats = cv.ts(
  x, tbatsForecast, tsControl=ctrl,
  seasonal.periods=12)

models$bats = cv.ts(
  x, batsForecast, tsControl=ctrl,
  seasonal.periods=12)

models$stl = cv.ts(
  x, stl.Forecast, tsControl=ctrl,
  s.window=12, ic='aicc', robust=TRUE, method='ets')

models$sts = cv.ts(x, stsForecast, tsControl=ctrl)

models$naive = cv.ts(x, naiveForecast, tsControl=ctrl)

models$theta = cv.ts(x, thetaForecast, tsControl=ctrl)

(Lưu ý rằng tôi đã giảm tính linh hoạt của mô hình mạng thần kinh, để cố gắng ngăn chặn nó quá mức)

Khi chúng tôi phù hợp với các mô hình, chúng tôi có thể so sánh chúng bằng MAPE (cv.ts chưa hỗ trợ MASE):

res_overall <- lapply(models, function(x) x$results[13,-1])
res_overall <- Reduce(rbind, res_overall)
row.names(res_overall) <- names(models)
res_overall <- res_overall[order(res_overall[,'MAPE']),]
round(res_overall, 2)
                 ME    RMSE     MAE   MPE MAPE
naive     91.40 1126.83  961.18  0.19 2.40
ets       91.56 1127.09  961.35  0.19 2.40
stl     -114.59 1661.73 1332.73 -0.29 3.36
neural     5.26 1979.83 1521.83  0.00 3.83
bats     294.01 2087.99 1725.14  0.70 4.32
sts     -698.90 3680.71 1901.78 -1.81 4.77
arima  -1687.27 2750.49 2199.53 -4.23 5.53
tbats   -476.67 2761.44 2428.34 -1.23 6.10

Ôi. Nó sẽ xuất hiện rằng dự báo cấu trúc của chúng tôi đã gặp may mắn. Về lâu dài, dự báo ngây thơ đưa ra dự báo tốt nhất, tính trung bình trên đường chân trời 12 tháng (mô hình arima vẫn là một trong những mô hình tồi tệ nhất). Chúng ta hãy so sánh các mô hình ở mỗi trong số 12 chân trời dự báo và xem liệu có ai trong số họ từng đánh bại mô hình ngây thơ không:

library(reshape2)
library(ggplot2)
res <- lapply(models, function(x) x$results$MAPE[1:12])
res <- data.frame(do.call(cbind, res))
res$horizon <- 1:nrow(res)
res <- melt(res, id.var='horizon', variable.name='model', value.name='MAPE')
res$model <- factor(res$model, levels=row.names(res_overall))
ggplot(res, aes(x=horizon, y=MAPE, col=model)) +
  geom_line(size=2) + theme_bw() +
  theme(legend.position="top") +
  scale_color_manual(values=c(
    "#1f78b4", "#ff7f00", "#33a02c", "#6a3d9a",
    "#e31a1c", "#b15928", "#a6cee3", "#fdbf6f",
    "#b2df8a")
    )

so sánh mô hình

Nói một cách dễ hiểu, mô hình làm mịn theo cấp số nhân luôn chọn mô hình ngây thơ (đường màu cam và đường màu xanh trùng nhau 100%). Nói cách khác, dự báo ngây thơ về "giá cuộn dây của tháng tới sẽ giống như giá cuộn dây của tháng này" chính xác hơn (ở hầu hết mọi chân trời dự báo) so với 7 mô hình chuỗi thời gian cực kỳ tinh vi. Trừ khi bạn có một số thông tin bí mật mà thị trường cuộn dây chưa biết, việc đánh bại dự báo giá cuộn dây ngây thơ sẽ vô cùng khó khăn .

Đó không bao giờ là câu trả lời mà bất cứ ai muốn nghe, nhưng nếu dự đoán độ chính xác là mục tiêu của bạn, bạn nên sử dụng mô hình chính xác nhất. Sử dụng mô hình ngây thơ.


Thật thú vị khi nhìn vào sự khác biệt của các mô hình này. NNAR nói riêng trông khác nhau. Cho rằng đây là một bộ dữ liệu nổi tiếng (& lịch sử cũ, tôi tin), liệu nó được biết là đúng và liệu một loại mô hình có tốt hơn không? (Nb, tôi biết tương đối ít về TS.)
gung - Tái lập Monica

@gung Cách tốt nhất để làm điều này là tách ra một bộ nắm giữ và kiểm tra mô hình. Lưu ý rằng mô hình đưa ra dự báo ngắn hạn tốt nhất có thể không phải là mô hình đưa ra dự báo dài hạn tốt nhất ....
Zach

Cảm ơn rất nhiều, nhưng tôi không nhận được dự báo tốt cho bộ dữ liệu trên (tôi nghĩ rằng tôi đang thiếu một số bước quan trọng ở đây). Bạn có thể xin vui lòng cho tôi biết nếu tôi thiếu cái gì
Niranjan Sonachalam

@Niranjan Bạn có thể cho chúng tôi biết / chỉ ra cách bạn kết luận rằng bạn không nhận được dự báo tốt không?
dự báo

@forecaster: Vui lòng kiểm tra tại đây pbrd.co/1DRPRsq . Tôi mới dự báo. Hãy cho tôi biết nếu bạn cần bất kỳ thông tin cụ thể. Tôi đã thử với mô hình Arima.
Niranjan Sonachalam

12

Cách tiếp cận mà bạn đã thực hiện là hợp lý. Nếu bạn chưa quen với dự báo, thì tôi muốn giới thiệu những cuốn sách sau:

  1. Phương pháp dự báo và ứng dụng của Makridakis, Wheelright và Hyndman
  2. Dự báo: Nguyên tắc và thực hành của Hyndman và Athanasopoulos.

Cuốn sách đầu tiên là một tác phẩm kinh điển mà tôi rất khuyến khích. Cuốn sách thứ hai là một cuốn sách nguồn mở mà bạn có thể tham khảo cho các phương pháp dự báo và cách nó được áp dụng bằng cách sử dụng dự báoR gói phần mềm nguồn mở . Cả hai cuốn sách cung cấp nền tảng tốt về các phương pháp mà tôi đã sử dụng. Nếu bạn nghiêm túc về dự báo, thì tôi muốn giới thiệu Nguyên tắc Dự báo của Armstrong, đó là tập hợp số lượng lớn nghiên cứu để dự báo rằng một học viên có thể thấy nó rất hữu ích.

Đến với ví dụ cụ thể của bạn về cuộn dây, nó nhắc tôi về một khái niệm về khả năng dự báo mà hầu hết các sách giáo khoa thường bỏ qua. Một số loạt như loạt của bạn chỉ đơn giản là không thể dự báo được vì nó ít mẫu hơn vì nó không thể hiện xu hướng hoặc vỗ theo mùa hoặc bất kỳ biến thể có hệ thống nào. Trong trường hợp đó tôi sẽ phân loại một loạt là ít dự báo hơn. Trước khi mạo hiểm vào các phương pháp ngoại suy, tôi sẽ xem xét dữ liệu và đặt câu hỏi, liệu chuỗi của tôi có thể dự báo được không? Trong ví dụ cụ thể này, phép ngoại suy đơn giản như dự báo đi bộ ngẫu nhiên sử dụng giá trị cuối cùng của dự báo đã được tìm thấy là chính xác nhất .

Ngoài ra một nhận xét bổ sung về mạng lưới thần kinh: Mạng lưới thần kinh nổi tiếng là thất bại trong các cuộc thi thực nghiệm . Tôi sẽ thử các phương pháp thống kê truyền thống cho chuỗi thời gian trước khi thử sử dụng mạng thần kinh cho các nhiệm vụ dự báo chuỗi thời gian.

Tôi đã cố gắng mô hình hóa dữ liệu của bạn R's forecast package, hy vọng các ý kiến ​​là tự giải thích.

coil <- c(44000, 44500, 42000, 45000, 42500, 41000, 39000, 35000, 34000, 
          29700, 29700, 29000, 30000, 30000, 31000, 31000, 33500, 33500, 
          33000, 31500, 34000, 35000, 35000, 36000, 38500, 38500, 35500, 
          33500, 34500, 36000, 35500, 34500, 35500, 38500, 44500, 40700, 
          40500, 39100, 39100, 39100, 38600, 39500, 39500, 38500, 39500, 
          40000, 40000, 40500, 41000, 41000, 41000, 40500, 40000, 39300, 
          39300, 39300, 39300, 39300, 39800)


coilts <- ts(coil,start=c(2008,4),frequency=12)

library("forecast")

# Data for modeling
coilts.mod <- window(coilts,end = c(2012,3))

#Data for testing
coil.test <- window(coilts,start=c(2012,4))

# Model using multiple methods - arima, expo smooth, theta, random walk, structural time series

#arima
coil.arima <- forecast(auto.arima(coilts.mod),h=11)

#exponential smoothing
coil.ets <- forecast(ets(coilts.mod),h=11)

#theta
coil.tht <- thetaf(coilts.mod, h=11)

#random walk
coil.rwf <- rwf(coilts.mod, h=11)

#structts
coil.struc <- forecast(StructTS(coilts.mod),h=11)


##accuracy 

arm.acc <- accuracy(coil.arima,coil.test)
ets.acc <- accuracy(coil.ets,coil.test)
tht.acc <- accuracy(coil.tht,coil.test)
rwf.acc <- accuracy(coil.rwf,coil.test)
str.acc <- accuracy(coil.struc,coil.test)

Sử dụng MAE trên dữ liệu giữ, tôi sẽ chọn ARIMA cho dự báo ngắn hạn (1 - 12 tháng). về lâu dài, tôi sẽ dựa vào dự báo đi bộ ngẫu nhiên. Xin lưu ý rằng ARIMA đã chọn một mô hình đi bộ ngẫu nhiên có độ trôi (0,1,0) + độ trôi có xu hướng chính xác hơn nhiều so với mô hình đi bộ ngẫu nhiên thuần túy trong các loại vấn đề cụ thể ngắn hạn này. Xem biểu đồ dưới đây. Điều này dựa trên chức năng chính xác như được hiển thị trong đoạn mã trên.

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

Câu trả lời cụ thể cho các câu hỏi cụ thể của bạn: Cũng là một câu hỏi tôi đã có, trước khi chuyển sang ARIMA hoặc mạng lưới thần kinh, tôi có nên làm mịn dữ liệu không? Nếu có, sử dụng cái gì?

  • Không, phương pháp dự báo tự nhiên làm mịn dữ liệu của bạn để phù hợp với mô hình.

Dữ liệu cho thấy cả Thời vụ và xu hướng.

  • Các dữ liệu trên không hiển thị xu hướng hoặc thời vụ. Nếu bạn xác định rằng dữ liệu thể hiện tính thời vụ và xu hướng, thì hãy chọn một phương pháp thích hợp.

Lời khuyên thiết thực để cải thiện độ chính xác:

Kết hợp nhiều phương pháp dự báo: - Bạn có thể thử sử dụng các phương pháp không ngoại suy như dự báo bằng cách tương tự , dự báo phán đoán hoặc các kỹ thuật khác và kết hợp chúng với các phương pháp thống kê của bạn để đưa ra dự đoán chính xác. Xem bài viết này cho lợi ích của việc kết hợp. Tôi đã thử kết hợp 5 phương pháp trên, nhưng dự đoán không chính xác như các phương pháp riêng lẻ, một lý do có thể là dự báo cá nhân là tương tự nhau. Bạn gặt hái những lợi ích của việc kết hợp dự báo khi bạn kết hợp các phương pháp khác nhau như dự báo thống kê và phán đoán.

Phát hiện và hiểu các ngoại lệ: - Dữ liệu trong thế giới thực chứa đầy các ngoại lệ. Xác định và xử lý thích hợp các ngoại lệ trong chuỗi thời gian. Đề nghị đọc bài này . Nhìn vào dữ liệu cuộn dây của bạn, sự sụt giảm trước năm 2009 có phải là một ngoại lệ không ??

Biên tập

Dữ liệu dường như tuân theo một số loại xu hướng kinh tế vĩ mô. Tôi đoán là xu hướng giảm được thấy trước năm 2009 sau sự suy thoái của nền kinh tế được thấy trong giai đoạn 2008 - 2009 và bắt đầu nhận bài 2009. Nếu đây là trường hợp, thì tất cả tôi sẽ cùng nhau tránh sử dụng bất kỳ phương pháp ngoại suy nào và thay vào đó dựa vào lý thuyết âm thanh về cách những xu hướng kinh tế này hoạt động như một xu hướng được tham chiếu bởi @GraemeWalsh.

Hi vọng điêu nay co ich

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.