From dmurdoch at pair.com  Sun Apr  4 19:39:10 2004
From: dmurdoch at pair.com (dmurdoch@pair.com)
Date: Sun Apr  4 19:39:12 2004
Subject: [Rd] Sporadic error in kalmanSmooth (PR#6738)
Message-ID: <20040404173910.B25BBED90@slim.kubism.ku.dk>

On Sun,  4 Apr 2004 16:24:22 +0200 (CEST), Kjetil Halvorsen wrote:

>On Sat, 03 Apr 2004 21:34:25 -0400, you wrote:
>
>>Defining the following: 
>>
>> set.seed(123)
>>
>> kalmanTorture <- function(iter) {
>>   x <- arima.sim(model = list(ar=0.9, ma=0.5),n=150 )
>>   x[10:20] <- NA
>>   mod <- arima(x, order=c(1,0,1) )
>>   for (i in 1:iter) {
>>      smooth <- KalmanSmooth(x, mod=mod$model)$smooth
>>      if (any(is.na(smooth))) stop("NA on iteration ",i) }
>>}
>>
>>and running in R1.9.0beta (equal in R1.8.1), windows XP, precompiled 
>>binaries:
>>
>>> kalmanTorture(1000)
>>Error in kalmanTorture(1000) : NA on iteration 147
>>> kalmanTorture(1000)

Found it.  The entries in the Mt array in KalmanSmooth weren't being
initialized in the cases where data was missing.  The value was being
multiplied by zero, so if it was numerically valid junk it had no
effect, but if it happened to be a NaN, the multiplication gave
another NaN.

I'll commit a patch.

Duncan Murdoch


[Rd] Sporadic error in kalmanSmooth (PR#6738)
dmurdoch@pair.com