R에서 중단 된 시계열 분석을위한 리소스


12

나는 R에 상당히 익숙하지 않다. 나는 시계열 분석을 읽으려고 시도했고 이미 끝났다.

  1. Shumway 및 Stoffer의 시계열 분석 및 해당 애플리케이션 3rd Edition ,
  2. Hyndman의 우수한 예측 : 원칙과 실습
  3. Avril Coghlan의 시계열 분석에 R 사용
  4. A. Ian McLeod 외 R을 이용한 시계열 분석
  5. Marcel Dettling 박사의 응용 시계열 분석

편집 : 이것을 처리하는 방법을 모르겠지만 Cross Validated 외부에서 유용한 리소스를 찾았습니다. 누군가이 질문에 걸려 넘어 질 경우를 대비하여 여기에 포함하고 싶었습니다.

약물 사용 연구에서 중단 된 시계열 연구의 세그먼트 회귀 분석

7 년 동안 매일 측정 된 소비 품목 수 (수 데이터)에 대한 일 변량 시계열이 있습니다. 시계열의 대략 중간에 연구 집단에 개입이 적용되었다. 이러한 개입은 즉각적인 효과를 낳을 것으로 예상되지 않으며 효과의 시작 시점은 본질적으로 알 수 없습니다.

Hyndman의 forecast패키지를 사용 하여 ARIMA 모델을 사용하여 사전 개입 데이터에 맞췄습니다 auto.arima(). 그러나 통계적으로 유의미한 추세 변화가 있었는지 양을 수량화하기 위해이 적합치를 사용하는 방법을 잘 모르겠습니다.

# 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")

R에서 중단 된 시계열 분석을 다루는 리소스가 있습니까? 내가 발견 한 SPSS에서 ITS와 거래를하지만 R.이를 번역 할 수 없었다


개입이 통계적으로 유의 한 영향을 미쳤는 지에 대한 추론 을 원하십니까 , 아니면 더 나은 예측 을 얻기 위해 개입을 모델링하고 싶 습니까? 데이터를 사용할 수있게 만들 수 있습니까?
Stephan Kolassa

트윗 담아 가기 내 목표는 추론하는 것입니다. 내 요점을 더 잘 설명하기 위해 편집에서 더미 데이터를 제공합니다.
dais.johns

@StephanKolassa 내 능력을 최대한 발휘하기 위해 데이터를 제공했습니다.
dais.johns

이전 연구에 따르면 중재 영향은 +/- 5 %의 변화에 ​​영향을 미칩니다.
dais.johns

@StephanKolassa 실제 사용 가능한 데이터 제공
dais.johns

답변:


4

이것을 변경점 분석이라고합니다. R 패키지 changepoint가이를 수행 할 수 있습니다. 여기에있는 문서를 참조하십시오 (문헌에 대한 참조 포함) : http://www.lancs.ac.uk/~killick/Pub/KillickEckley2011.pdf


감사합니다. 나는 이것을 조사하고있다. 내가 알 수있는 한이 시리즈의 가능한 변경 점을 계산하지만 추세 차이는 분석하지 않습니다. 이 가정이 틀린 경우 죄송합니다. 외형 이외의 패키지를 검토 할 수 없었습니다.
dais.johns

변경점을 식별 한 후 데이터를 두 개의 시계열 (변경점 전후)로 분할하고 두 시계열의 매개 변수를 개별적으로 추정 할 수 있습니다. 몇 가지 추가 제안 : 데이터에 계절적 추세가 강하므로 변경점 분석 전에 제거해야합니다. ARIMA 모델을 사용하려는 경우 변경점 분석 전에 차등화를 수행해야합니다 (또는 더 특수한 절차를 사용해야합니다).
브렌트 커비

구현을 시도하여 문제가 해결되면 "답변"으로 표시되도록 제안 해 주셔서 감사합니다.
dais.johns

2

반복 측정 단위 계층 모델을 제안합니다. 이 방법은 각 개인이 자신의 통제 역할을하므로 강력한 결과를 제공해야합니다. UCLA에서이 링크를 확인하십시오 .


0

베이지안 접근의 mcp경우 잔차 (로그 공간)에 자동 회귀가 적용된 포아송 또는 이항 모형 (고정 간격 구간의 수를 가지므로)에 적합을 사용할 수 있습니다 . 그런 다음 교차 검증을 사용하여 2 세그먼트 모델을 1 세그먼트 모델과 비교하십시오.

시작하기 전에이 데이터 집합의 경우이 모델이 적합하지 않으며 교차 유효성 검사가 불안정 해 보입니다. 따라서 스테이크가 많은 시나리오에서는 다음을 사용하지 말고 일반적인 접근 방식을 보여줍니다.

# 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)

현재 데이터 세트의 경우

       elpd_diff se_diff
model2    0.0       0.0 
model1 -459.1      64.3 

즉, elpd_diff/se_diffnull 모델을 선호 하는 비율은 약 7입니다 (변경 없음). 가능한 개선 사항은 다음과 같습니다.

  • 사용주기적인 경향을 모델링 sin()하거나 cos().
  • 변경 가능성이있는 위치에 대한 사전 정보 추가 (예 :) prior = list(cp_1 = dnorm(1999.8, 0.5).

자동 회귀 모델링, 모델 비교 및 웹 사이트 우선mcp 설정에 대해 자세히 알아보십시오 . 공개 : 저는 개발자입니다 mcp.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.