计算 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
我已将包含 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