gam 建模:变量规范中的错误

问题描述 投票:0回答:1

我创建了这个运行良好的回归模型:

model1 = bam(depend ~ s(indep, by = gender.x,bs = "tp") + 
    s(Age, by = gender.x, bs = "tp") + ti(Age, indep, by = gender.x) +
    gender.x + 
    s(Subject, bs = "re") + s(Age, Subject, bs = "re") + 
    s(ImagingCentreCity, bs = "re"), data = M2_SRS_Project,
  method = "fREML", family = "gaussian")

但是引入变量时

timepoints
:

model2 = bam(depend ~ s(Age, bs = "tp") + s(indep, bs = "tp") + 
    s(Age, indep, bs = "tp", by = gender.x) + gender.x + timepoints + 
    s(Subject, bs="re") + s(Age, Subject, bs = "fs", m = 1), 
  data = M2_SRS_Project)

该模型不起作用。错误信息如下:

Erreur dans h(simpleError(msg, call)) : 
  erreur d'evaluation de l'argument 'x' lors de la selection d'une methode pour la fonction 'chol' : tableaux de tailles inadéquates

你对我能做什么有什么想法吗?”

摘要(M2_SRS_Project$时间点) BL FU1 FU2 FU3 510 162 457 509

我尝试重新编码时间点变量

r gam mgcv
1个回答
0
投票

您的模型在包含或不包含

timepoints
变量方面并不等效。

这个

s(Age, indep, bs = "tp", by = gender.x)

几乎肯定是错误的 - 您确实想要两个变量之间的相互作用具有各向同性平滑。您在

model1
中拥有此权利,那么为什么您选择在
model2
中采取不同的做法?

我也不会这么做

s(Subject, bs="re") + s(Age, Subject, bs = "fs", m = 1)

有两个原因:

  1. 使用

    m=1
    似乎会导致模型出现一些问题,这些问题对于所拟合的数据来说过于复杂。无论如何都不需要它,因为
    fs
    平滑已完全受到惩罚。

  2. 您将

    Subject
    的随机截距包含两次,因为它们已经在
    fs
    基础中

相反,只需使用它代替这两个平滑:

s(Age, Subject, bs = "fs")

也许这有帮助(?),但你在这里并没有真正帮助自己;您的问题很令人困惑,因为这些模型甚至与您在问题文本中暗示的相似。另外,虽然我很感激您是 SO 新手,因此可能不知道 Markdown 格式选项,但您是否看过您的问题(在我编辑它之前)?几乎难以辨认。

© www.soinside.com 2019 - 2024. All rights reserved.