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