【发布时间】: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不要改变原来的向量。
注意
-
当我把向量长度改成很大的数字时,比如
rnorm(1000),我注意到dat中的所有缺失值都会变成原始数据中的第一个非缺失值。似乎dat不仅仅是dat2在na_kalman函数之后的副本。 -
我还测试了
imputeTS包中的其他功能,例如na_interpolation、na_locf、na_mean。他们没有这种行为。dat在运行这些函数后仍然是同一个向量。
【问题讨论】:
标签: r time-series missing-data imputation imputets