Ich experimentiere mit Funktionen aus dem imputeTS
Paket. Dieses Paket bietet mehrere Funktionen, um fehlende Werte in univariaten Zeitreihendaten zu imitieren. Ich habe sie getestet und sie alle großartig, außer der na.kalman
Funktion. Diese Funktion ändert den ursprünglichen numerischen Vektor. Unten ist ein Beispiel.Merkwürdiges Verhalten der na.kalman-Funktion aus dem R imuteTS Paket
# 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
Wie Sie sehen können, habe ich einen Vektor mit 10 Zahlen, während der ersten 5 NA
sind.
# 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
Es scheint, wie die dat2
zeigt die na.kalman
Funktion erfolgreich die NA
zugeschrieben. Der ursprüngliche Vektor dat
wurde jedoch ebenfalls geändert. Dies ist ein Verhalten, das ich vermeiden möchte. Ich würde gerne wissen, ob es eine Möglichkeit gibt, na.kalman
zu fragen, den ursprünglichen Vektor nicht zu ändern.
Hinweis
Wenn ich die Vektorlänge auf eine große Anzahl, wie
rnorm(1000)
geändert, merke ich, dass alle fehlenden Werte indat
wird auf den ersten nicht-fehlenden Werte in der geändert werden Originale Daten. Es scheint wiedat
ist nicht einfach eine Kopie vondat2
nach derna.kalman
Funktion.Getestet habe ich auch andere Funktionen aus dem
imputeTS
Paket, wiena.interpolation
,na.locf
,na.mean
. Sie haben dieses Verhalten nicht.dat
bleibt der gleiche Vektor nach dem Ausführen dieser Funktion.