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
最初の5はNA
ている間、私は10個の番号を持つベクトルを作成しました。
# 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
に元のベクトルを変更しないように依頼する方法があるかどうかを知りたいと思います。
注 Iは、rnorm(1000)
として、多数にベクトル長を変更
、Iは
dat
内のすべての欠落値が第一の非欠損値に変更されることに気付きます元のデータ。dat
のようなものは、na.kalman
機能の後に単にdat2
のコピーではないようです。また、
na.interpolation
,na.locf
,na.mean
などのimputeTS
パッケージの他の機能もテストしました。彼らはこの動作をしません。dat
は、これらの機能を実行した後も同じベクタになります。