сюжетная линия и временные ряды на одном сюжете - PullRequest
0 голосов
/ 09 июня 2018

У меня есть временной ряд с частотой 24 часа.Я извлек 1 полный день данных, и я индивидуально нанес на график ts и результат acf.

Вот результаты:

24-часовая серия enter image description here

затем я выполнил acf() и нанесу результаты:

acf на 24-часовой серии enter image description here

Iдумал, что было бы полезно собрать время серии и результат acf () в одном графике, просто для понимания результата acf ().Я не видел ни одного примера, и поэтому, может быть, он вообще бесполезен, но дело в том, что я не понимаю, почему это не работает

вот мой код:

plot(trainingPeriod.1Day.ts, xaxt='n', col='blue', ylim=c(-100, 700))
tt <- time(trainingPeriod.1Day.ts)
ix <- seq(0, length(tt) - 1, by=1)
axis(side = 1, at = tt[ix], labels = FALSE, xlab='Hour of the day')
labs <- hour(date_decimal(index(trainingPeriod.1Day.ts)))
axis(side = 1, at = tt[ix], labels = labs[ix], tcl = -0.7, cex.axis = 0.7)

Примените acf() к окну моей серии:

acf.24h <- acf(trainingPeriod.1Month.ts, lag.max = 24, plot = FALSE)

Подготовьте данные для добавления acf() информации и используйте lines() функцию:

acf.values <-acf.24h$acf[-1]
acf.sequence <- length(acf.values)
lines(seq(from=0 , by = 1, length.out = acf.sequence), acf.values, type='h')

При добавлении последней командыlines (), ничего не отображается, и у меня нет ошибки в окне консоли.У вас есть идея, что это может происходить?

Вот вывод dput ()

> dput(trainingPeriod.1Day.ts)
structure(c(19L, 10L, 32L, 24L, 65L, 279L, 437L, 543L, 293L, 
188L, 280L, 252L, 209L, 181L, 203L, 214L, 264L, 229L, 148L, 108L, 
55L, 72L, 47L, 32L), .Tsp = c(2018.08767123288, 2018.09029680365, 
8760), class = "ts")

1 Ответ

0 голосов
/ 31 июля 2018

Проблема в том, что горизонтальная ось для первого графика связана с временным рядом, а не с последовательностью часов (от 0 до 23).Если вы умножите значения acf, чтобы зафиксировать вертикальный масштаб (упомянутый Бренданом А.) и использовать те же периоды времени для оси x, вы должны получить график, равный одному.Вот мой код для генерации следующего сюжета.

enter image description here

trainingPeriod.1Day.ts <- structure(c(19L, 10L, 32L, 24L, 65L, 279L, 437L, 543L, 293L, 
            188L, 280L, 252L, 209L, 181L, 203L, 214L, 264L, 229L, 148L, 108L, 
            55L, 72L, 47L, 32L), .Tsp = c(2018.08767123288, 2018.09029680365, 
                                          8760), class = "ts")
par(mar=c(4,4,2,4))
plot(trainingPeriod.1Day.ts
     ,xaxt='n'
     ,col='blue'
     ,ylim=c(-100, 700)
     )
tt <- time(trainingPeriod.1Day.ts)
ix <- seq(0, length(tt) - 1, by=1)
axis(side = 1, at = tt[ix], labels = FALSE, xlab='Hour of the day')
labs <- hour(date_decimal(index(trainingPeriod.1Day.ts)))
axis(side = 1
     , at = tt
     ,labels = ix
     ,tcl = -0.7
     ,cex.axis = 0.7)

acf.24h <- acf(trainingPeriod.1Day.ts
               ,lag.max = 24
               ,plot = FALSE)

acf.values <-acf.24h$acf[-1]
acf.sequence <- length(acf.values)
lines(tt[1+seq(1,acf.sequence,1)]
      ,acf.values*500
      ,type='h'
      ,col='red'
      )
axis(side=4
     ,at=500*seq(-0.2,1,0.2)
     ,labels=seq(-0.2,1,0.2)
     ,main='Correlation'
     )
mtext("Correlation", side = 4, line = 3)
...