我使用GAMM并希望使用方差 - 协方差矩阵提取模型的间隔但是我遇到了问题
编码:
fishdata <- read.csv("http://dl.dropbox.com/s/4w0utkqdhqribl4/fishdata.csv",
header=T)
attach(fishdata)
require(mgcv)
gammdl <- gamm(inlandfao ~ s(marinefao), correlation = corAR1(form = ~1 | year),
family=poisson())
summary(gammdl$gam)
intervals(gammdl$lme)
但最后一行编码返回,
Error in intervals.lme(gammdl$lme) :
cannot get confidence intervals on var-cov components: Non-positive definite approximate variance-covariance
我不明白为什么会出现此错误消息。
我试图使用我的数据复制Simon Wood在广义附加模型的第316页上使用R 的简介。
答案 0 :(得分:3)
这实际上是统计计算的问题,而不是R用法。本质上,错误意味着虽然计算可能已经收敛到拟合模型,但该模型存在问题。这可以归结为在模型的拟合值处计算的Hessian是非正定的,因此协方差矩阵的最大似然估计是不可用的。通常这发生在对数似然函数变得平坦,无法在优化中进一步发展的情况下,并且由于模型很可能对于给定数据而言过于复杂。
您可以尝试使用和不使用AR(1)拟合模型,并使用广义似然比检验(通过anova()
)进行比较。我猜想嵌套在year
内的AR(1)是多余的 - 即参数$ \ phi $实际上是0 - 这就是导致错误的原因。
实际上,现在我也发现你试图将变量 inlandfao
建模为自身s(inlandfao)
的平滑函数。这里有一些问题 - 你需要完美的合身而不需要平滑的功能。你需要解决这个问题;你无法将响应建模为自身的函数。