[R] error in arfima...

akshay kulkarni @k@h@y_e4 @end|ng |rom hotm@||@com
Mon Jun 5 16:11:12 CEST 2023


Dear Martin,
                     Sad that the bug is beyond your ken...

Fortunately, the error happens only rarely...The length of LYGH was 719 and there were only two such errors..I will just replace them with NA and make do.

By the by, what if I send LYGH as an attachment to your actual mail ( not the r-help mail)? Will it help? Can you then pinpoint the cause?

Or should I raise a bug report? If yes, how( I never raised one)?

THanking you,
Yours sincerely,
AKSHAY M KULKARNI
________________________________
From: Martin Maechler <maechler using stat.math.ethz.ch>
Sent: Monday, June 5, 2023 3:19 PM
To: akshay kulkarni <akshay_e4 using hotmail.com>
Cc: Martin Maechler <maechler using stat.math.ethz.ch>; R help Mailing list <r-help using r-project.org>
Subject: Re: [R] error in arfima...


> Dear Martin,
>                      REgrets to reply this late....

> I am staring at a conundrum never before encountered in my experience with R:

> LYGH[[201]]
> [1] 45.40  3.25  6.50  2.15
> > arfima(LYGH[[201]])
>  Error in .fdcov(x, fdf$d, h, nar = nar, nma = nma, hess = hess, fdf.work = fdf$w) :
> NA/NaN/Inf in foreign function call (arg 5)
> > arfima(c(45.40,3.25,6.50,2.15))

> Call:
>   arfima(y = c(45.4, 3.25, 6.5, 2.15))

> Coefficients:
>            d
> 4.583013e-05
> sigma[eps] = 18.01252
> a list with components:
>  [1] "log.likelihood"  "n"               "msg"             "d"               "ar"
>  [6] "ma"              "covariance.dpq"  "fnormMin"        "sigma"           "stderror.dpq"
> [11] "correlation.dpq" "h"               "d.tol"           "M"               "hessian.dpq"
> [16] "length.w"        "residuals"       "fitted"          "call"            "x"
> [21] "series"

> Please note that the index of LYGH has changed from 202 to 201 due to some randomness in one of my function.

> PLEASE HELP.

> Output of dput LYGH[[201]]:

> > dput(LYGH[[201]])
> c(45.4, 3.25, 6.5, 2.14999999999998)

> output of session info()

> sessionInfo()
> R version 4.1.2 (2021-11-01)
> Platform: x86_64-w64-mingw32/x64 (64-bit)


> Matrix products: default

> locale:
> [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252
> [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252

> attached base packages:
> [1] parallel  stats     graphics  grDevices utils     datasets  methods   base

> other attached packages:
> [1] pbmcapply_1.5.1 imputeTS_3.3    forecast_8.17.0

> loaded via a namespace (and not attached):
>  [1] Rcpp_1.0.7        urca_1.3-3        pillar_1.9.0      compiler_4.1.2    tseries_0.10-51
>  [6] tools_4.1.2       xts_0.12.1        nlme_3.1-153      lifecycle_1.0.3   tibble_3.2.1
> [11] gtable_0.3.3      lattice_0.20-45   pkgconfig_2.0.3   rlang_1.1.0       cli_3.6.1
> [16] rstudioapi_0.14   curl_4.3.2        xml2_1.3.3        dplyr_1.1.1       generics_0.1.3
> [21] vctrs_0.6.1       gridtext_0.1.5    ggtext_0.1.2      lmtest_0.9-40     grid_4.1.2
> [26] nnet_7.3-16       tidyselect_1.2.0  glue_1.6.2        R6_2.5.1          fansi_1.0.4
> [31] ggplot2_3.4.2     TTR_0.24.3        magrittr_2.0.3    scales_1.2.1      quantmod_0.4.20
> [36] timeDate_4021.106 colorspace_2.1-0  fracdiff_1.5-1    quadprog_1.5-8    utf8_1.2.3
> [41] stinepack_1.4     munsell_0.5.0     zoo_1.8-10


> PLease Also note:

> arfima(c(45.4, 3.25, 6.5, 2.14999999999998))

> Call:
>   arfima(y = c(45.4, 3.25, 6.5, 2.14999999999998))

> Coefficients:
>            d
> 4.583013e-05
> sigma[eps] = 18.01252
> a list with components:
>  [1] "log.likelihood"  "n"               "msg"             "d"               "ar"
>  [6] "ma"              "covariance.dpq"  "fnormMin"        "sigma"           "stderror.dpq"
> [11] "correlation.dpq" "h"               "d.tol"           "M"               "hessian.dpq"
> [16] "length.w"        "residuals"       "fitted"          "call"            "x"
> [21] "series"


> Many thanks in advance....

> Thanking you,
> Yours sincerely,
> AKSHAY M KULKARNI

Hmm... indeed, "conundrum" may be a euphemism for the
situation..... which clearly points to a bug *somewhere*.
As your dput() shows, the argument *is* a simple vector .. and
even if the default dput() may loose a few bits in
precison... you did show that with (possibly only almost)
identical argument, the error did not happen.

I really have no idea what's going on, ....
Some musing/ideas: the  NA/NaN/Inf  warning
may come from a memory corruption problem somewhere because some
of the involved packages using compiled code or the old version of R/lapack/???
or ??? cause it.

Does the error only happen occasionally?
If you "randomly" do a few calls of either
  arfima(c(45.4, 3.25, 6.5, 2.14999999999998))
or
  arfima(LYGH[[201]])
do you see "random" behavior? [if yes; this confirms typically
memory protection/allocation/... bugs]

fracdiff itself has also been updated (to 1.5-2) but that was really only
a compiler warning, not a bug fix, and I cannot imagine that
that makes the difference.



had problems fixed in the mean time ..
and at least there's a hope the problem disappears.

Lastly (but probably not helping more), you could use
dput() with control="digits"  and even
.Internal(inspect( * ))  magic on your  LYGH[[201]]

When I use simple numeric vectors "like" your LYGH[..], I get

> dput(c(45.4, 3.25, 6.5, 2.15), control="digits")
 c(45.399999999999999, 3.25, 6.5, 2.1499999999999999)

> .Internal(inspect(c(45.4, 3.25, 6.5, 2.15)) + )
@9874728 14 REALSXP g0c3 [] (len=4, tl=0) 45.4,3.25,6.5,2.15
>

Martin


> ________________________________
> From: Martin Maechler <maechler using stat.math.ethz.ch>
> Sent: Thursday, June 1, 2023 1:28 PM
> To: akshay kulkarni <akshay_e4 using hotmail.com>
> Cc: R help Mailing list <r-help using r-project.org>
> Subject: Re: [R] error in arfima...

> >>>>> akshay kulkarni
> >>>>>     on Wed, 31 May 2023 20:55:33 +0000 writes:

>     > dear members,

>     > I am using arfima() from forecast package to model a time
>     > series. The following is the code:

>     >> LYGH[[202]]
>     > [1] 45.40  3.25  6.50  2.15

>     >> arfima(LYGH[[202]])
>     > Error in .fdcov(x, fdf$d, h, nar = nar, nma = nma, hess = hess, fdf.work = fdf$w) :
>     > NA/NaN/Inf in foreign function call (arg 5)

>     > I tried viewing .fdcov() with the following code:

>     > View(environment(fracdiff)$.fdcov)

>     > but I see no stop() with the above mentioned error message.

>     > Can you please help?

> Well, as I am the maintainer of the *fracdiff* package,
> I'm trying.  OTOH, as we will see below, you did not give us enough
> information to really help you...

>     > THanking you,
>     > Yours sincerely,
>     > AKSHAY M KULKARNI

> Your problem is not (yet) reproducible (*)
> I've done the following in an "empty" (i.e. freshly started) R
> session, R 4.3.0:

> ----begin_R_transcript___save_as__arfima-ex.Rout__------------------------------
> >
> > lN <- loadedNamespaces()
> > library(forecast)
> Registered S3 method overwritten by 'quantmod':
>   method            from
>   as.zoo.data.frame zoo
> > options(width=75)
> > setdiff(loadedNamespaces(), lN) # -- see all the  *!^@...!   forecast loads:
>  [1] "gtable"     "dplyr"      "tidyselect" "Rcpp"       "parallel"
>  [6] "scales"     "lattice"    "ggplot2"    "R6"         "generics"
> [11] "curl"       "lmtest"     "tibble"     "munsell"    "nnet"
> [16] "forecast"   "timeDate"   "pillar"     "rlang"      "quantmod"
> [21] "utf8"       "urca"       "quadprog"   "cli"        "magrittr"
> [26] "xts"        "grid"       "nlme"       "lifecycle"  "fracdiff"
> [31] "vctrs"      "glue"       "tseries"    "zoo"        "fansi"
> [36] "colorspace" "TTR"        "pkgconfig"
> > arfima(c(45.40, 3.25, 6.50, 2.15))

> Call:
>   arfima(y = c(45.4, 3.25, 6.5, 2.15))

> Coefficients:
>            d
> 4.583013e-05
> sigma[eps] = 18.01252
> a list with components:
>  [1] "log.likelihood"  "n"               "msg"
>  [4] "d"               "ar"              "ma"
>  [7] "covariance.dpq"  "fnormMin"        "sigma"
> [10] "stderror.dpq"    "correlation.dpq" "h"
> [13] "d.tol"           "M"               "hessian.dpq"
> [16] "length.w"        "residuals"       "fitted"
> [19] "call"            "x"               "series"
> >
> > sessionInfo()
> R version 4.3.0 (2023-04-21)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Fedora Linux 36 (Thirty Six)

> Matrix products: default
> BLAS:   /usr/local64.sfs/app/R/R-4.3.0-inst/lib/libRblas.so
> LAPACK: /usr/lib64/liblapack.so.3.10.1

> locale:
>  [1] LC_CTYPE=de_CH.UTF-8       LC_NUMERIC=C
>  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=de_CH.UTF-8
>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=de_CH.UTF-8
>  [7] LC_PAPER=de_CH.UTF-8       LC_NAME=C
>  [9] LC_ADDRESS=C               LC_TELEPHONE=C
> [11] LC_MEASUREMENT=de_CH.UTF-8 LC_IDENTIFICATION=C

> time zone: Europe/Zurich
> tzcode source: system (glibc)

> attached base packages:
> [1] graphics  grDevices datasets  stats     utils     methods   base

> other attached packages:
> [1] forecast_8.21  fortunes_1.5-4 sfsmisc_1.1-15

> loaded via a namespace (and not attached):
>  [1] gtable_0.3.3      dplyr_1.1.2       compiler_4.3.0
>  [4] tidyselect_1.2.0  Rcpp_1.0.10       parallel_4.3.0
>  [7] scales_1.2.1      lattice_0.21-8    ggplot2_3.4.2
> [10] R6_2.5.1          generics_0.1.3    curl_5.0.0
> [13] lmtest_0.9-40     tibble_3.2.1      munsell_0.5.0
> [16] nnet_7.3-19       timeDate_4022.108 pillar_1.9.0
> [19] rlang_1.1.1       quantmod_0.4.22   utf8_1.2.3
> [22] urca_1.3-3        quadprog_1.5-8    cli_3.6.1
> [25] magrittr_2.0.3    xts_0.13.1        grid_4.3.0
> [28] nlme_3.1-162      lifecycle_1.0.3   fracdiff_1.5-2
> [31] vctrs_0.6.2       glue_1.6.2        tseries_0.10-54
> [34] zoo_1.8-12        fansi_1.0.4       colorspace_2.1-0
> [37] TTR_0.24.3        tools_4.3.0       pkgconfig_2.0.3
> >
> ##---end__R_transcript---------------------------------------------------------------


> Note that your error message pointed me to my (old, but still
> fine) package {fracdiff} with its principal function fracdiff()
> around which   arfima()  is a user-friendly and
> generalization wrapper.

> In other words arfima() calls fracdiff::fracdiff() and the error
> happens there --- for you, but not for me, if I try to use the
> same data as you.
> I see that you must have found that too, because you mentioned
>    View(environment(fracdiff)$.fdcov)

> Maybe you need to

>       update.packages()

> {which should re-install R packages you have installed but which
>  have become outdated in the mean time}

> If the error persists, please send us the output of

> 1)
>    dput(LYGH[[202]])

>    so we get your exact data

> 2)
>    sessionInfo()

>    so we get much info about your R "setup"

> .... last but not least:  If you are really calling arfima()
> with a time series of length 4  (which your LYGH[[202]] above
> seems to suggest)
> then you really need to learn a bit about the tools you are
> using: It really does not make any sense to fit a somewhat
> sophisticated time-series model (or *any* time-series model, I'd say)
> to a "series" with 4 values.

> Best regards,
> Martin

> --
> Martin Maechler
> ETH Zurich  and  R Core team

	[[alternative HTML version deleted]]



More information about the R-help mailing list