JAGS 错误 - 可能涉及以下部分或全部节点的有向循环

2023-12-30

完整数据集包含约 11,000 行。我一直在使用 K=400 运行代码,同时检查代码是否运行。

所有行都与地图上的特定单元格相关,并包含从 Sentinel-2 图像和数字高程地图中提取的信息。

117 个细胞的子集还包含实地考察中记录的栖息地协变量。因此,一些列,包括响应变量(S1 和 S2)和 tussac,以高比例的 NA 为特征。

代码:

add_c4 <- "model{
for(i in 1:K) {
S1[i]~dpois(lambda1[i])
lambda1[i]<-exp(a0+a1*DEM_slope[i]+a2*DEM_elevation[i]+a3*tussac[i]+a4*S2[i])

S2[i]~dpois(lambda2[i])
lambda2[i]<-exp(c0+c1*DEM_slope[i]+c2*DEM_elevation[i]+c3*tussac[i]+c4*S1[i])

muLogit_tussac[i]<-b0 + sentinel1[i] + sentinel3[i] + sentinel7[i] + sentinel8[i] + sentinel9[i] + DEM_slope[i]

Logit_tussac[i]~dnorm(muLogit_tussac[i], tau)
logit(tussac[i])<-Logit_tussac[i]
}

# Priors

a0~dnorm(0, 10)
a1~dnorm(0, 10)
a2~dnorm(0, 10)
a3~dnorm(0, 10)
a4~dnorm(0, 10)

b0~dnorm(0, 10)
b1~dnorm(0, 10)
b2~dnorm(0, 10)
b3~dnorm(0, 10)

c0~dnorm(0, 10)
c1~dnorm(0, 10)
c2~dnorm(0, 10)
c3~dnorm(0, 10)
c4~dnorm(0, 10)

tau~dgamma(0.001, 0.001)

#data# S1, S2, K, sentinel1, sentinel3, sentinel7, sentinel8, sentinel9, DEM_slope, DEM_elevation
#inits# a0, a2, a3, a4, b0, b1, b2, b3, c0, c2, c3, c4
#monitor# a0, a1, a2, a3, a4, b0, b1, b2, b3, tau, ped, dic, c0, c1, c2, c3, c4
}"

当我包含 'c4*S1[i]' 时,出现以下错误:

Possible directed cycle involving some or all of the following nodes

然后继续列出 S1、S2、lambda1 和 lambda2 的所有值。

删除“c4*S1[i]”会导致代码运行。

我浏览了以下线程:

JAGS 中可能存在定向循环错误 https://stackoverflow.com/questions/43428255/possible-directed-cycle-error-in-jags

https://stats.stackexchange.com/questions/220312/coding-a-jags-error-model-for-a-dependent-variable-that-has-increasing-variance https://stats.stackexchange.com/questions/220312/coding-a-jags-error-model-for-a-dependent-variable-that-has-increasing-variance

其中的问题似乎是由发帖者在方程两边使用“y”引起的。我认为我的问题是由于a4将代码发送到S2部分而c4将其发送回S1部分引起的,这有点像定向循环。知道如何解决这个问题吗?

我已经包含了数据集的顶行,以防它有任何用处:

S1 S2 Logit_tussac moisture DEM_slope DEM_aspect DEM_elevation sentinel1 sentinel2 sentinel3 sentinel4 sentinel5 sentinel6 sentinel7 sentinel8 sentinel9 sentinel10
NA NA     NA            NA  2.434239   168.5011   0.588606366    0.0413    0.0499    0.0531    0.1035    0.1862    0.1968    0.1808    0.1318    0.0400     0.0199
NA NA     NA            NA  3.705001   178.1289   1.007037127    0.0966    0.1108    0.1212    0.0855    0.0917    0.1063    0.0937    0.1842    0.0341     0.0161
NA NA     NA            NA  5.006181   180.0000   1.883010797    0.1309    0.1472    0.1361    0.0855    0.0917    0.1063    0.0937    0.1572    0.0341     0.0161
NA NA     NA            NA  5.006181   180.0000   2.758984468    0.0542    0.0512    0.0472    0.0145    0.0127    0.0092    0.0166    0.0510    0.0148     0.0080

数据集子集,以便仅包含远程和本地感测数据的 117 行:

S1 S2 Logit_tussac moisture DEM_slope DEM_aspect DEM_elevation sentinel1 sentinel2 sentinel3 sentinel4 sentinel5 sentinel6 sentinel7 sentinel8 sentinel9 sentinel10
NA NA        NA        NA   14.917334   256.1612      12.24432    0.0513    0.0588    0.0541    0.1145    0.1676    0.1988    0.1977    0.1658    0.1566     0.0770
0  0  -9.210240         1   23.803741   225.1231      16.88028    0.1058    0.1370    0.2139    0.2387    0.2654    0.2933    0.3235    0.2928    0.3093     0.1601
NA NA        NA        NA   20.789165   306.0945      18.52480    0.0287    0.0279    0.0271    0.0276    0.0290    0.0321    0.0346    0.0452    0.0475     0.0219
NA NA -9.210240         1    6.689442   287.9641      36.08975    0.0462    0.0679    0.1274    0.1535    0.1797    0.2201    0.2982    0.2545    0.4170     0.2252
0  0  -9.210240         1   25.476444   203.0659      23.59964    0.0758    0.1041    0.1326    0.1571    0.2143    0.2486    0.2939    0.2536    0.3336     0.1937
1  0  -1.385919         3    1.672511   270.0000      39.55215    0.0466    0.0716    0.1227    0.1482    0.2215    0.2715    0.3334    0.2903    0.3577     0.1957

正如您所正确识别的那样,您的问题是模型图中的有向循环。这是一个问题的原因是,DAG(有向无环图)不包含任何有向循环这一点非常重要,否则无法保证我们可以定义稳定的后验来进行采样。

例如,采用以下包含有向循环的模型:

model <- 'model{

    for(i in 1:N){
        a[i] ~ dnorm(b[i], tau)
        b[i] ~ dnorm(a[i], tau)
    }

    tau ~ dgamma(0.01,0.01)

    #monitor# tau
    #data# N

}'

N <- 10
runjags::run.jags(model)

没有合理的方法来估计该模型,JAGS 会告诉您这一点。但理论上可以估计这个模型:

model <- 'model{

    for(i in 1:N){
        a[i] ~ dnorm(b[i], tau)
        b[i] ~ dnorm(a[i], tau)
    }

    tau ~ dgamma(0.01,0.01)

    #monitor# tau
    #data# N, a

}'

N <- 10
a <- rnorm(N)
runjags::run.jags(model)

改变的是所有 a[] 现在都是固定的(观察到的),所以我们实际上可以估计这个模型。但 JAGS 仍然检测到有向循环,因此需要解决方法:

model <- 'model{

    for(i in 1:N){
        a[i] ~ dnorm(b[i], tau)
        b[i] ~ dnorm(aa[i], tau)
    }

    tau ~ dgamma(0.01,0.01)

    #monitor# tau
    #data# N, a, aa

}'

N <- 10
a <- rnorm(N)
aa <- a
runjags::run.jags(model)

这通过欺骗 JAGS 认为 a[] 和 aa[] 不相关来隐藏有向循环。但这仅在观察/固定所有 a[] 时才有效,否则模型中不会估计或定义缺失的 aa[]。在您的情况下, S1[] 和 S2[] 似乎被部分观察到,因此这个技巧将不起作用,除非您可以简单地省略缺少 S1 或 S2 的行/观察(这可能不可行,因为您说它们具有高NA 的比例)。

否则,您将不得不以某种方式重新制定模型以打破定向循环。这将涉及思考系统底层的生物过程,以及如何在不创建定向循环的情况下表示您想要的关系,因此这并不是我们真正可以提供帮助的事情。

希望有帮助,

Matt

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

JAGS 错误 - 可能涉及以下部分或全部节点的有向循环 的相关文章

  • jQuery 循环 pagerAnchorBuilder

    我正在使用 Cycle 插件在新闻旋转器中使用 这意味着我使用 Div 来填充幻灯片而不是图像 我的最终目标是制作一个寻呼机 而不是通常的 1 2 3 4 等 而是返回幻灯片中的第一个 H3 标签 我知道这可能是一个小选择问题 但这是我到目
  • 检查循环(模 16)数是否大于另一个?

    我有两个以 16 为模的循环整数 因此它们的值介于 0 到 15 之间 我需要比较两个数字以确定是否n 1大于n 0 n 1 gt n 0 显然 这没有准确定义 所以我定义n 1大于n 0如果小于前面8个 数字 否则小于n 0 如果不相等
  • 使用 jQuery 的 .each() 函数将函数附加到多个幻灯片容器

    我在单页网站上有很多小的 jQuery Cycle 幻灯片 div 容器 例如 div class foo bar data value varies on each container img src directory img 0 jp
  • Jquery Cycle — 多个嵌套幻灯片和循环终止

    我正在尝试使用 jQuery Cycle 插件构建一个幻灯片 该插件在一些顶级幻灯片中包含另一层嵌套幻灯片 主 容器 幻灯片水平滑动 然后 对于左侧包含多个图像的 容器 幻灯片 这些图像垂直向上滑动 此处示例 因为我认为很难想象 http
  • Perl - while (<>) 文件处理[重复]

    这个问题在这里已经有答案了 一个简单的程序while lt gt 处理作为参数给出的文件 program 1 file 2 file 3 file 和 Unix 系统的标准输入 我认为它将它们连接在一个文件中 并且逐行工作 问题是 我如何知
  • JAGS 错误 - 可能涉及以下部分或全部节点的有向循环

    完整数据集包含约 11 000 行 我一直在使用 K 400 运行代码 同时检查代码是否运行 所有行都与地图上的特定单元格相关 并包含从 Sentinel 2 图像和数字高程地图中提取的信息 117 个细胞的子集还包含实地考察中记录的栖息地
  • Cycle2 旋转木马活动滑块位于中心

    我将 Cycle2 与轮播寻呼机一起使用 与此演示的方式相同 http jquery malsup com cycle2 demo caro pager php http jquery malsup com cycle2 demo caro
  • 如何解释 jag 中的某些语法(n.adapt、update..)?

    我对 jag 中的以下语法感到非常困惑 例如 n iter 100 000 thin 100 n adapt 100 update model 1000 progress bar none 目前我认为 n adapt 100意味着您将前 1
  • 每个列表视图项目中旋转进度条

    我已经为此挠头很久了 并寻找答案但没有任何运气 这似乎是微不足道的 但据我所知 事实并非如此 我在 Android 应用程序中使用列表视图 其中每个项目 视图 在 内容已加载并显示 内容是通过http调用和json检索的 因此可能需要一段时
  • python中的循环引用

    我不确定python如何处理循环引用 引用循环 我检查了一些答案并发现this https stackoverflow com questions 8025888 does python gc deal with reference cyc
  • 枚举有向图的所有最小有向循环

    我有一个有向图 我的问题是枚举所有minimal 不能被构造为其他循环的并集的循环 该图的有向循环 这与 Tarjan 算法的输出不同 例如 对于有向图这个维基百科页面 http en wikipedia org wiki Strongly
  • 具有 AJAX 功能的 jQuery 循环插件

    我有一个页面 其中有多个图片滑块 例如 50 个滑块 每个滑块有 5 10 张图片 不幸的是 由于滑块数量巨大 页面加载速度非常慢 到目前为止 我一直在使用 Malsup 著名的 jQuery Cycle 插件 然而 这缺乏 AJAX 功能
  • r igraph 查找所有循环

    我已经指示 igraph 并想要获取所有周期 周长函数可以工作 但只返回最小的周期 R中有没有一种方法可以获取长度大于3的图中的所有循环 没有顶点指向自身和循环 Answer recommended by R Language collec
  • 检查无向图中的奇数循环

    我带着另一个类似的问题回来了 我目前正在开发一个 Java 程序 该程序将检查图是否可 2 色 即它是否不包含奇数循环 奇数长度的循环 整个算法应该在 O V E 时间内运行 V 是图中的所有顶点 E 是图中的所有边 我当前的算法执行深度优
  • JAGS 中缺少预测数据模型

    我正在尝试在 JAGS 中编写最简单的缺失数据模型 一个预测变量 有一些缺失的数据点 和一个结果变量 我知道这个例子不是最有用或最现实的 但它可以帮助我在继续处理更复杂的缺失预测数据场景之前解决模型问题 模型和数据如下 但这是编译错误 Er
  • 在 R 的 JAGS 或 BUGS 中指定离散威布尔分布

    我使用 R 中的 JAGS 将威布尔模型拟合到离散值 将威布尔模型拟合到连续数据没有问题 但当我切换到离散值时 我遇到了麻烦 以下是在 JAGS 中拟合威布尔模型的一些数据和代码 draw data from a weibull distr
  • jquery 循环插件、嵌套幻灯片、“之后”选项或测试第一张和最后一张图像

    在我的嵌套幻灯片中 我有 上一个 和 下一个 控件 如果您在第一张幻灯片上 我希望能够减少 上一张 的CSS不透明度 如果您在最后一张幻灯片上 我希望能够减少 下一张 的CSS不透明度 after onAfter 选项已经足够了 但当放置在
  • Android dagger依赖循环

    我有两个具有相同范围的依赖项 彼此需要 我的依赖项是具有不同方法的域服务 每种方法都有不同的业务案例 某些业务案例可能会使用另一个领域的方法 为此 我需要域 1 可用于域 2 反之亦然 但是当我这样做时 我收到依赖循环编译错误 经过谷歌搜索
  • 如何使用 logit 函数编写 JAGS 二项式模型文件

    我正在做一项作业 使用 JAGS 对二项式分布进行建模p参数是另一个变量的函数d 这就是我正在尝试做的 为两个参数 alpha beta 从后验生成 10000 个样本 当 dist 25 进行 100 次尝试时 根据后验预测成功次数生成样
  • 寻找有向或无向图中的最短循环

    我正在寻找一种算法来找到有向或无向图中的最短周期 例如 对于节点 3 算法可能返回 周期1 3 gt 10 gt 11 gt 7 gt 8 gt 3 周期2 3 gt 10 gt 9 gt 8 gt 3 对于这些循环 最短的是循环 2 位于

随机推荐

  • Django 中的 ModelForm 和 OneToOneField

    我在 Django 中有两个模型与OneToOneField PrinterProfile and PrinterAdress 我正在尝试制作一个表格PrinterProfileForm 但由于某种原因它没有通过PrinterAddress
  • 如何在TFS构建任务中获取代理用户能力?

    我已经宣布了userTFS 2015 构建代理中名为 MyCapability 的功能 以路径作为值 如何在构建任务的 powershell 脚本中获取此值 env MyCapability and MyCapability不工作 遗憾的是
  • Ajax 和后退按钮。哈希值发生变化,但是之前的页面状态存储在哪里?

    我试图让 ajax 与后退按钮一起工作 但缺少一些核心内容 之前的页面状态存储在哪里 CASE 1 点击 让我变红 ajax事件发生并且页面变成红色 哈希 red 点击 让我变黄 ajax事件发生并且页面变成黄色 哈希 yellow 单击后
  • 在未安装 VB6 的情况下运行 VB6 应用程序

    我的问题是 如果我想运行 VB6 应用程序 我必须在客户端计算机上安装 VB6 其实我的VB6版本 无法制作安装文件 所以我只是手动链接到exe文件 有什么方法可以让我不必安装VB6 只需复制一些文件即可运行该应用程序 Thanks 为了运
  • 模块'对象没有属性'drawMatches' opencv python

    我只是在 OpenCV 中做一个特征检测的例子 该示例如下所示 它给了我以下错误 module 对象没有属性 drawMatches 我已经检查了 OpenCV 文档 但不确定为什么会收到此错误 有谁知道为什么 import numpy a
  • 如何在nodejs的ejs文件中显示警报

    例如 我想访问文档对象并想使用警报 所以我在 ejs 文件中创建了一个函数 我想在出现错误时显示警报 所以我正在渲染我的 ejs 文件并给出 2 个参数 一个是结果 另一个是错误 并希望显示是否有错误 显示警报 res render app
  • 如何避免在 PHP 7 中的每个文件上重新声明刻度

    Overview 在 PHP 5 6 中似乎添加declare ticks 1 然后使用register tick function 将遵循任何包含并相应地提供分析信息 在 PHP 7 中 但现在看来我必须添加declare ticks 1
  • PHP短路惰性求值,php.net手册在哪里?

    抱歉 如果这听起来像是一个非常愚蠢的问题 但我用 Google 搜索了网络 还专门用 Google 搜索了 php net 网站和 stackoverflow com 网站 我知道 PHP 会短路惰性求值使用时and or 运算符 但是 P
  • Django - 连接两个模型

    对于以下模型 我想检索在历史表中具有指定间隔之间的过渡日期的条目的所有设备 class History models Model device models ForeignKey DeviceModel to field id transi
  • INNER JOIN 和锁

    我有两张桌子TableA and TableB其中有我想要同时检索和更新的信息 当我使用 SELECT TOP 2 SomeFieldA FROM TableA WITH ROWLOCK UPDLOCK READPAST 一切正常 进程 1
  • Angular 2 - 让子组件加载到父组件中(动态创建)

    我正在尝试动态创建标头 构造标头模板并将其作为 字符串 传递给我的动态组件 我的要求是在标头组件模板字符串中调用另一个组件并加载它 已经创建了一个工作Plunker https plnkr co edit ENa23Q1Qqtvi46CYn
  • MarkLogic XML 到 JSON 的转换

    我正在尝试将此 XML 文件转换为 JSON 但无法取得任何成功 我的 XML 中有两个子元素 但它只返回最后一个 如何获取 JSON 格式的两条记录 XML
  • 升级到 XCode 13(和 iOS 15)后选项卡和导航栏发生变化

    我有一个 iOS 应用程序 自从升级到 Xcode 13 以来 我注意到一些特殊的变化Tab and 导航酒吧 在 Xcode 13 中 选项卡和导航栏上现在有这个黑色区域 并且在启动应用程序时 选项卡栏和导航栏现在都是黑色的 奇怪的是 如
  • Busboy-connect 在保存文件结束之前触发(node.js,express)

    我使用 Busboy connect 从客户端获取上传数据 我尝试保存数据 然后 on finish 将状态正常返回到服务器 问题是 on finish 在文件保存结束之前触发 我是否做错了什么或者这就是模块的工作方式 服务器端代码 con
  • DialogFragment设置Dialog的高度

    我刚刚使用第一个对话框使用 DialogFragment 创建的 一切都很好 除了我无法让对话框包装它的布局 我的布局具有所有元素的高度wrap content In MyFragmentDialog我什至找不到一种方法来暗示它可以用来设置
  • 如何使用 AngularJS 使用 Json 数据向服务器发送 DELETE 请求?

    我必须向服务器发送 http DELETE 请求 类型必须是 JSON 对象如下所示 id value 我的第一个方法是以下代码 但到目前为止它不起作用 http delete http blabla server house id val
  • 基于成员变量的不同视图/数据模板

    我有一个名为的视图模型 ViewModelClass 其中包含一个布尔值 我有另一个视图模型 其中包含 ObservableCollection
  • Jquery 检测 iframe 内 body 标记的更改或 keyup

    我有一个jwysiwyg http akzhan github com jwysiwyg help examples 01 basic html我的页面上的内容编辑器控件 该控件的工作原理是在 iframe 中创建自身 其中包含完整的 ht
  • 如何一起使用Mercurial、Maven和Eclipse?

    我目前正在与 5 名大学同事组成的团队一起开发 Java 项目 实际上 我们将在接下来的几天内完成规划阶段 然后开始实施 对于该项目 我们必须使用 Mercurial 通过 Bitbucket org 和 Apache Maven 我们想使
  • JAGS 错误 - 可能涉及以下部分或全部节点的有向循环

    完整数据集包含约 11 000 行 我一直在使用 K 400 运行代码 同时检查代码是否运行 所有行都与地图上的特定单元格相关 并包含从 Sentinel 2 图像和数字高程地图中提取的信息 117 个细胞的子集还包含实地考察中记录的栖息地