如何在 r 中没有警告消息的情况下知道 lme4 中模型是否收敛或未能收敛?

2024-04-27

重复的

例如, 我可以通过以下方式评估这个多级模型是否是单一拟合 使用isSingular()功能。

同样,有什么方法可以知道这个模型是收敛还是失败?

我的顾问说,如果模型无法收敛,则不会估计标准误差。然而,尽管以下未能收敛,但似乎估计了标准误差。

是否有任何好的指标表明该模型收敛或未能收敛? (除了注意到警告消息之外)

我正在使用lme4包装和lmer()功能。

例如,有一个收敛失败的多级模型的例子

library(lme4)
read.table(textConnection("duration season  sites   effect
                          4d    mon s1  7305.91
                          4d    mon s2  856.297
                          4d    mon s3  649.93
                          4d    mon s1  10121.62
                          4d    mon s2  5137.85
                          4d    mon s3  3059.89
                          4d    mon s1  5384.3
                          4d    mon s2  5014.66
                          4d    mon s3  3378.15
                          4d    post    s1  6475.53
                          4d    post    s2  2923.15
                          4d    post    s3  554.05
                          4d    post    s1  7590.8
                          4d    post    s2  3888.01
                          4d    post    s3  600.07
                          4d    post    s1  6717.63
                          4d    post    s2  1542.93
                          4d    post    s3  1001.4
                          4d    pre s1  9290.84
                          4d    pre s2  2199.05
                          4d    pre s3  1149.99
                          4d    pre s1  5864.29
                          4d    pre s2  4847.92
                          4d    pre s3  4172.71
                          4d    pre s1  8419.88
                          4d    pre s2  685.18
                          4d    pre s3  4133.15
                          7d    mon s1  11129.86
                          7d    mon s2  1492.36
                          7d    mon s3  1375
                          7d    mon s1  10927.16
                          7d    mon s2  8131.14
                          7d    mon s3  9610.08
                          7d    mon s1  13732.55
                          7d    mon s2  13314.01
                          7d    mon s3  4075.65
                          7d    post    s1  11770.79
                          7d    post    s2  4254.88
                          7d    post    s3  753.2
                          7d    post    s1  11324.95
                          7d    post    s2  5133.76
                          7d    post    s3  2156.2
                          7d    post    s1  12103.76
                          7d    post    s2  3143.72
                          7d    post    s3  2603.23
                          7d    pre s1  13928.88
                          7d    pre s2  3208.28
                          7d    pre s3  8015.04
                          7d    pre s1  11851.47
                          7d    pre s2  6815.31
                          7d    pre s3  8478.77
                          7d    pre s1  13600.48
                          7d    pre s2  1219.46
                          7d    pre s3  6987.5
                          "),header=T)->dat1

lmer(effect ~ duration + (1+duration|sites) +(1+duration|season),
                                  data=dat1)

这会产生错误 警告信息: 模型未能收敛到 1 个负特征值:-2.3e+01

然而,标准误差似乎是被估计的,尽管它未能收敛。

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: effect ~ duration + (1 + duration | sites) + (1 + duration |      season)
   Data: dat1

REML criterion at convergence: 969

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.0515 -0.6676  0.0075  0.5333  3.2161 

Random effects:
 Groups   Name        Variance Std.Dev. Corr
 sites    (Intercept) 8033602  2834         
          duration7d  1652488  1285     1.00
 season   (Intercept)       0     0         
          duration7d  1175980  1084      NaN
 Residual             5292365  2301         
Number of obs: 54, groups:  sites, 3; season, 3

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)  
(Intercept) 4183.896   1695.252    2.008   2.468    0.132  
duration7d  3265.641   1155.357    3.270   2.827    0.060 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
           (Intr)
duration7d 0.520 
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see ?isSingular

(以上数据和代码不是我的模型, 我从堆栈溢出问题之一复制并粘贴了这些数据和代码。)

总而言之,我的问题是

  1. 除了注意警告消息之外,是否有任何明确的功能或方式来通知该功能是否收敛或收敛失败

(就像评估奇点一样,isSingular() 函数给出了明确的指示)

  1. 为什么模型无法收敛时仍然估计标准误差?

最终目标是为了我的模拟研究,我会计算收敛速度。


我的顾问说,如果模型无法收敛,则不会估计标准误差。然而,尽管以下未能收敛,但似乎估计了标准误差。

您展示的模型has收敛了。您知道这一点是因为以下消息:

optimizer (nloptwrap) convergence code: 0 (OK)

如果它没有收敛,您会看到如下警告:

In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

然而,它已经收敛到奇异拟合,如下一行所示:

boundary (singular) fit: see ?isSingular

除了注意警告消息之外,是否有任何明确的功能或方式来通知该功能是否收敛或收敛失败

我为此使用以下辅助函数:

# helper function
# Has the model converged ?

hasConverged <- function (mm) {
  
  if ( !inherits(mm, "merMod")) stop("Error: must pass a lmerMod object")
  
  retval <- NULL
  
  if(is.null(unlist(mm@optinfo$conv$lme4))) {
    retval = 1
  }
  else {
    if (isSingular(mm)) {
      retval = 0
    } else {
      retval = -1
    }
  }
  return(retval)
}

如果模型收敛则返回 1normally即不是奇异拟合,如果收敛到奇异拟合则为 0,如果未能收敛则为 -1。另一种方法是根据 @SamR 的评论将警告升级为错误:

一般来说,如果警告还不够,您可以使用 options(warn=2) 将警告变成错误,这意味着操作将结束,因此您不应该得到任何标准错误或其他输出。请记住之后将警告设置回 1。

继续:

为什么模型无法收敛时仍然估计标准误差?

好吧,如上所述,它已经收敛了,而你的顾问在这里错了:

我的顾问说,如果模型无法收敛,则不会估计标准误差。

如果模型未能收敛,它将输出放弃前最后一次迭代获得的估计值。

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

如何在 r 中没有警告消息的情况下知道 lme4 中模型是否收敛或未能收敛? 的相关文章

  • 格式化 mlogit 的数据

    为了通过 mlogit 进行多项 Logit 分析 我正在经历一段艰难的时间来整理我的数据集 我的数据集可从url https raw githubusercontent com sjkiss Survey master mlogit ou
  • 在四开图书模板中将数据从一个 qmd 文件传递​​到另一个 qmd 文件?

    我能否就在 RStudio 四开图书模板中将数据从一个四开文件传递到另一个四开文件的最佳实践寻求建议 默认的书籍模板如下所示 quarto yml project type book book title TestTest author J
  • ggplot2:为什么半透明+ pdflatex 会导致比普通 PDF 字体更重?

    ggplot2 为什么半透明 pdflatex 会导致比普通 PDF 字体更重 我遇到了一个问题pdf 在 R 中输入 然后pdflatex ing ggplot2 图像会导致同一页面上的所有文本与图像变得粗体 但仅当alpha requi
  • 多项式混合 Logit 模型 mlogit r-package

    我发现了mlogit package https cran r project org web packages mlogit index html对于多项 Logit 模型 寻找估计多项混合 Logit 模型 在阅读了精彩的小插图后 我发
  • 将outer()应用于两个列表

    我有一个清单 说exm list elm1 c a b elm2 c b c d elm3 c b c d e 我想对以下两个元素的每个组合应用一个函数exm e g length intersect exm elm1 exm elm2 结
  • R xts:毫秒索引

    如何创建索引包含毫秒的 xts 对象 我在 POSIXlt 帮助页面中找不到任何格式规范 但有一个参考 https stackoverflow com questions 4295407 display time index in r xt
  • 解释R中模型多重共线性的别名表测试

    有人可以帮助我解释别名函数输出 以测试多元回归模型中的多重共线性 我知道我的模型中的一些预测变量是高度相关的 我想使用别名表来识别它们 Model Score Comments Pros Cons Advice Response Value
  • R 编程:创建堆叠条形图,每个堆叠条形具有可变颜色

    我正在尝试创建一个堆叠条形图 每个堆叠条形图中的颜色可变 也就是说 一个条形图在红色上方显示蓝色 下一个条形图在紫色上方显示红色 等等 我还想保留堆叠图表的功能 十分感谢大家 Adam 下图 使用上面的代码创建 显示了主要汽车制造商生产的汽
  • Highcharter 已弃用函数的输出与建议的不同

    我正在用 Josh Kunst 的出色作品制作一个时间序列情节highcharterR 中的库 使用此数据 gt dput t structure c 2 2 267822980 325286564 66697091 239352431 9
  • 是否可以在 R 中为 data.frame 命名别名

    使用某些数据标准时 使用多种方法来查看 data frame 的列会更简单 作为一个具体示例 在使用 SDTM 数据进行临床试验时 每种数据类型 如实验室或生命体征 都有一列时间点 实验室名称为 LBPT 生命体征名称为 VSTPT 理想情
  • 相当于 Rcpp 中的 'which' 函数

    我是 C 和 Rcpp 的新手 假设我有一个向量 t1 lt c 1 2 NA NA 3 4 1 NA 5 我想获得 t1 的元素索引NA 我可以写 NumericVector retIdxNA NumericVector x Step 1
  • 用整数矩阵对 data.frame 进行子集化

    我一直遇到这个问题 想知道是否有一个简单的解决方法 对于某些情况 我发现考虑将矩阵子集化更合乎逻辑 N lt 12 N NA lt 6 dat lt data frame V1 runif N V2 runif N sel mat lt m
  • 在开发模式下安装包(R源未编译成Rdb)

    我需要修改R代码在一个R具有 Fortran 绑定的包 当我安装软件包时 我看到存储库目录没有源代码 但是 Rdb而是二进制文件 我看了看devtools包 但我仍然不清楚如何在不编译 R 源部分的情况下安装该包 类似于 python py
  • 错误:“tidyverse”的包或命名空间加载失败:“namespace:dplyr”未导出对象“relocate”

    我使用以下命令安装了 tidyverse install packages tidyverse 但是安装后 当我使用以下命令调用库时 library tidyverse 我收到此错误 Error package or namespace l
  • 在r包中重新导出数据集

    In R包 有可能重新导出函数 这使得很容易回收相同的函数 而不必在不同的包之间重复代码 例如 devtools session info函数是重新导出sessioninfo session info export importFrom s
  • 不使用apply函数对data.table的每一行进行操作的方法

    我在下面写了一个简单的函数 mcs lt function v ifelse sum diff sort v gt 6 gt 0 NA sd v 它应该采用一个向量 对其进行排序 然后检查每个连续差异中是否存在大于 6 的差异 如果差值大于
  • 运行 R.exe 会创建临时文件吗?

    我在想 是否启动 R exewindows创建临时文件并 是否解释类似x lt 5写入那些临时文件 如果创建了临时文件 它们存储在哪里 如果我启动多个 R exe 实例会发生什么情况 他们会共享并覆盖彼此的临时文件吗 R 的每个实例都有自己
  • 更改 ggplot 条形图填充颜色

    有了这个数据 df lt data frame value c 20 50 90 group c 1 2 3 我可以得到一个条形图 df gt ggplot aes x group y value fill value geom col c
  • 更改列的顺序

    我正在处理一个包含 gt 40 列的大型数据框 我希望能够移动列 而不必指定所有列名称 例如 a lt c 1 5 b lt c 4 3 2 1 1 Percent lt c 40 30 20 10 10 Labels lt c Cat D
  • 如何在 conda 中静音或抑制 gfortran (或 clang?)后端?

    我一直致力于构建一个非常特殊的 conda 环境 专为python and R与串扰使用rpy2 我想出的方法可以安装正确的R包如下 install main environment sh now date T echo Start Tim

随机推荐

  • 堆栈小部件内的列表视图不起作用(scrollDirection:Axis.vertical)

    我需要做这个设计 This is my code result 但是当我添加列表视图时它不起作用我需要垂直列表而不是水平列表列表视图 builder 滚动方向 Axis vertical 收缩包装 真实 项目数量 12 itemBuilde
  • C 结构体中的 Typedef

    首先是令我困惑的代码 typedef struct Object typedef int MyInt void destructor Object void constructor struct Object Object 为什么编译器阻止
  • Heroku 在部署时不会预编译资产

    它在其文档中非常清楚地表明 如果我不在本地预编译它们 它就会执行此操作 说实话 我对在本地预编译这些没有兴趣 我所经历过的生产 rb 我已经复制了应用程序 rb In my 生产 rb config serve static assets
  • 使用日期作为窗口函数实现 RANGE

    从 SQLAlchemy 1 4 25 开始 没有内置支持 所以我尝试使用该解决方案here https stackoverflow com a 69606048 11277108 这是我的复制 from datetime import d
  • 使用 ViewBag 时出现 RuntimeBinderException

    我们收到 Layout cshtml 中使用的 Viewbag 项目的 RuntimeBinderException 我们在内存分析器中观察到这些异常 它们不是致命的 一切正常 但很烦人 我们想清除它们 例如 以下代码会导致异常 Rende
  • 有时 git 会在没有我要求的情况下将所有远程 git 分支作为本地分支进行跟踪。发生了什么?

    有时 git 会自发地 在某些但不是全部 拉取 或 克隆 操作期间 将存储库的所有远程分支复制到我的本地存储库中 甚至将它们全部设置为正确跟踪相应的远程分支 这是什么原因造成的 有什么办法可以让我故意这样做吗 如果您只是从远程分支执行普通分
  • 如何获取屏幕触摸的 x,y 坐标?

    当我的应用程序运行时 每当有人触摸屏幕时 是否有一种简单的方法来获取 x y 坐标 只是想将它们存储在一些整数中 覆盖onTouchEvent MotionEvent event 然后打电话event getX and event getY
  • 如何强制 JTable 在包含阿拉伯字符的情况下不反转文本?

    我有以下文字 word 但是当它显示在我的 JTable 上时 它看起来像这样 word 在每个 JLabel 或 TextArea 或任何其他输入中 它确实看起来像原始文本 word 仅在 JTable 上我遇到这样的问题 我不在乎它是否
  • 延迟作业:如何强制处理失败的作业

    我正在维护一个 Rails 应用程序 在该应用程序上运行 Delayed job gem 来发送电子邮件 我刚刚注意到 由于应用程序中的错误 我所有延迟的工作在过去几天都失败了 现在错误已修复 我想尽快处理作业 但它们已经有太多失败的尝试
  • 使窗口在特定边界内可拖动 WPF

    我有一个 wpf 子窗口 允许使用 DragMove 方法进行拖动 但是 我需要允许仅在其父窗口控件的范围内拖动窗口 谁能建议一种方法来实现这一目标 谢谢 有两种方法可以做到这一点 Using 地点已结束 http msdn microso
  • 会话复制在多节点集群上的 glassfish 中不起作用

    会话复制在多节点集群上的 glassfish 中不起作用 1 应用程序在 web xml 中包含可分发标签 2 应用程序部署在集群 c1 中 该集群包含同一节点上的 2 个实例 时 会话复制可以正常工作 3 当部署在集群 c2 包含两台 C
  • 配置 Jest 模仿 webpack 解析 root 和解析别名

    我正在努力使用 Webpack 和 Jest 建立一个项目 目前 Webpack 解决了配置导致 Jest 测试复杂化的问题 在我的 webpack 配置中 我设置了以下选项 resolve root dirname src extensi
  • Gnu 时间和格式化输出

    我想使用 gnu time 来测量一些小 c 程序的运行时间 人 中写道 f FORMAT format FORMAT Use FORMAT as the format string that controls the output of
  • 将 hadoop fs 路径转换为 ​​EMR 上的 hdfs:// 路径

    我想知道如何将数据从 EMR 集群的 HDFS 文件系统移动到 S3 存储桶 我认识到我可以直接在 Spark 中写入 S3 但原则上 之后执行它也应该很简单 到目前为止 我还没有发现在实践中这是正确的 AWS 文档建议s3 dist cp
  • Instagram 是否于 2018 年 3 月 30 日更改了 API 速率限制?

    我使用一些自行开发的脚本来获取有关我的帖子和关注者的信息 最近我发现 Instagram 更改了我的应用程序的速率限制 我在标题中看到以下信息 x ratelimit limit 200 我了解了 Instagram 博客和页面的变化 但发
  • 如何在 Android 应用程序中显示日历 UI? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的应用程序中使用日历 如下图所示 我希望在我的活动中使用此日历 UI 我怎样才能做到这一点 呵呵 我们之前已经这样做过 请参阅
  • Excel 中的单元格“数字存储为文本”

    我有一个 C 程序 它获取旧报告的文本文件并映射到 Excel 工作表 但对于交易单元格 它输出为 数字存储为文本 这不允许 任何格式 我们想要显示 1 000 00 但它仅显示为 1000 有什么办法可以得到这种格式吗 这些列是余额和金额
  • Bootstrap 3.3.5 中的多级下拉菜单

    我有以下 HTML 代码 并根据 Bootstrap 文档中的标记将其构建为我认为应该实现的方式 div class navbar collapse collapse ul class nav navbar nav li class act
  • Perl - 将数组元素句子与变量进行比较

    我使用 grep 返回临时F 文件和 arrayWarning 之间不匹配的数组 my c grep map 1 temporaryF arrayWarning c 里面有很多行 例如 Sun Sep 30 00 05 55 fibre c
  • 如何在 r 中没有警告消息的情况下知道 lme4 中模型是否收敛或未能收敛?

    重复的 例如 我可以通过以下方式评估这个多级模型是否是单一拟合 使用isSingular 功能 同样 有什么方法可以知道这个模型是收敛还是失败 我的顾问说 如果模型无法收敛 则不会估计标准误差 然而 尽管以下未能收敛 但似乎估计了标准误差