2017-04-18 5 views
1

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 

dat2na.kalman機能が正常にNAを帰属示しように思えます。しかし、元のベクターdatも変更されました。これは私が避けたい行動です。 na.kalmanに元のベクトルを変更しないように依頼する方法があるかどうかを知りたいと思います。

Iは、rnorm(1000)として、多数にベクトル長を変更

  1. 、Iはdat内のすべての欠落値が第一の非欠損値に変更されることに気付きます元のデータ。 datのようなものは、na.kalman機能の後に単にdat2のコピーではないようです。

  2. また、na.interpolation,na.locf,na.meanなどのimputeTSパッケージの他の機能もテストしました。彼らはこの動作をしません。 datは、これらの機能を実行した後も同じベクタになります。

答えて

3

ここにimputeTSパッケージの作成者。メールありがとう。

これは実際には機能ではありません...それはむしろ小さなバグです。 私はこのバグを直接修正しました。

残念ながら、あなたが私の手紙を書く数時間前に、新しいパッケージバージョンをCRANにアップロードしました。それ以外の場合は2.1アップデートに既に含まれています。 私は週末までにバグフィックスを含むアップデートを行います。あなたはその間に修正版が必要な場合は

、あなたはgithubのから直接、新しいバージョンをインストールすることができます。

それは、C++コードIとの問題だった:問題は何であったか興味を持ったものについては

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

Rcppを介して呼び出します。 オブジェクトのディープコピーを作るのを忘れてしまった。