问题描述
我用来自MA(3)流程的200个观察值模拟了10种实现,并绘制了它们。我使用的代码如下,结果如图所示:
现在,我想估算每个实现的自相关函数(ACF),并在同一图中绘制它们,如下所示:
我想通过连接点来创建不同颜色的线条来绘制这些图形,而不是用尖峰来绘制经典的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()
输出:
现在要使用的图形,首先使用线形图:
ggplot(dfsim1,x=Lag)) +
geom_segment(data=dfacfsim1)
输出:
现在有了细分图:
ggplot(dfsim1,x=Lag)) +
geom_segment(data=dfacfsim1,aes(xend=Lag,yend=0))
输出: