R'de kesintiye uğramış zaman serileri analizi için kaynaklar


12

R için oldukça yeniyim. Zaman serisi analizlerini okumaya çalıştım ve çoktan bitirdim

  1. Shumway ve Stoffer'ın Zaman serisi analizi ve uygulamaları 3. Baskı ,
  2. Hyndman'ın Mükemmel Tahmini: İlkeler ve Uygulama
  3. Avril Coghlan'ın R Serilerini Zaman Serisi Analizi için Kullanma
  4. A. Ian McLeod ve arkadaşları R ile Zaman Serisi Analizi
  5. Dr. Marcel Dettling'in Uygulamalı Zaman Serisi Analizi

Düzenleme: Bu nasıl ele emin değilim ama Cross Validated dışında yararlı bir kaynak buldum. Kimsenin bu soruyla ilgili tökezlemesi durumunda buraya eklemek istedim.

İlaç kullanım araştırmalarında kesintiye uğramış zaman serileri çalışmalarının bölümlere ayrılmış regresyon analizi

7 yıl boyunca günlük olarak ölçülen tüketilen öğelerin (veri sayımı) sayısının tek değişkenli bir zaman serisine sahibim. Kabaca zaman serisinin ortasında çalışma popülasyonuna bir müdahale uygulanmıştır. Bu müdahalenin derhal bir etki yaratması beklenmemektedir ve etki başlangıcının zamanlaması esasen bilinmemektedir.

Hyndman'ın forecastpaketini kullanarak, müdahale öncesi verilere bir ARIMA modeli yerleştirdim auto.arima(). Ancak, eğilimde istatistiksel olarak önemli bir değişiklik olup olmadığını ve miktarı nicelleştirip belirlemediğini cevaplamak için bu uyumu nasıl kullanacağımdan emin değilim.

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

Özellikle R'de kesintiye uğramış zaman serileri analizi ile ilgili herhangi bir kaynak var mı? Ben bulduk bu SPSS ITS ile konu işlemi ancak R. bu tercüme edemedik


Müdahalenin istatistiksel olarak anlamlı bir etkisi olup olmadığı konusunda çıkarım yapmak mı yoksa daha iyi tahminler elde etmek için müdahaleyi modellemek mi istiyorsunuz ? Verileri kullanılabilir hale getirebilir misiniz?
Stephan Kolassa

@StephanKolassa Kesinlikle! Amacım çıkarım yapmak. Demek istediğim daha iyi göstermek için bir Edit'de kukla veriler sunacağım.
dais.johns

@StephanKolassa Veriler en iyi şekilde sağlandı.
dais.johns

Önceki araştırmalar, müdahalenin etkisinin +/-% 5 değişim ölçeğinde olduğunu ileri sürmektedir.
dais.johns

@StephanKolassa Gerçek kullanılabilir veriler sağlandı
dais.johns

Yanıtlar:


4

Bu değişim noktası analizi olarak bilinir. R paketi changepointbunu sizin için yapabilir: buradaki belgelere bakın (literatüre referanslar dahil): http://www.lancs.ac.uk/~killick/Pub/KillickEckley2011.pdf


Teşekkür ederim. Buna bakıyorum. Anlayabildiğim kadarıyla bu, serideki olası değişim noktalarını hesaplayacaktır, ancak eğilim farkını analiz etmeyecektir. Bu varsayım yanlışsa paketi yüzeysel olarak gözden geçiremedim özür dilerim.
dais.johns

Değişiklik noktasını belirledikten sonra, verileri iki zaman serisine bölebilirsiniz (değişiklik noktasından önce ve sonra) ve iki zaman serisinin parametrelerini ayrı ayrı tahmin edebilirsiniz. Birkaç öneri daha: Verileriniz güçlü bir mevsimsel eğilime sahip olduğundan, bu değişiklik noktası analizinden önce kaldırılmalıdır; ve eğer bir ARIMA modeli kullanacaksanız, değişim noktası analizinden önce de farklılıklar yapılmalıdır (ya da alternatif olarak, bazı daha özel prosedürler kullanmanız gerekir).
Brent Kerby

Önerileriniz için teşekkür ederim. Uygulamayı deneyeceğim ve bu sorunu çözerse "cevaplandı" olarak işaretleyeceğim.
dais.johns


0

Bayesci bir yaklaşım mcpiçin, artıklara (günlük alanında) otomatik yeniden bastırma uygulanmış bir Poisson veya Binom modeline (sabit aralıklı sürelerden sayımlarınız olduğu için) sığdırmak için kullanabilirsiniz . Ardından, çapraz doğrulamayı kullanarak iki segmentli bir modeli tek segmentli bir modelle karşılaştırın.

Başlamadan önce, bu veri kümesi için bu modelin iyi uymadığını ve çapraz doğrulamanın kararsız göründüğünü unutmayın. Bu yüzden aşağıdakileri yüksek riskli senaryolarda kullanmaktan kaçınırım, ancak genel bir yaklaşımı gösterir:

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

Mevcut veri kümesi için bu,

       elpd_diff se_diff
model2    0.0       0.0 
model1 -459.1      64.3 

Yani, elpd_diff/se_diffnull model lehine yaklaşık 7'lik bir oran (değişiklik yok). Olası iyileştirmeler şunları içerir:

  • periyodik eğilimi sin()veya kullanarak modelleme cos().
  • değişikliğin muhtemel yeri hakkında önceden bilgi eklemek, ör prior = list(cp_1 = dnorm(1999.8, 0.5).

Otomatik depresyonun modellenmesi, model karşılaştırması yapılması ve web sitesinin önceliklerininmcp ayarlanması hakkında daha fazla bilgi edinin . Açıklama: Ben geliştiriciyim mcp.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.