如何在R中的同一图中绘制矩阵每一列的ACF

问题描述

我用来自MA(3)流程的200个观察值模拟了10种实现,并绘制了它们。我使用的代码如下,结果如图所示:

enter image description here

现在,我想估算每个实现的自相关函数(ACF),并在同一图中绘制它们,如下所示:

enter image description here

我想通过连接点来创建不同颜色的线条来绘制这些图形,而不是用尖峰来绘制经典的ACF图形。我尝试了一些方法,但是我不知道该怎么做。有什么帮助吗?

我用于第一部分的代码(我正在RStudio中使用R):

sim1 <- replicate(10,arima.sim(model = list(ma=c(0.7,-0.7,-0.4),order=c(0,3)),n = 200))
matplot(sim1,lty=1,type="l",col=rainbow(11))

解决方法

如果不使用ggplot2,我不知道该怎么做,所以在这里:

首先,进行一些修改。我将模拟次数减少到3,因此更容易理解图表。我添加了一个Time列作为x轴;我使用apply为每个模拟创建了ACF,并将其存储在新的df中。而且我将数据转为长期使用ggplot

sim1 <- cbind("Time"=1:200,replicate(3,arima.sim(model = list(ma=c(0.7,-0.7,-0.4),order=c(0,3)),n = 200)))
acfsim1 <- cbind("Lag"=1:200,apply(sim1[,2:4],2,function(x){acf(x,200,plot=FALSE)$acf}))

dfsim1 = tidyr::pivot_longer(as.data.frame(sim1),cols=2:4)
dfacfsim1 = tidyr::pivot_longer(as.data.frame(acfsim1),cols=2:4)

现在为剧情。首先是您已经拥有的一个:

library(ggplot2)

ggplot(dfsim1,aes(y=value,color=name,x=Time)) +
  geom_line()

输出:

enter image description here

现在要使用的图形,首先使用线形图:

ggplot(dfsim1,x=Lag)) +
  geom_segment(data=dfacfsim1)

输出:

enter image description here

现在有了细分图:

ggplot(dfsim1,x=Lag)) +
  geom_segment(data=dfacfsim1,aes(xend=Lag,yend=0))

输出:

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...