R 在同一绘图中绘制acf和时间序列

R 在同一绘图中绘制acf和时间序列,r,plot,advanced-custom-fields,lines,R,Plot,Advanced Custom Fields,Lines,我有一个24小时频率的时间序列。我提取了一整天的数据,并分别绘制了ts和acf的结果 结果如下: 24小时计时赛 然后我执行了acf(),并绘制了结果: acf 24小时计时系列赛 我在想,将时间序列和acf()结果放在同一个图中可能会很有用,只是为了理解acf()的结果。我没有看到任何例子,所以它可能一点用处都没有,但事实是我不明白为什么它不起作用 这是我的密码: plot(trainingPeriod.1Day.ts, xaxt='n', col='blue', ylim=c(-100,

我有一个24小时频率的时间序列。我提取了一整天的数据,并分别绘制了ts和acf的结果

结果如下:

24小时计时赛

然后我执行了
acf()
,并绘制了结果:

acf 24小时计时系列赛

我在想,将时间序列和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()
信息,并使用
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')

问题在于,第一个绘图的水平轴与时间序列相关,而不是小时序列(0到23)。如果将acf值相乘以固定垂直比例(Brendan A提到),并对x轴使用相同的时间段,则应得到所需的绘图。下面是我生成以下绘图的代码


trainingPeriod.1Day.ts我认为问题可能在于两个图的规模。根据定义,您试图添加的条不能超过1(或-1),但数据中的值看起来像是从0到大约600的范围。您能在问题中发布
dput(trainingPeriod.1Day.ts)
的输出吗?谢谢Brendan。我试过绘制100*acf.values,但仍然没有打印任何内容。非常感谢Calvin@埃琳娜,如果答案是正确的,那么请接受并投票表决。我很乐意帮忙。
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')
> 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")
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)