我正在尝试填写 2 个缺失值。我的讲师建议使用以下阶段的最大自相关的结果:
104 <= x <= 622
)中的数字替换两个缺失数据来进行实验。我正在尝试使用 R 计算它,但我使用的代码发现了一个错误,我对继续计算感到困惑。这是代码
AirPassengers[43]<-NA
AirPassengers[100]<-NA
Fun_mv = function(g,h){
g=104:622
n=length(g)
empty_matrix=matrix(nrow = n, ncol = n, dimnames = list(g,g))
for (i in g){
for (j in g){
AirPassengers[43]=i
AirPassengers[100]=j
empty_matrix[i,j]=acf(AirPassengers)$acf[2]
}
}
}
h=outer(g,g,FUN = Fun_mv);h
非常感谢任何帮助!
获取正确的代码
不需要调用
outer
,函数的双循环已经完成了。NA
到 AirPassengers[43]
的分配在内循环之外。这 acf(., plot = FALSE)
节省了很多时间。
Fun_mv <- function(g, h){
n <- length(g)
empty_matrix <- matrix(nrow = n, ncol = n, dimnames = list(g, g))
for (i in seq_along(g)){
AirPassengers[43] <- g[i]
for (j in seq_along(g)){
AirPassengers[100] <- h[j]
empty_matrix[i, j] <- acf(AirPassengers, plot = FALSE)$acf[2]
}
}
empty_matrix
}
AirPassengers[43] <- NA
AirPassengers[100] <- NA
g <- 104:622
h <- Fun_mv(g, g)
str(h)
#> num [1:519, 1:519] 0.871 0.871 0.871 0.871 0.871 ...
#> - attr(*, "dimnames")=List of 2
#> ..$ : chr [1:519] "104" "105" "106" "107" ...
#> ..$ : chr [1:519] "104" "105" "106" "107" ...
创建于 2023-05-13 与 reprex v2.0.2