我正在尝试使用 R 中的 imputeTS 包在单变量时间序列中估算 NA 值,当我尝试使用 na_kalman() 通过卡尔曼平滑进行估算时,我注意到了一些奇怪的事情。
我的数据是日平均温度数据,所以它类似于下面代码中的伪数据,它用 NA 模拟了 2 年的数值数据:
tseries=ts(sample(c(1:10,NA),730,replace = TRUE),start = 1990,frequency = 365)
现在是奇怪的部分:我注意到如果我尝试将这个时间序列传递给 na_kalman() 函数,它似乎总是让我的 R 会话崩溃。
library(imputeTS)
kal.imp<-na_kalman(tseries) #fails
但是,如果我使用与频率为 1 的数值向量或时间序列相同的数据,它似乎工作得很好。出于某种原因,这似乎表明问题出在时间序列的频率上。
如果我尝试使用卡尔曼平滑作为 na_seadec() 的选项,这似乎也会发生,无论 find_frequency 是否为 TRUE 或 FALSE:
sd.kal.imp.false<-na_seadec(tseries, algorithm = "kalman", find_frequency = FALSE)#fails
sd.kal.imp.true<-na_seadec(tseries, algorithm = "kalman", find_frequency = TRUE) #also fails
谁能帮我理解为什么会这样?