R imputeTS 包中 na.kalman 函数的奇怪行为

Strange behavior of the na.kalman function from the R imputeTS package

我正在试验 imputeTS 包中的函数。这个包提供了几个函数来估算单变量时间序列数据中的缺失值。我测试了它们,它们都很棒,除了 na_kalman 函数。此函数更改原始数值向量。下面是一个例子。

# Load packages
library(imputeTS)

# Set seeds
set.seed(123)

# Generate 10 random number
dat <- rnorm(10)

# Replace the first 10 numbers to be NA
dat[1:5] <- NA

# Check the numbers in dat
dat
 [1]         NA         NA         NA         NA         NA  1.7150650  0.4609162 -1.2650612 -0.6868529
[10] -0.4456620

如您所见,我创建了一个包含 10 个数字的向量,而前 5 个是 NA

# Apply the na_kalman function
dat2 <- na_kalman(dat)

# Check the numbers in dat2
dat2
[1]  1.7150650  1.7150650  1.7150650  1.7150650  1.7150650  1.7150650  0.4609162 -1.2650612 -0.6868529
[10] -0.4456620

# Check the numbers in dat again
dat
     [1]  1.7150650  1.7150650  1.7150650  1.7150650  1.7150650  1.7150650  0.4609162 -1.2650612 -0.6868529
[10] -0.4456620

似乎 dat2 显示 na_kalman 函数成功地估算了 NA。但是,原始向量 dat 也发生了变化。这是我想避免的行为。我想知道有没有办法让na_kalman不改变原来的向量

备注

  1. 当我将向量长度更改为较大的数字时,例如rnorm(1000),我注意到dat中的所有缺失值都将更改为第一个非-原始数据中的缺失值。似乎 dat 不仅仅是 dat2na_kalman 函数之后的副本。

  2. 我还测试了 imputeTS 包中的其他函数,例如 na_interpolationna_locfna_mean。他们没有这种行为。 dat 在 运行 这些函数之后仍然是相同的向量。

这里是 imputeTS 包的作者。感谢您的电子邮件。

这确实不是一个功能...它是一个小错误。 我直接修复了这个bug。

Update: New Version with fix also on CRAN now. Fixed with version 3.0. Just update the imputeTS package, if you encounter this bug.

不幸的是,我在你写信给我的几个小时前就在 CRAN 上上传了一个新的软件包版本。否则它早就包含在 2.1 更新中了。 我将在本周末进行包含错误修复的更新。

如果同时需要固定版本,可以直接从github安装新版本:

library(devtools)
install_github("SteffenMoritz/imputeTS")

对于问题所在感兴趣的人:

这是我通过 Rcpp 调用的 C++ 代码的问题。 我忘记制作一个对象的深拷贝。