itsadug包中的check_resid()函数可视化mgcv包中bam函数的结果返回错误

时间:2018-03-17 09:45:01

标签: r time-series gam mgcv

我正在阅读教程"概述时间序列数据的GAMM分析" (http://www.sfs.uni-tuebingen.de/~jvanrij/Tutorial/GAMM.html

我使用以下代码拟合模型:

m1 <- bam(Y ~ Group 
        + s(Time, by=Group) 
        + s(Condition, by=Group, k=5) 
        + ti(Time, Condition, by=Group)
        + s(Time, Subject, bs='fs', m=1)
        + s(Trial, Subject, bs='fs', m=1),
        data=simdat)

我从itsadug包中运行以下命令:

check_resid(m1, split_pred=c("Subject", "Trial") )

这会返回一个异常:

Warning message in is.na(res.rho):
"is.na() applied to non-(list or vector) of type 'NULL'"
Error in ts(x): 'ts' object must have one or more observations
Traceback:

1. check_resid(m1, split_pred = c("Subject", "Trial"))
2. acf(res, main = sprintf("ACF resid(%s)", deparse(substitute(model))), 
 .     col = "darkgray", ylim = range(c(0, acf(res, plot = FALSE)$acf[, 
 .         , 1], acf(res.rho[!is.na(res.rho)], plot = FALSE)$acf[, 
 .         , 1]), na.rm = TRUE), bty = "L")
3. plot.acf(acf.out, ...)
4. acf(res.rho[!is.na(res.rho)], plot = FALSE)
5. na.action(as.ts(x))
6. as.ts(x)
7. as.ts.default(x)
8. ts(x)
9. stop("'ts' object must have one or more observations")

仅生成前两个图(而不是4个)。

我检查了命令的文档,也许这是相关的:

  

AR_start

     

默认为NULL。仅在模型以旧版本运行时才使用此选项   包mgcv的版本和函数无法检索使用的   AR.start来自模型的值。当错误显示较新时   mgcv的版本,请检查提供的列作为值   AR.start。当使用旧版本的包mgcv时。功能会给   无法找到AR.start时出错。

我仍然不知道如何纠正这个问题。

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

正确的语法(请参阅帮助?check_resid)是:

check_resid(m1, split_by=c("Subject", "Trial") )

,输出为:

enter image description here