From murdoch@dunc@n @end|ng |rom gm@||@com  Thu Jan  2 17:28:45 2025
From: murdoch@dunc@n @end|ng |rom gm@||@com (Duncan Murdoch)
Date: Thu, 2 Jan 2025 11:28:45 -0500
Subject: [Rd] Possible issue in stats/arima.R package
In-Reply-To: <822e67f1-5900-4355-b231-a09c8691d4ae@gmail.com>
References: <CAMUMQUSh5t2sazypdiAeOSJ2MQssNfb89jQJvvBwRbA1PwAqeA@mail.gmail.com>
 <822e67f1-5900-4355-b231-a09c8691d4ae@gmail.com>
Message-ID: <e93186db-914d-41cf-b1df-46cbc90af3b6@gmail.com>

On 2025-01-02 11:20 a.m., Duncan Murdoch wrote:
> On 2025-01-02 9:04 a.m., Norbert Kuder wrote:
>> Hello all,
>>
>> I am running R version 4.4.2 (2024-10-31 ucrt) on Windows 10 x64, and
>> noticed something that might be a minor bug (or at least inconsistent code)
>> in the stats/arima.R package.
>> I have found:
>> 1. A missing stop() call at line 69:
>>       if (length(order) == 3) seasonal <- list(order = seasonal) else
>> ("\'seasonal\' is of the wrong length")
>> it should be rather:
>>       if (length(order) == 3) seasonal <- list(order = seasonal) else
>> stop("\'seasonal\' is of the wrong length")
> 
> I think you're right about this one.
> 
>>
>> 2. An unused 'mod' variable assignment at line 190:
>>
>> mod <- makeARIMA(trarma[[1]], trarma[[2]], Delta, kappa, SSinit)
>>
>> I am trying to confirm whether this is intended behavior or possibly an
>> overlooked detail. Could someone please clarify if the current logic is
>> correct?
>>
> 
> In the R-devel source I see mod being used in the next statement:
> 
>           mod <- makeARIMA(trarma[[1L]], trarma[[2L]], Delta, kappa, SSinit)
>           val <- if(ncxreg > 0L)
>               arimaSS(x - xreg %*% coef[narma + (1L:ncxreg)], mod)
>           else arimaSS(x, mod)
> 
> It appears in both alternatives of the if statement.
> 
> This one is strange though:  the code in the github mirror
> (https://github.com/wch/r-source/blob/4a1ed749271c52e60a85e794e6f34b0831efb1ae/src/library/stats/R/arima.R#L256-L258)
> is different:
> 
>           mod <- makeARIMA(trarma[[1L]], trarma[[2L]], Delta, kappa, SSinit)
>           if(ncxreg > 0) x <- x - xreg %*% coef[narma + (1L:ncxreg)]
>           arimaSS(x, mod)
> 
> yet the log shows no recent changes.  I'm not sure what's going on.

Mystery solved:  code like this appears several times in that file.  In 
the occurrence here:

https://github.com/wch/r-source/blob/4a1ed749271c52e60a85e794e6f34b0831efb1ae/src/library/stats/R/arima.R#L293

it does appear that the mod value isn't being used.

Duncan Murdoch



[Rd] Possible issue in stats/arima.R package
Duncan Murdoch