【问题标题】:Strange behavior of the na.kalman function from the R imputeTS packageR imputeTS 包中 na.kalman 函数的奇怪行为
【发布时间】:2017-09-14 15:37:32
【问题描述】:

我正在试验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 在运行这些函数后仍然是同一个向量。

【问题讨论】:

    标签: r time-series missing-data imputation imputets


    【解决方案1】:

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

    这确实是没有功能...这是一个相当小的错误。 我直接修复了这个bug。

    更新:新版本现在也对 CRAN 进行了修复。已在 3.0 版中修复。只是 如果遇到此错误,请更新 imputeTS 包。

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

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

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

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

    这是我通过 Rcpp 调用的 C++ 代码的问题。 我忘记制作对象的深层副本了。

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多