用于 glmer 的用户定义链接函数,用于已知命运生存建模

2023-12-06

生态学中的常见情况是具有二元结果(0=死亡,1=生存)的生存模型,其中个体(在本例中考虑鸟类的个体筑巢尝试)在暴露于死亡风险的天数方面存在差异。为了解决这个问题,我们使用了修改后的逻辑回归,它将暴露天数合并到链接函数中。
正如 Shaffer (2004) 所描述的:

“通过选择适当的预测函数,以 x 为单位对每日生存率进行建模,在我们的例子中,该函数应该产生 0 到 1 之间的值。正如逻辑回归中所做的那样,我们使用 S 形逻辑函数:

enter image description here

我们的广义线性模型的系统分量是 [s(x)]t。接下来,我们考虑这个函数:

enter image description here

上述函数对于 θ 是单调且可微的,可以证明 g(θ) = β0 + β1x,满足广义线性模型中链接函数的标准。这三个组成部分:二项式响应分布、表达式 1 中给出的预测函数以及表达式 2 中给出的链接函数完全指定了我们的广义线性模型。该模型(以下简称“逻辑暴露模型”)与逻辑回归模型类似,但链接函数的形式有所不同。 Logistic 暴露链接函数的分子和分母中包含指数 (1/t),而 Logistic 回归链接函数中不存在该指数。指数对于解释区间幸存概率取决于区间长度这一事实是必要的。”

此链接函数的代码可在网络上找到,如果您输入“help(family)”,它也是 R 中描述的示例链接函数之一:

logexp <- function(days = 1)
{
linkfun <- function(mu) qlogis(mu^(1/days))
linkinv <- function(eta) plogis(eta)^days
mu.eta <- function(eta) days * plogis(eta)^(days-1) *
  .Call("logit_mu_eta", eta, PACKAGE = "stats")
valideta <- function(eta) TRUE
link <- paste("logexp(", days, ")", sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
               mu.eta = mu.eta, valideta = valideta, name = link),
          class = "link-glm")
}

它在这样的模型中工作得很好:

glm(survive ~ date, family=binomial(link=logexp(days=dat$Days)),data=dat)

我遇到的问题是当尝试在 GLMER 模型中使用此自定义链接函数并添加随机效果时(我在网上找到了一个在此实现此方法的示例:http://rstudio-pubs-static.s3.amazonaws.com/4082_51aa699bd9f041c7b3f7cf7b9252f60c.html).

在我们的例子中,我们希望将站点作为随机效应包括在内。模型的制定方式与之前的 GLM 相同:

glmer(survive ~ date + (1|site), family=binomial(link=logexp(days=dat$Days)),data=dat)

但是,现在我收到一条错误消息:

famType(glmFit$family) 中的错误: 未知链接:“logexp(3)”未知链接:“logexp(4)”未知链接:“logexp(3)”未知链接:“logexp(2)”未知链接:“logexp(3)”未知链接:“logexp” (3)'未知链接:'logexp(4)'未知链接:'logexp(3)'未知链接:'logexp(2)'未知链接:'logexp(1)'未知链接:'logexp(4)'未知链接:'logexp(5)'未知链接:'logexp(4)'未知链接:'logexp(3)'未知链接:'logexp(4)'未知链接:'logexp(5)'未知链接:'logexp( 3)'未知链接:'logexp(4)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(3)'未知链接:'logexp(2) )'未知链接:'logexp(1)'未知链接:'logexp(3)'未知链接:'logexp(1)'未知链接:'logexp(1)'未知链接:'logexp(1)'未知链接: 'logexp(1)' 未知 另外:警告消息: 在 if (!(lTyp 1 并且仅使用第一个元素

该错误消息列出了每行数据的未知链接,以及与该嵌套访问(或数据行)的暴露天数相对应的数字。

例如:第一个“logexp(3)”对应于具有 3 个暴露天数的第一行数据。

有其他人能够在 GLMER 模型中使用此自定义链接函数吗?或者如果没有,有人知道导致错误的原因吗?

######更新######

非常感谢 Ben Bolker 解决了这个问题。我更新到3.0.2和最新版本的lme4并使用链接功能Ben的R相关帖子(https://www.rpubs.com/bbolker/logregexp),就是这个:

library(MASS)
logexp <- function(exposure = 1)
{
linkfun <- function(mu) qlogis(mu^(1/exposure))
## FIXME: is there some trick we can play here to allow
##   evaluation in the context of the 'data' argument?
linkinv <- function(eta)  plogis(eta)^exposure
mu.eta <- function(eta) exposure * plogis(eta)^(exposure-1) *
  .Call(stats:::C_logit_mu_eta, eta, PACKAGE = "stats")
valideta <- function(eta) TRUE
link <- paste("logexp(", deparse(substitute(exposure)), ")",
               sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
               mu.eta = mu.eta, valideta = valideta, 
               name = link),
          class = "link-glm")
}

您需要使用更新版本的lme4包,例如CRAN上刚刚上线的1.0-4版本。早期版本不允许用户指定链接功能。

另请注意,您上面发布的代码是not最新版本中出现的内容?family,其中(已过时).Call("logit_mu_eta", eta, PACKAGE = "stats")被纯 R 实现取代:

logexp <- function(days = 1)
     {
         linkfun <- function(mu) qlogis(mu^(1/days))
         linkinv <- function(eta) plogis(eta)^days
         mu.eta <- function(eta) days * plogis(eta)^(days-1) * binomial()$mu_eta
         valideta <- function(eta) TRUE
         link <- paste0("logexp(", days, ")")
         structure(list(linkfun = linkfun, linkinv = linkinv,
                        mu.eta = mu.eta, valideta = valideta, name = link),
                   class = "link-glm")
     }

The 您在上面指定的链接事实上确实有这样一个模型的例子(但它确实需要最新版本lme4).

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

用于 glmer 的用户定义链接函数,用于已知命运生存建模 的相关文章

  • dplyr +“meta”-columns:当列包含要使用的其他列的名称而不是数据时

    我想知道以下问题在 dplyr 中是否有一个优雅的解决方案 要提供一个简单的可重现示例 请考虑以下 data frame df lt data frame a 1 5 b 2 6 c 3 7 ref c a a b b c stringsA
  • 如何在 R 中“推断”面板数据的值?

    我有一个带有 NA 值的面板数据 如下所示 uid year month day value 1 1 2016 8 1 NA 2 1 2016 8 2 NA 3 1 2016 8 3 30 4 1 2016 8 4 NA 5 1 2016
  • 安装 gplots 时出错

    我正在 OSX v 10 9 2 上运行 R v 3 0 3 当尝试使用以下命令在 R studio 中安装 gplots 包时 出现错误 gt library gplots Error in library gplots there is
  • 将函数应用于矩阵列表

    我有一个矩阵列表 注意 它们的维度与此示例不同 x lt matrix 1 10 ncol 2 y lt x 300 mylist lt list x y 我想运行一个函数networklevel在矩阵列表中的每个矩阵上 该函数有各种可以计
  • 无效的命令名称“tk_chooseDirectory”错误

    我使用 bioconductor 进行 WES 管道 并使用 tk choose dir 选择用户存储输入文件的目录 并将其存储以供进一步使用 这里是命令行 library tcltk dataDir lt dirname tk choos
  • r:按多列分组并计数

    我有以下数据框 df LeftOrRight SpeedCategory NumThruLanes R 25to45 3 L 45to62 2 R Gt62 1 我想按速度类别对其进行分组 并循环遍历其他列以获取每个速度类别中每个唯一代码的
  • ggsubplot 是否适用于 R 3.2.1+?

    CRAN 提供的 ggsubplot 版本与 R 的最新版本 例如 3 1 1 不兼容 运行 ggsubplot 示例会返回以下错误 Error in layout base data vars drop drop At least one
  • 根据 R 中的字符串模式选择行

    假设我有以下数据 df lt data frame name c TO for Turnover for people HC people Hello world beenie man apple pears TO is number c
  • R - 通过合并和超过 2 个后缀进行减少(或者:如何合并多个数据帧并跟踪列)

    我正在尝试基于 2 列合并 4 个数据帧 但要跟踪列源自哪个数据帧 我在跟踪列时遇到问题 参见 dput dfs 帖子末尾 df example df1 Name Color Freq banana yellow 3 apple red 1
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1
  • XLConnect 无法确定 JAVA_HOME 错误

    感谢您的帮助 我正在尝试运行 XLconnect 但收到此错误消息 gt library XLConnect lib loc C Users 1144143929 Documents R win library 2 15 Error onL
  • 跨类别和列自动化卡方

    我有一个调查数据框 其中包含几个问题 列 编码为 1 同意 0 不同意 受访者 行 根据 年龄 年轻 中年 老年 地区 东 中 西 等指标进行分类 大约有30个类别总共 3个年龄 3个地区 2个性别 11个职业等 在每个指标中 类别不重叠且
  • RMySQL fetch - 找不到继承的方法

    使用 RMySQL 我想将数据从数据库加载到 R 中的数据帧中 为此 我使用以下代码 R连接数据库 con lt dbConnect MySQL user root password password dbname prediction h
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • 在ggplot2中,箱线图线的末尾代表什么?

    我找不到箱线图线条端点代表什么的描述 For example here are point values above and below where the lines end 我意识到盒子的顶部和底部是第 25 个和第 75 个百分位数
  • 使用 R Markdown 文档作为函数源

    我正在研究 R Markdown 来记录我经常使用的功能 我会将它们放入 R Markdown 文件中以记录它们 然后如果我几个月后回来查看它 就能够阅读我在函数背后的想法 我的问题是 如果我开始一个新的 R 项目 是否可以获取 r mar
  • 使用 R 将日期格式的字符串列表/向量转换为 posix 日期类

    我有一个日期格式的字符串列表 我想将其转换为可以使用 R 操作的 posix 日期列表 我该怎么做 这就是我所拥有的 但我最终得到了一个列表 a lt c 2009 01 01 00 00 00 2009 01 01 00 00 00 z
  • 使用矢量相应地更改传单线条的颜色

    无论如何 是否可以根据某些变量的值更改传单线条的颜色 我用谷歌搜索 发现了这个link http hgoebl github io Leaflet MultiOptionsPolyline demo 然而 我想知道是否有一种简单的方法可以在
  • R ggplot2 分面保持比率但覆盖/定义输出图大小

    我目前正在使用 ggplot2 来比较不同组的统计数据 每个组属于不同的区域 这是通过运行 R 脚本的 Web 应用程序 tikiwiki CMS 插件 R 完成的 每个区域我可以有 2 到 30 个或更多组 相同的 R 脚本针对唯一网页中
  • 如何在闪亮的observeEvent中监听多个事件表达式

    我想要两个不同的事件触发观察者 有人建议here https stackoverflow com questions 34731975 how to listen for more than one event expression wit

随机推荐

  • Groovy 脚本读取 xml 文件并使用文件内容更新下一步请求

    要求 从文件夹中读取xml文件并将文件内容传递给Soap请求 Issue我试图使用groovy脚本读取保存在文件夹中的文件 但无法读取文件的内容 我在尝试打印 xml 文件的内容时遇到空指针异常 def fileList new File
  • 创建计算列并舍入

    我有 3 个numeric 18 2 我的表中的列 我想创建一个fourth column那是computed 我在 SSMS 中创建了计算列numeric 18 2 就像其他 3 列一样 当我运行SELECT针对我的新列 它计算得很好 但
  • 在 Nuxt 中设置输出文件夹的路径

    在 Windows 中工作 我可以使用 nuxt 项目生成静态站点 npx nuxt generate 我有兴趣为生成的静态文件设置输出文件夹 我正在通读https nuxtjs org api configuration generate
  • DBRefs(Mongo 文档引用)未立即获取

    我正在以最简单的方式使用 Mongo 与 Spring Data 结合使用 我有两个 第一类 实体 Documents A 和 B 其中 A 中有 B 的引用 DBRef 创建 A 和 B 时一切正常 但是 当读取对象 A 通过 Id 时
  • Javascript中是否有“0b”或类似的东西来表示二进制数

    我知道0x是 Javascript 中十六进制数字的前缀 例如 0xFF代表数字255 二进制数有类似的东西吗 我希望0b1111来表示数字15 但这对我不起作用 Update 较新版本的 JavaScript 特别是 ECMAScript
  • oracle中的条件选择语句

    我有两个表 分别称为订单和公共假期 如下所示 订单表 OrderId OrderDate 1 10 Mar 2017 2 12 Mar 2017 3 30 Mar 2017 公众假期表 HoliId HolidayDate 1 10 Mar
  • 如何设置 View.setVisibility(GONE) 动画

    我想做一个Animation当一个View将其可见性设置为GONE 不但没有消失 View应该 崩溃 我尝试过这个ScaleAnimation但随后View是折叠的 但布局只会在折叠之后 或之前 调整其空间大小Animation停止 或开始
  • 颜色不被子元素继承?

    我已尝试尽可能简化下面的 HTML 为什么CSS属性 color 01FFDD 被嵌套表的所有元素忽略 嵌套 CSS 使用 div 一般对我有用 但在这里不行 难道我做错了什么 div
  • 一系列承诺[重复]

    这个问题在这里已经有答案了 我正在写一篇文章 我必须从不同城市的 API 获取 json 数据并构建 DOM 到目前为止 我已经能够做到这两点了 唯一的问题是不同城市的API响应时间不同 因此 当我构建 DOM 时 它们的顺序与我调用函数的
  • 从itextsharp注释中弹出一个窗口来显示图像和文本

    我想在 C 项目中添加并弹出窗口 通过单击 itextsharp 注释来显示图像和文本 iTextSharp text pdf PdfAnnotation annot iTextSharp text pdf PdfAnnotation Cr
  • 永久隐藏Android状态栏

    我正在尝试隐藏 Android 4 4 设备上的系统状态栏 这是针对信息亭模式的 其中我的应用程序将是设备上运行的唯一应用程序 目前的目标设备是 2013 款 Nexus 7 该设备已获得 root 权限 并且我已经能够完全删除底部导航栏
  • 使用 ToLower() 进行切换会导致错误 CS0426 类型名称 '' 在类型 '' 中不存在

    为什么编译器仅在 switch 语句中为常量值调用方法时才会抱怨 为什么会出现错误The type name A does not exist in the type CS0426 类型中不存在类型名称 A ClassificationId
  • 非递归地检索二叉树节点的深度

    任何人都可以指出一种获取二叉树中节点深度的方法 不是平衡树 或 BST 不使用递归 最好使用 Java C C 节点表示为 class Node Node Left Node Right string Value int Depth 我的第
  • Camel-K 无法识别本地包

    我有一个使用自己的处理器的 RouteBuilder 类 当使用 Maven 在 Camel 中本地运行时 它运行良好 但是 当我尝试使用camel k时 它说找不到该包 有什么我需要做的吗 我的处理器 package com test p
  • 帕累托优化 - 非支配点

    我编写了一个算法 它返回一个与 nsga2 返回的列表类似的列表 mco 包的 nsga2 pdf 该算法本身无法识别一个点是否为非支配点 它返回的一些点是主导的 它只包含点及其值 而不包含 nsga2 返回的逻辑向量 我试图获得非支配点
  • 从对象(日期对象)解构函数

    如果我想破坏一个对象我会这样做 const obj a a fn gt some function const fn obj fn OR const a fn obj console log fn 这不适用于Date目的 未捕获的类型错误
  • Python 中的字典有单一的 repr 值吗?

    In this question 有人建议在字典上调用 repr 是将其存储在另一个字典中的好方法 这取决于 repr 是否相同 无论键如何排序 是这样吗 附言 最初问题的最优雅的解决方案实际上是使用 freezeset 不 键添加到字典的
  • ipython笔记本工具栏自定义

    我想在 ipython 笔记本上添加一个新的工具栏按钮 我得到了一个好的link提到了这一点 所以我创建一个新文件 ipython profile default static custom custom js 包含以下内容 IPython
  • PdfBox 编码符号货币欧元

    我使用 Apache PDFBox 库创建了一个 PDF 文档 我的问题是在页面上绘制字符串时对欧元货币符号进行编码 因为基本字体 Helvetica 不提供此字符 如何将输出 转换为符号 不幸的是 PDFBox 的字符串编码还远非完美 版
  • 用于 glmer 的用户定义链接函数,用于已知命运生存建模

    生态学中的常见情况是具有二元结果 0 死亡 1 生存 的生存模型 其中个体 在本例中考虑鸟类的个体筑巢尝试 在暴露于死亡风险的天数方面存在差异 为了解决这个问题 我们使用了修改后的逻辑回归 它将暴露天数合并到链接函数中 正如 Shaffer