使用 gam.check() 检查基本尺寸结果的 GAM 拟合问题

2024-01-20

我正在使用 R 包“mgcv”创建用于预测海鸟分布的 GAM。我在解释某些模型的 gam.check() 结果时遇到一些问题(每个物种一个模型)。

我正在使用负二项式族和对数链接,以及样本区域对数的偏移量。我有 13 个可能的预测变量。我的回复数据是来自调查的离散计数数据,它是高度零膨胀的。

在每个候选中,我检查并发性(在整个模型中使用 0.8 作为阈值),并且我的模型项使用summary() 是显着的(否则它们将被丢弃),并且模型每次都会收敛。 尽管如此,我仍然从 gam.check() 中获得了非常重要的结果。尽管 edf 远低于 k,但还是如此。 我尝试过多次增加 k,但它对结果没有影响,对 edf 也没有影响,我也尝试过使用 tweedie 和零膨胀泊松 (zip) 系列,但这也没有太大影响。不过,我要说的是,我的 QQ 图看起来不太好。

QQ_plot https://i.stack.imgur.com/4fsVO.png

有谁知道为什么会发生这种情况?我认为该模型不稳定,不应使用,但我不知道如何修复它。几乎所有物种都会发生这种情况,因此它并不特定于某个文件。

这是我的模型

   gam_nb <- gam(COUNT_SUM ~ s(X_MEAN_2, k=25) + s(Currents_Northward, k=25), 
data=my_data,family = "nb", select=TRUE, offset=LOG_AREA_SUM, method = "REML")

这是诊断结果

Method: REML   Optimizer: outer newton
full convergence after 7 iterations.
Gradient range [-0.002334867,0.0005403022]
(score 1783.03 & scale 1).
Hessian positive definite, eigenvalue range [1.846342e-06,121.4505].
Model rank =  49 / 49 

Basis dimension (k) checking results. Low p-value (k-index<1) may
indicate that k is too low, especially if edf is close to k'.

                        k'  edf k-index p-value    
s(X_MEAN_2)           24.0 11.4    0.66  <2e-16 ***
s(Currents_Northward) 24.0 11.8    0.69   0.025 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

现在看看当我增加 k 时会发生什么

gam_nb <- gam(COUNT_SUM ~ s(X_MEAN_2, k=100) + s(Currents_Northward, k=100), 
data=my_data,family = "nb", select=TRUE, offset=LOG_AREA_SUM, method = "REML")


Method: REML   Optimizer: outer newton
full convergence after 7 iterations.
Gradient range [-6.715822e-05,1.121576e-05]
(score 1783.004 & scale 1).
Hessian positive definite, eigenvalue range [7.32924e-06,120.848].
Model rank =  199 / 199 

Basis dimension (k) checking results. Low p-value (k-index<1) may
indicate that k is too low, especially if edf is close to k'.

                        k'  edf k-index p-value    
s(X_MEAN_2)           99.0 12.0    0.67  <2e-16 ***
s(Currents_Northward) 99.0 13.1    0.68  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

您不应该通过基于对项/平滑进行类似 Wald 的显着性检验来保留项来进行模型选择summary()输出;你注定会将你的估计效应偏低(即排除时假设为 0)或偏高(因为极端效应/函数更有可能显着,但也可能是虚假的)。

你正在使用select = TRUE因此,只需包含您认为对响应具有重要控制作用的协变量集并拟合该单一模型,然后对其进行解释即可。

输出来自gam.check()是一种启发式;只是表明模型存在一些问题。表面上,您运行此命令是为了检查基本尺寸,但是当项的 EDF 较低时,与最大值相比 (k')但 p 值仍然很低,这可以表明模型存在其他问题。您可能缺少协变量(您根据重要性排除的那些东西很可能控制现在显示为未建模依赖性的响应变化)。

要检查这一点,请使用所有协变量(单独或组合)对残差进行建模,并针对协变量绘制残差。您可能还遗漏了一些您没有想到或测量的其他协变量。在那里你的选择较少,因为你对此无能为力,除非你可以为这种未建模的“效应”引入一个替代术语。

另外,请考虑数据中是否存在未建模的空间或时间结构或聚类(来自同一位置的重复观察)。所有这些都会导致启发式测试gam.check()失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gam.check() 检查基本尺寸结果的 GAM 拟合问题 的相关文章

  • mgcv:如何指定平滑和因子之间的交互?

    在 R 中 我想用分类变量拟合 gam 模型 我想我可以这样做 cat 是分类变量 lm data df formula y x1 cat x2 x3 但我不能做这样的事情 gam data df formula y s x1 cat s
  • 确定 GAM 平滑对象的导数

    我有一个非常简单的时间序列数据集 由单个变量的年平均值 AVERAGE 组成 我希望研究时间序列 趋势 分量的变化率 一阶导数 和加速度 二阶导数 以及相关的标准误差 我使用 MGCV 的 GAM 和 PREDICT 函数获得了 趋势 如下
  • mgcv:如何在predict.gam中使用“排除”参数?

    我有一个结构如下的模型 我想提取预测值 同时忽略随机效应 如指定 predict gam and here 我正在使用exclude争论 但我收到错误 我的错误在哪里 dt lt data frame n1 runif 500 min 0
  • Rplot.gam错误“1中的错误:object$nsdf:长度为0的参数”

    我正在尝试在 R 中绘制一个 gam 对象 这是我用 gam 包制作的 我收到了报告中相同的错误1 object nsdf 中的错误 使用plot gam 时长度为0 的参数 然而 在那里找到的解决方案 更新到最新版本 我认为 对我来说不起
  • model.frame.default 中的错误:变量长度不同

    在使用 mgcv 包运行 gam 模型时 我遇到了一条我无法理解的奇怪错误消息 model frame default formula Death pm10 Lag resid1 1 中的错误 变量长度不同 发现 Lag resid1 1
  • 广义相加模型 data.frame.default 错误:尝试应用非函数

    我正在尝试使用 mgcv 包运行一般的附加模型 但我不断收到 model frame default 错误 Error in model frame default formula Presence Sex wind speed baro
  • ggplot 无法使用facet_wrap 和群体美学绘制平滑的gam

    我正在尝试使用具有群体美学的 ggplot 绘制多面板和多线图facet wrap 但是 那geom smooth当一组数据点太少时 分面图中的所有线都会失败 plot1 lt ggplot data df1 aes x Year y Me
  • gam 包上的命名空间说明符不起作用

    我不明白为什么下面的两个 gam 模型会产生不同的结果 唯一的区别是我添加了命名空间说明符的模型之一gam 在函数之前gam and s 我想这样做是因为我正在探索在 gam 包和 mgcv 包中运行 gam 函数之间的差异 library
  • R 包 mgcv 是否存在已知的兼容性问题?是否有兼容性的一般规则?

    我使用 R 版本 2 15 1 2012 06 22 和 mgcv 版本 1 7 22 我在 R 中加载以下一组包 library sqldf library timeDate library forecast library xts li
  • Gtsummary 输出与 mgcv gam

    我有以下数据集 structure list Age c 83L 26L 26L 20L 20L 77L 32L 21L 15L 75L 27L 81L 81L 15L 24L 16L 35L 27L 30L 31L 24L 24L 31L
  • 安装路径不可写R,无法更新包

    我正在尝试使用他们网站上的代码将 Bioconductor 安装到 R 中 当我输入代码 见下文 时 我收到一条错误消息 指出某些软件包无法更新 安装路径不可写 gt try http if https URLs are not suppo
  • mgcv bam() 错误:无法分配大小为 99.6 Gb 的向量

    我正在尝试使用 bam mgcv 库 拟合加法混合模型 我的数据集包含来自对 300 个健康中心内 2 10 5 名儿童生长情况的纵向研究的 10 6 观察结果 我正在寻找每个中心的坡度 模型是 bam haz s month bs cc
  • 使用 gam.check() 检查基本尺寸结果的 GAM 拟合问题

    我正在使用 R 包 mgcv 创建用于预测海鸟分布的 GAM 我在解释某些模型的 gam check 结果时遇到一些问题 每个物种一个模型 我正在使用负二项式族和对数链接 以及样本区域对数的偏移量 我有 13 个可能的预测变量 我的回复数据
  • 找不到函数plot.gam

    我正在阅读 R 中应用统计学习简介 ISLR 我被困在第 295 页上的部分 即广义加性模型实验室 当我运行以下代码时出现错误Error in plot gam gam1 se TRUE col red could not find fun
  • 我可以在 mgcv::gam.plot() 中对 y 轴有一个类似于“系数”的解释吗?

    我已经读过一些有趣的替代品来解释plot mymodel 函数从一个gam适合像这个答案 https stats stackexchange com questions 430606 make nonlinear smooth interp
  • stat_smooth gam 与 gam {mgcv} 不同

    我当时用的是stat smooth函数于ggplot2 决定我想要 拟合优度 并为此使用了 mgcv GAM 我突然想到我应该检查以确保它们是同一型号 stat smooth与 mgcv 相比gam 所以我使用下面的代码来检查 看起来 他们
  • 使用 geom_smooth() 和“gam”相当于 span

    这可能是一个非常基本的问题 但我还没有找到答案 有没有相当于span论据中的geom smooth函数时method gam 我对 GAM 不太熟悉 所以如果有任何意见 我将不胜感激 我想为 n gt 1 000 的数据添加更灵活 更摆动
  • 如何解释 mgcv 的随机效应图

    我有一些关于在 GAM 中使用随机效果的问题 首先 您如何解释和传达输出图 我在这个 GAM 中将火灾建模为随机效应 因为它在我的不同现场站点上很大程度上是随机发生的 并且我只将其记录为二进制 它不能作为普通变量工作 因为它的级别太少 而且
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • 使用插入符和方法 = gamLoess 进行训练时 R 崩溃

    当我运行下面的代码时 R 崩溃了 如果我在训练调用中注释掉tuneGrid行 就不会发生崩溃 我已经用另一个数据集尝试过此操作 但仍然使 R 崩溃 崩溃消息是 R 会话中止 R遇到致命错误 会话被终止 开始新会话 代码是 library s

随机推荐

  • Android实时数据库抛出错误:客户端已离线但实际上并没有

    该应用程序执行简单的注册 使用 FirebaseAuth FirebaseUI 和 Google Sign In 认证时成功地 我拿firebaseUser userId并使用它从实时数据库中获取用户配置文件 示例位置 users user
  • 使用 TFS 2010“构建”经典 ASP

    我使用 TFS 2010 进行源代码控制和持续集成 除其他外 我有一个我维护的经典 ASP 应用程序 我想将其合并到持续集成构建中 但是 我必须在构建定义中提供 要构建的项目 由于经典 ASP 没有与之关联的解决方案或项目 因此我仍然可以使
  • Struts2 ValueStack如何处理多个请求

    我明白ValueStack在 Struts2 中引入 Struts1 模型的另一项变化现在是一个新的ActionObject为每个请求实例化 所以我们可以定义实例变量而不用担心多线程问题 拦截器和 JSP 访问实例变量的方式ActionOb
  • 如何抑制 ggplot2 图中的垂直网格线?

    我正在构建一个条形图 其中条形足以作为水平 x 放置的指示 因此我想避免绘制多余的垂直网格线 我了解如何在 opts 中设置次要和主要网格线的样式 但我一生都无法弄清楚如何仅抑制垂直网格线 library ggplot2 data lt d
  • Xamarin.Android - 本机代码编译是否会使逆向工程变得更加困难?

    我们正在考虑将 C NET 应用程序移植到 Android 我已经开始阅读有关 Xamarin Android 和 Mono 框架的内容 我刚刚开始Android 开发 我注意到主要http xamarin com android http
  • 在 Scikit-learn 中使用 Smote 和 Gridsearchcv

    我正在处理不平衡的数据集 并希望使用 scikit 的 gridsearchcv 进行网格搜索来调整模型的参数 为了对数据进行过采样 我想使用 SMOTE 并且我知道我可以将其作为管道的一个阶段并将其传递给 gridsearchcv 我担心
  • 当“下拉菜单值更改”时重新加载 d3 图表

    当用户在下拉菜单中选择一个项目以及与该项目对应的数据时 我试图重新加载 d3 js 折线图 我的菜单是股票市场价值列表 YHOO FB 对于其中每一个 我都有一个包含数据的 JSON 文件 该图本身正在发挥作用 我将代码放在 JSFiddl
  • 在 Active Admin 中禁用 CSV 下载

    我正在使用 Active Admin gem 我想隐藏或删除每个模型索引页面上的链接 允许用户下载 CSV XML 或 JSON 格式的数据 有什么办法可以做到这一点吗 现在有一个选项 download links在索引方法上 因此您可以根
  • 测试用例中缺少 ROLLBACK 会导致多数据库 django 应用程序中唯一约束冲突

    我刚刚开始使用工厂男孩 https github com dnerdy factory boy用于测试工厂的 django 库 并且存在重复键约束违规问题 测试成员程序 py from datetime import date timede
  • 如何从 aws 实例内部检测其状态?

    我在 EC2 中有自动缩放组 我想在实例终止时检测实例的状态 以便我可以在实例终止之前开始导出日志文件 我知道实现此目的的一种方法是使用自动缩放生命周期挂钩 但根据我的理解 我必须使用外部监视器 然后该监视器必须 ssh 到实例并导出日志文
  • 从 select 语句 mysql 调用用户定义的存储过程

    我试图从 select 语句调用用户定义的存储过程 但它给了我一个错误 但是 当我调用系统过程时 它工作得很好 有没有办法从 select 语句调用用户定义的过程 这是针对mysql的 SELECT ID email FROM user P
  • 在nodejs日期对象中设置日期将日期显示为不同的值

    当我使用下面的语句设置日期对象时 输出在 NodeJS 中显示不同 你能帮我理解为什么会这样吗 以及我需要如何传递来打印正确的值 var date1 new Date 2017 01 01 var date2 new Date 2017 0
  • Charts.js 直线 - 我找不到解决方案

    所以我使用charts jshttp www chartjs org http www chartjs org 我试图使两个点之间的线是直的而不是弯曲的 没有明显的原因 现在看起来像那样https i stack imgur com rK8
  • 我是否应该使用“self”来定义我不需要从外部访问的实例化类的变量/对象?

    我不是一个完全的初学者 但相当陌生Python 今天在做一个项目时 我只是有一个想法 并想知道 self 我过去读过一段时间 但我仍然无法弄清楚它是否总是必要的 我的问题仅涉及类的实例和实例参数 变量 这个问题与影响所有实例的类变量无关 E
  • 更新复杂 JTable、TableModel 等的正确方法

    我的 GUI 显示了我的车辆park 以及我想要设置的车辆可用的在两个不同的车辆表 扩展 JTable 的类 对于可用的情况 我希望可以从agent 第三方软件 这两个表都显示了行中车辆的描述 为此我创建了车辆表模型 and Vehicle
  • 使用 yum 安装 pgAdmin4

    是否已经有一种方法可以安装 pgAdmin IV Beta 桌面运行时 例如与百胜 我在官网上找到了Python Wheel的下载链接 但是没有yum的提示 桌面运行时似乎还没有可用 pgAdmin 4 已包含在官方中PostgreSQL
  • 更改购物车列的顺序而不覆盖 Woocommerce 中的模板文件

    是否有解决方案可以更改购物车列的顺序 而无需将文件复制到我自己的模板文件夹中 原因是 我不想覆盖这么重要的模板文件 不幸的是 订单被硬编码为文件中的表格cart php并且不在函数内部 在这种情况下 是否有任何 干净 的方法来更改列的顺序
  • 如何使用带有可选提示的expect?

    假设我正在尝试为具有三个提示的 test sh 编写一个 Expect 脚本 prompt1 prompt2 prompt3 我的代码是这样的 spawn test sh expect prompt1 send pass1 expect p
  • ncurses 多线程读写的解决方法

    这就是上面所说的http invisible island net ncurses ncurses faq html multithreads http invisible island net ncurses ncurses faq ht
  • 使用 gam.check() 检查基本尺寸结果的 GAM 拟合问题

    我正在使用 R 包 mgcv 创建用于预测海鸟分布的 GAM 我在解释某些模型的 gam check 结果时遇到一些问题 每个物种一个模型 我正在使用负二项式族和对数链接 以及样本区域对数的偏移量 我有 13 个可能的预测变量 我的回复数据