Tài nguyên cho phân tích chuỗi thời gian bị gián đoạn trong R


12

Tôi còn khá mới với R. Tôi đã cố gắng đọc phân tích chuỗi thời gian và đã hoàn thành

  1. Phân tích chuỗi thời gian của Shumway và Stoffer và các ứng dụng của nó Phiên bản thứ 3 ,
  2. Dự báo tuyệt vời của Hyndman : nguyên tắc và thực hành
  3. Avril Coghlan's Sử dụng R để phân tích chuỗi thời gian
  4. A. Ian McLeod et al Phân tích chuỗi thời gian với R
  5. Phân tích chuỗi thời gian áp dụng của Tiến sĩ Marcel Dettling

Chỉnh sửa: Tôi không chắc chắn cách xử lý việc này nhưng tôi đã tìm thấy một tài nguyên hữu ích bên ngoài Xác thực chéo. Tôi muốn đưa nó vào đây trong trường hợp có ai vấp phải câu hỏi này.

Phân tích hồi quy phân đoạn của các nghiên cứu chuỗi thời gian bị gián đoạn trong nghiên cứu sử dụng thuốc

Tôi có một chuỗi thời gian đơn biến về số lượng vật phẩm tiêu thụ (dữ liệu đếm) được đo hàng ngày trong 7 năm. Một can thiệp đã được áp dụng cho dân số nghiên cứu vào khoảng giữa chuỗi thời gian. Can thiệp này dự kiến ​​sẽ không tạo ra hiệu quả ngay lập tức và thời điểm bắt đầu có hiệu lực về cơ bản là không thể biết được.

Sử dụng forecastgói của Hyndman, tôi đã trang bị mô hình ARIMA cho dữ liệu trước can thiệp bằng cách sử dụng auto.arima(). Nhưng tôi không chắc chắn làm thế nào để sử dụng sự phù hợp này để trả lời liệu đã có một sự thay đổi đáng kể về mặt thống kê trong xu hướng và định lượng số lượng.

# for simplification I will aggregate to monthly counts
# I can later generalize any teachings the community supplies
count <- c(2464, 2683, 2426, 2258, 1950, 1548, 1108,  991, 1616, 1809, 1688, 2168, 2226, 2379, 2211, 1925, 1998, 1740, 1305,  924, 1487, 1792, 1485, 1701, 1962, 2896, 2862, 2051, 1776, 1358, 1110,  939, 1446, 1550, 1809, 2370, 2401, 2641, 2301, 1902, 2056, 1798, 1198,  994, 1507, 1604, 1761, 2080, 2069, 2279, 2290, 1758, 1850, 1598, 1032,  916, 1428, 1708, 2067, 2626, 2194, 2046, 1905, 1712, 1672, 1473, 1052,  874, 1358, 1694, 1875, 2220, 2141, 2129, 1920, 1595, 1445, 1308, 1039,  828, 1724, 2045, 1715, 1840)
# for explanatory purposes
# month <- rep(month.name, 7)
# year <- 1999:2005
ts <- ts(count, start(1999, 1))
train_month <- window(ts, start=c(1999,1), end = c(2001,1))
require(forecast)
arima_train <- auto.arima(train_month)
fit_month <- Arima(train_month, order = c(2,0,0), seasonal = c(1,1,0), lambda = 0)
plot(forecast(fit_month, 36)); lines(ts, col="red")

Có tài nguyên nào đặc biệt xử lý phân tích chuỗi thời gian bị gián đoạn trong R không? Tôi đã tìm thấy giao dịch này với ITS trong SPSS nhưng tôi chưa thể dịch nó sang R.


Bạn có muốn suy luận về việc liệu can thiệp có ảnh hưởng đáng kể về mặt thống kê hay bạn muốn mô hình hóa can thiệp để có được dự báo tốt hơn ? Và bạn có thể làm cho dữ liệu có sẵn?
Stephan Kolassa

@StephanKolassa Chắc chắn! Mục đích của tôi là làm suy luận. Tôi sẽ cung cấp dữ liệu giả trong Chỉnh sửa để minh họa rõ hơn quan điểm của tôi.
dais.johns

@StephanKolassa Dữ liệu được cung cấp cho khả năng tốt nhất của tôi.
dais.johns

Nghiên cứu trước đây cho thấy sự can thiệp ảnh hưởng đến mức độ thay đổi +/- 5%.
dais.johns

@StephanKolassa Cung cấp dữ liệu có thể sử dụng thực tế
dais.johns

Câu trả lời:


4

Điều này được gọi là phân tích điểm thay đổi. Gói R changepointcó thể làm điều này cho bạn: xem tài liệu ở đây (bao gồm cả tài liệu tham khảo cho tài liệu): http://www.lancs.ac.uk/~killick/Pub/KillickEckley2011.pdf


Cảm ơn bạn. Tôi đang xem xét điều này. Theo như tôi có thể nói điều này sẽ tính toán các điểm thay đổi có thể có trong chuỗi, nhưng sẽ không phân tích sự khác biệt về xu hướng. Tôi xin lỗi nếu giả định này không chính xác, tôi không thể xem lại gói khác ngoài bề ngoài.
dais.johns

Sau khi xác định điểm thay đổi, bạn có thể chia dữ liệu thành hai chuỗi thời gian (trước và sau điểm thay đổi) và ước tính các tham số của chuỗi hai thời gian một cách riêng biệt. Một vài gợi ý nữa: vì dữ liệu của bạn có xu hướng theo mùa mạnh mẽ, nên xóa dữ liệu này trước khi phân tích điểm thay đổi; và nếu bạn định sử dụng mô hình ARIMA, thì việc phân biệt cũng nên được thực hiện trước khi phân tích điểm thay đổi (hoặc, thay vào đó, bạn sẽ cần sử dụng một số quy trình chuyên biệt hơn).
Brent Kerby

Cảm ơn bạn đã gợi ý, tôi sẽ cố gắng thực hiện và sẽ đánh dấu là "đã trả lời" nếu điều này giải quyết được vấn đề.
dais.johns

2

Tôi sẽ đề nghị một mô hình phân cấp các biện pháp lặp đi lặp lại. Phương pháp này sẽ cung cấp kết quả mạnh mẽ vì mỗi cá nhân sẽ đóng vai trò là người kiểm soát của chính họ. Hãy thử kiểm tra liên kết này từ UCLA.


0

Đối với cách tiếp cận Bayes, bạn có thể sử dụng mcpđể khớp với mô hình Poisson hoặc Binomial (vì bạn đã tính từ các khoảng thời gian cố định) với tính năng tự động áp dụng cho phần dư (trong không gian nhật ký). Sau đó so sánh mô hình hai phân đoạn với mô hình một phân đoạn bằng cách sử dụng xác thực chéo.

Trước khi chúng tôi bắt đầu, lưu ý rằng đối với tập dữ liệu này, mô hình này không phù hợp và xác thực chéo trông không ổn định. Vì vậy, tôi sẽ không sử dụng những điều sau đây trong các tình huống cổ phần cao, nhưng nó minh họa một cách tiếp cận chung:

# Fit the change point model
library(mcp)
model_full = list(
  count ~ 1 + ar(1),  # intercept and AR(1)
  ~ 1  # New intercept
)
fit_full = mcp(model_full, data = df, family = poisson(), par_x = "year")


# Fit the null model
model_null = list(
  count ~ 1 + ar(1)  # just a stable AR(1)
)
fit_null = mcp(model_null, data = df, family = poisson(), par_x = "year")

# Compare predictive performance using LOO cross-validation
fit_full$loo = loo(fit_full)
fit_null$loo = loo(fit_null)
loo::loo_compare(fit_full$loo, fit_null$loo)

Đối với tập dữ liệu hiện tại, kết quả này trong

       elpd_diff se_diff
model2    0.0       0.0 
model1 -459.1      64.3 

Tức là, elpd_diff/se_difftỷ lệ khoảng 7 nghiêng về mô hình null (không thay đổi). Những cải tiến có thể bao gồm:

  • mô hình hóa xu hướng định kỳ bằng cách sử dụng sin()hoặc cos().
  • thêm thông tin trước về vị trí có thể thay đổi, ví dụ : prior = list(cp_1 = dnorm(1999.8, 0.5).

Đọc thêm về mô hình tự phát, thực hiện so sánh mô hình và thiết lập các mục sư mcptrang web . Tiết lộ: Tôi là nhà phát triển của mcp.

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.