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 错误 - 可能涉及以下部分或全部节点的有向循环 的相关文章

  • Linked List Cycle

    Given a linked list determine if it has a cycle in it Follow up can you solve it without using extra space 最初代码 xff0c 错误
  • Linked List Cycle II

    Given a linked list return the node where the cycle begins If there is no cycle return null Follow up Can you solve it w
  • 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 如果不相等
  • 在 OSX Mavericks 上的 R 中安装 rjags

    我正在尝试在 R 中安装包 rjags 但遇到以下错误 Loading required package rjags Error onLoad failed in loadNamespace for rjags details call d
  • 循环 FPS 下降的可能原因?

    我正在用 opengl 编写一个新的代码库 很早就遇到了一个奇怪的错误 这是重复且可预测的帧速率明显波动 我知道它绝对与渲染的对象成正比 它还与屏幕尺寸成正比 不是视口尺寸 不是窗口尺寸 只是物理设备尺寸 大约是 0 2 1 低 高 帧的比
  • 帮助唐纳德·B·约翰逊的算法,我无法理解伪代码(第二部分)

    我无法理解唐纳德 约翰逊发表的关于在图中查找周期 电路 的论文的某些部分 更具体地说 我无法理解以下伪代码行中提到的矩阵 Ak 是什么 Ak 具有最少的强分量K的邻接结构 由 s s 1 n 导出的 G 子图中的顶点 更糟糕的是 后面的几行
  • JAGS 错误 - 可能涉及以下部分或全部节点的有向循环

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

    我正在尝试让 Jquery Cycle 调整大小 到目前为止 我已经部分成功 它调整了大小 但幻灯片过渡有问题 我不明白为什么 这是整个页面http dl dropbox com u 8847353 Jai Sandhu Design Po
  • 奇怪的 Oracle 行为 - 递归 CTE 中的交叉联接适用于逗号,但不适用于交叉联接子句

    假设以下简单的递归查询r列出几个数字 当查询的递归部分使用逗号分隔的旧方式与不必要的 1 行表交叉连接时 一切正常 with r x as select 1 as x from dual union all select x 1 from
  • 如何使用 rjags / JAGS 的估计值来预测值

    设置模型并使用吉布斯采样对其进行训练后 我得到了所有隐藏值预测的结果 jags lt jags model example bug data data n chains 4 n adapt 100 update jags 1000 samp
  • python中的循环引用

    我不确定python如何处理循环引用 引用循环 我检查了一些答案并发现this https stackoverflow com questions 8025888 does python gc deal with reference cyc
  • 如何加载 rjags

    与许多其他人一样 我在加载和安装 rjags 时遇到问题 我收到错误 library rjags Error onLoad failed in loadNamespace for rjags details call fun libname
  • r igraph 查找所有循环

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

    嗯 我正在使用itertools cycle next 方法与Python 2 6 6 但现在我更新到3 2我注意到itertools cycle 对象没有方法next 我用它来循环一个字符串spin 的方法Spinner班级 所以如果我们
  • 检查无向图中的奇数循环

    我带着另一个类似的问题回来了 我目前正在开发一个 Java 程序 该程序将检查图是否可 2 色 即它是否不包含奇数循环 奇数长度的循环 整个算法应该在 O V E 时间内运行 V 是图中的所有顶点 E 是图中的所有边 我当前的算法执行深度优
  • 在 R 的 JAGS 或 BUGS 中指定离散威布尔分布

    我使用 R 中的 JAGS 将威布尔模型拟合到离散值 将威布尔模型拟合到连续数据没有问题 但当我切换到离散值时 我遇到了麻烦 以下是在 JAGS 中拟合威布尔模型的一些数据和代码 draw data from a weibull distr
  • 如何使用 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 位于
  • JAGS 中的柯西先验

    我正在使用 rJAGS 构建多级贝叶斯模型 并且我想为我的几个参数指定柯西先验 有没有办法在 JAGS 中做到这一点 或者我需要切换到 STAN 吗 我的 JAGS 模型如下 我想更换dnorm柯西分布 但 JAGS 找不到标准R柯西分布

随机推荐

  • 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 个细胞的子集还包含实地考察中记录的栖息地