我正在試驗來自imputeTS
包的函數。該軟件包提供了幾種函數來計算單變量時間序列數據中的缺失值。我測試了它們,它們都很棒,除了na.kalman
功能。該功能改變原始數字矢量。下面是一個例子。來自R 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
在運行這些函數後仍然是相同的向量。