head(quart)
str(quart)
#PDB PMTB RNB y
#1 391204.2 1030127 -3.10 0
#2 396498.0 1066861 1.60 0
#'data.frame': 55 obs. of 4 variables:
#$ PDB : num 391204 396498 399217 411447 399135 ...
#$ PMTB: num 1030127 1066861 1165360 1190639 1183382 ...
#$ RNB : num -3.1 1.6 3.1 0.83 0.3 0.6 -1.6 1.04 3.5 2.2 ...
#$ y : int 0 0 0 0 0 0 0 0 0 0 ...
glmMod<-glm(formula = y~PMTB+RNB, data = quart, family = binomial(link
logit),na.action = na.omit, x=TRUE)
x<-glmMod$x
X<-as.matrix(x)
y1<-quart$y
n1<-rep(1, length(quart$y))
y<-cbind(y1,n1-y1)
Y<-as.matrix(y)
library(glarma)
glarMod<-glarma(y,x,type="Bin",phiLags = c(1:2),method = "FS", maxit=100,
grad = 1e-6) #NotError
glarMod<-glarma(y,x,type="Bin",thetaLags = c(1:2),method = "FS", maxit=100,
grad = 1e-6) #Not Error
glarMod<-glarma(y,x,type="Bin",phiLags = c(1:4),method = "FS", maxit=100,
grad = 1e-6) #Error in glarma(y, x, type = "Bin", phiLags = c(1:4), method =
"FS", maxit 100, : Fisher Scoring fails to converge from the initial
estimates.
glarMod<-glarma(y,x,type="Bin",phiLags = c(1:4),thetaLags = c(1:4), method
="FS",maxit=100, grad = 1e-6) #Error in GL$cov %*% GL$ll.d : requires
numeric/complex matrix/vector arguments
我在最后两行中收到错误。我尝试在我的glarma模型中进行一些组合。当我尝试AR和MA的高滞后时,我发现错误
答案 0 :(得分:0)
广义上讲,问题在于AR和MA模型组件之间的共线性,即phiLags
和thetaLags
的选择。只要这些参数共享相似的组件(代码中的1,2,3,4),就会引入相互依赖的模型参数。当要估计这些模型参数时,在潜在的数值优化过程中会出现收敛问题。
因此,phiLags
和thetaLags
的列表/向量分量必须不重叠。这就是为什么在GLARMA包中将phiLags
和thetaLags
指定为列表/向量的原因,而不是按照最大顺序p
和q
的原因。中的大多数类似ARMA的模型规范都是这种情况。其他图书馆。不幸的是,这在https://cran.r-project.org/web/packages/glarma/glarma.pdf或小插图中没有得到充分记录。
总而言之,您只需要选择哪个组件获得哪个滞后即可。例如,
phiLags = c(1:2), thetaLags = c(3:4)
有效,因为集合不重叠。同样适用于
phiLags = c(1,3), thetaLags = c(2,4)
等
此外,这解释了为什么在分别将所有滞后分配给MA或AR组件时没有出现收敛错误的原因。
但是,请注意,当遇到二项式响应时,GLARMA模型固有地在数值上不稳定,就像您所遇到的情况一样。因此,选择适当的滞后时需要格外小心和耐心。