首页 > 解决方案 > 带有 ARMA 术语的 gls:不适用于一种术语组合

问题描述

我正在使用 nlme 的 gls 函数来拟合具有各种 ARMA 术语的模型。我想比较多个不同的模型,看看哪个 ARMA 术语提供了最好的模型。

我的一般模型如下:

fit <- gls(y ~ x, data = na.omit(data), method = "ML", correlation = corARMA(p = 2, q = 3))

我的 y 和 x 变量是百分比。

对于从 p = 1 到 p = 3 和 q = 1 到 q =3 的 ARMA 项组合的每个模型都可以正常工作,但是,当我拟合上面指定的模型 (ARMA(2,3)) 时,我得到以下错误信息。

"Error in `coef<-.corARMA`(`*tmp*`, value = value[parMap[, i]]) : NA/NaN/Inf in foreign function call (arg 1)"

如果我重新运行模型指定method = "REML"它可以正常工作,但我想使用对数似然比测试来比较模型,所以我需要坚持使用method = "ML".

知道是什么原因造成的吗?

这是dput几行数据的输出:

structure(list(date2 = structure(c(12234, 12265, 12296, 12357, 
12509), class = "Date"), min = c(12, 114, 480, 818, 42), fai = c(0.632, 
0.707, 3.397, 7.107, 2.011), total_time = c(1237L, 3337L, 4776L, 
9385L, 3665L), min_stand = c(0.00970088924818108, 0.0341624213365298, 
0.100502512562814, 0.0871603622802344, 0.0114597544338336), total_feed = c(6234L, 
7120L, 5592L, 6252L, 2020L), perc_feed = c(0.192492781520693, 
1.60112359550562, 8.58369098712446, 13.0838131797825, 2.07920792079208
), kcal = c(99.688648314, 923.280754221, 4671.223064892, 6851.385488668, 
408.732018202), kcal_tot = c(26428.225231694, 47032.415227701, 
20824.864136682, 44505.409085806, 16408.141649702), kcal_perc = c(0.377205232057916, 
1.96307323311181, 22.4309893895724, 15.3945006447612, 2.49103175074932
), month = c(1L, 2L, 3L, 5L, 10L)), row.names = c(1L, 2L, 3L, 
5L, 10L), class = "data.frame")

我的“y”变量是“perc_kcal”,我的“x”是“fai”。

谢谢

PS。如果我使用不同的响应变量(“min_stand”)执行相同的建模过程,则模型无法仅在相同的 p=2 和 q=3 项下收敛。

Error in gls(model = min_stand ~ fai, data = na.omit(df_cum_kam), method = "ML",  : 
  function evaluation limit reached without convergence (9)

标签: rnlme

解决方案


推荐阅读