我需要将几个ACF的情节放在一起,但我不太确定如何“保存”每个ACF的值并在以后再次接近它们。
这是我到目前为止所做的:
#Simulating
n <- 1000
Y <- c()
ACF <- c()
for (i in 1:10) {
eps <- rnorm(n, mean = 0, sd = sqrt(2)^0.5)
Y <- cbind(Y, 1/4 + cumsum(eps))
X <- acf(Y, lag.max = 100, plot = FALSE)
ACF <- cbind(ACF, X)
}
#Plotting
plot(0,0, xlim=c(0,100), ylim=c(0,1), xlab="Lags ", ylab="ACF")
for(i in 1:10){
lines(ACF[,i],col=cl[i])
}
但它不起作用,所以我希望有人可以帮助我做我应该做的事情。
答案 0 :(得分:3)
创建一个返回模拟acf
和lag
值的函数sapply
。然后使用1:10
循环遍历acf
并将模拟的lag
和plot
值转换为矩阵。现在使用基础myfun <- function( x )
{
n <- 1000
eps <- rnorm(n, mean = 0, sd = sqrt(2)^0.5)
eps <- 1/4 + cumsum(eps)
ACF <- acf(eps, lag.max = 100, plot = FALSE) # compute acf
return( list( acf = ACF[['acf']], # returns acf
lags = ACF[['lag']] ) ) # returns lag
}
ACF <- sapply(1:10, myfun) # loop through 1:10 and get acf and lag values
ACF
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# acf Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101
# lags Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101 Numeric,101
# [,8] [,9] [,10]
# acf Numeric,101 Numeric,101 Numeric,101
# lags Numeric,101 Numeric,101 Numeric,101
# using base plot function
plot(NA, xlim=c(0,100), ylim=c(0,1), xlab="Lags ", ylab="ACF")
for(i in 1:10){
lines( x = unlist(ACF[ 'lags', i ]), y = unlist( ACF[ 'acf', i ] ), col= rainbow(10)[i])
}
函数,绘制图。
{{1}}