计算 R 中单个 运行 中多列的自相关 [acf()]

Calculating autocorrelation [acf()] for multiple columns in single run in R

我已将包含 64 行和 15 列的数据从 excel 导入 R,以便使用 acf() 计算自相关。我去过其他类似的线程,我能找到的唯一可行代码是:

structure(list(V1 = c(24.1, 6.3, 39.1, 11.97, 23.47), V2 = c(5.63, 9.91, 19.98, 16.14, 15.76), V3 = c(21.08, 5.82, 23.5, 27.71, 3.54)), class = "data.frame", row.names = c(NA, -5L))

for(i in 1:3) {acf(data[ ,i], lag.max = 1, type = "correlation", plot = TRUE , na.action = na.exclude)}

使用这个循环,我能够获得自相关图,但是没有为自相关系数生成数学值。 我尝试为这个循环分配一个变量名,但在 运行 之后,它只返回 NULL。

我还使用了以下代码代替 for 循环:

lapply(split(A,col(A)), function(ts) acf(ts, lag.max=1))

其中,A是一个64行15列的矩阵。但这也不起作用,因为当我将导入的数据转换为矩阵和 运行 这段代码时,它显示错误“A 不是数字”,而且,我认为 ts 代表时间序列,但是当我插入数据代替ts,出现错误

1.It 最好避免使用 R 关键字,如“data”。这并不总是一个问题,但会导致混淆。

inputdata <- structure(list(V1 = c(24.1, 6.3, 39.1, 11.97, 23.47), 
                       V2 = c(5.63, 9.91, 19.98, 16.14, 15.76), 
                       V3 = c(21.08, 5.82, 23.5, 27.71, 3.54)), 
                  class = "data.frame", row.names = c(NA, -5L))

2.We 准备一个空列表来收集来自 acf:

的统计信息
results <- list()

3.You 可以使用循环或 apply 系列中的东西。但我想说一个循环可以更容易地看到发生了什么。在循环中,在每次迭代中我们将结果放入列表中。

for(i in 1:3) {
  results[[i]] <- acf(inputdata[ ,i], lag.max = 1, type = "correlation", plot = TRUE , na.action = na.exclude)
  }

acf 的帮助(使用 ?acf 访问)告诉我们它把统计数据等放在哪里。 现在我们可以通过以下方式访问分析结果:

results[[1]]$acf

returns:

, , 1

           [,1]
[1,]  1.0000000
[2,] -0.7761198

results[[2]]$acf

returns:

, , 1

         [,1]
[1,] 1.000000
[2,] 0.218416

results[[3]]$acf

returns:

 , , 1

           [,1]
[1,]  1.0000000
[2,] -0.3962866