获取GAMM间隔

时间:2013-12-02 14:53:08

标签: r correlation gam mgcv

我使用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 的简介。

1 个答案:

答案 0 :(得分:3)

这实际上是统计计算的问题,而不是R用法。本质上,错误意味着虽然计算可能已经收敛到拟合模型,但该模型存在问题。这可以归结为在模型的拟合值处计算的Hessian是非正定的,因此协方差矩阵的最大似然估计是不可用的。通常这发生在对数似然函数变得平坦,无法在优化中进一步发展的情况下,并且由于模型很可能对于给定数据而言过于复杂。

您可以尝试使用和不使用AR(1)拟合模型,并使用广义似然比检验(通过anova())进行比较。我猜想嵌套在year内的AR(1)是多余的 - 即参数$ \ phi $实际上是0 - 这就是导致错误的原因。

实际上,现在我也发现你试图将变量inlandfao建模为自身s(inlandfao)的平滑函数。这里有一些问题 - 你需要完美的合身而不需要平滑的功能。你需要解决这个问题;你无法将响应建模为自身的函数。