Fisher Scoring未能从最初的估计中收敛。

时间:2018-03-08 14:50:28

标签: r

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的高滞后时,我发现错误

1 个答案:

答案 0 :(得分:0)

广义上讲,问题在于AR和MA模型组件之间的共线性,即phiLagsthetaLags的选择。只要这些参数共享相似的组件(代码中的1,2,3,4),就会引入相互依赖的模型参数。当要估计这些模型参数时,在潜在的数值优化过程中会出现收敛问题。

因此,phiLagsthetaLags的列表/向量分量必须不重叠。这就是为什么在GLARMA包中将phiLagsthetaLags指定为列表/向量的原因,而不是按照最大顺序pq的原因。中的大多数类似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模型固有地在数值上不稳定,就像您所遇到的情况一样。因此,选择适当的滞后时需要格外小心和耐心。