/ / Анализ на времеви редове в R: Честотната стойност в ts () функцията срещу закъснение в acf графика - r, времеви редове

Анализ на времевата серия в R: Честота в ts () функция срещу lag в acf парцел - r, времева серия

Аз съм начинаещ в анализа на времевите редове. Имам месечни данни за продажбите за 60 месеца, от януари-2009 до декември-20013, и се опитвам да предвидя продажбите за следващите 6 месеца чрез ARIMA модел. Четох данните и ги преобразувах в обект от динамични редове по следния начин:

 data <- read.csv(file="monthlySalesData.csv", header=TRUE)
dataInTimeSeris <- ts(data, frequency = 12, start=c(2009,1), end=c(2013,12))

Когато се опитвам да се направи ACF () парцел за определяне назакъснение, след което моята автокорелация угасва до нула, тогава получавам скала на закъснението на ос X в десетичните знаци. Нямам достатъчно привилегии да публикувам изображение, но стойностите на закъснението по оста X са в десетичен знак с макс лаг 1.5. Стойностите на ACF с графиката = FALSE също са странни (не показва закъснение, за което е изчислил автокорелация). Не мога да го интерпретирам и не мога да намеря брой лагове, след които автокорелацията угасва до нула.

 acf(dataInTimeSeries, plot=FALSE)

Autocorrelations of series ‘dataInTimeSeries’, by lag

0.0000 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 0.8333
1.000  0.642  0.588  0.490  0.401  0.320  0.311  0.269  0.178  0.198  0.229
0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167
0.271  0.358  0.240  0.210  0.092  0.135  0.098

Какъв е проблемът - има ли някакъв проблем с R настройките, или импортирането на данни или функцията ts ()? И ако това е начинът, по който се показват графиките за месечните данни, как да го тълкуваме?

Благодаря предварително!!

Отговори:

4 за отговор № 1

Десетичните знаци, които виждате, са само години, напр. 0.0833 = 1/12 година, 0.1667 = 2/12 година и още.

За да получите графиката на ACF с лаги като месеци, можете да опитате нещо като:

## Lacking reproducible example, I use simulated monthly data
tt <- ts(arima.sim(list(order=c(1,0,0), ar=0.4),60), start=2001, deltat=1/12)
## Calculate, but not plot, acf
acfpl <- acf(tt, plot=FALSE)
## Transform the lags from years to months
acfpl$lag <- acfpl$lag * 12

## Plot the acf
plot(acfpl, xlab="Lag (months)")

въведете описанието на изображението тук


Доколкото разбирам проблема, с който се занимаватеидентифицира поръчките на ARMA. За да направите това, ви трябват както парцелите ACF, така и PACF. Когато казвате "умират до нула", не трябва да очаквате стойностите да са равни на нула след известно закъснение. Стойностите в 95% доверителен интервал (прекъснати сини линии) не са статистически значими (проверете също бележките в ?plot.acf).

Определянето на реда на ARIMA модел може да бъдесложно, но има някои правила, които можете да следвате. Например процесите AR (p) моделите имат ACF като затихвана експоненциална / синусова функция и PACF с p значителни забавяния. Например MA (q) процеси са обратното.

Просто за това как изглежда за тези два прости случая, аз използвам arima.sim за симулиране на две динамични редове, ARIMA (1,0,0) и ARIMA (0,0,1).

set.seed(1234)
arima100 <- arima.sim(list(order=c(1,0,0), ar=0.9), n=500)
arima001 <- arima.sim(list(order=c(0,0,1), ma=0.9), n=500)

par(mfrow=c(2,2), bycol=TRUE)
acf(arima100); acf(arima001)
pacf(arima100); pacf(arima001)

Така се получава следната графика:

въведете описанието на изображението тук

ARIMA (1,0,0): ACF се разпада до нула и PACF има едно значително забавяне. ARIMA (0,0,1): ACF има едно значително закъснение (след lag-0, което е винаги 1) и PACF се появява като заглушена синусова функция.

Сега, просто като погледна вашия АКФ, бих посмял да кажа две неща:

  • Процесът ви вероятно има термин AR (трябва да провери и PACF)
  • Възможно е да има сезонност във вашите данни заради скока на 12-тата закъснение, т.е. една година (можете да проверите това, като погледнете графиката на данните си)

Няколко стъпки, които можете да следвате:

  • Вземете разлики, ако в данните ви се забележи тенденция
  • Вземете разликите в лаг 12, ако имате сезонна сезонна дейност
  • Начертайте ACF и PACF на вашите недиференцирани и диференцирани данни
  • Подходящи модели arima и проверете остатъците
  • Ако имате няколко модела кандидати, сравнете техните стойности на AIC или BIC.

Също така чете добра книга (използвах Анализ на времевите серии от Хенрик Мадсен) или бележки от лекциите (те изглеждат добре) може да ви помогне много.


-1 за отговор № 2

Използвайки coredata() също ще свърши работа:

acf(coredata(dataInTimeSeries))