R 使用自相关填补缺失值

问题描述 投票:0回答:1

我正在尝试填写 2 个缺失值。我的讲师建议使用以下阶段的最大自相关的结果:

  1. 从数据集中查找最小和最大数据。假设我通过省略两个数据来使用 AirPassanger 数据。最小数据为104,最大数据为622。
  2. 通过找到滞后1中的自相关(ACF)对两个缺失数据的每个组合进行计算。通过用最小和最大范围(
    104 <= x <= 622
    )中的数字替换两个缺失数据来进行实验。
  3. 缺失数据的插补是根据最大的自相关来选择的。
  4. 预期输出的形式是推算时间序列自相关结果的矩阵。

我正在尝试使用 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

非常感谢任何帮助!

获取正确的代码

r time-series missing-data lag autocorrelation
1个回答
0
投票

不需要调用

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

© www.soinside.com 2019 - 2024. All rights reserved.