gpt4 book ai didi

r - R 中 "deal"包中的 jointprior() 函数

转载 作者:行者123 更新时间:2023-12-01 14:09:18 25 4
gpt4 key购买 nike

我正在尝试使用 R 中贝叶斯网络一书的示例 p.39。

但是当我输入它时,出现了以下错误:

    library(bnlearn)
library(deal)
net = network(marks)
prior = jointprior(net, N = 5)
Erreur dans array(1:TD, dim = Dim) : 'dims' doit être de longueur 0

我不明白,因为使用 R 帮助中提供的示例,它可以完美运行!

    data(rats)
rats.nw <- network(rats)
rats.prior <- jointprior(rats.nw,12)

是不是因为“标记”只有连续变量?

最佳答案

您应该做的第一件事是调试。当您遇到错误时,

prior = jointprior(net, 5)
# Error in array(1:TD, dim = Dim) : 'dims' cannot be of length 0

您可以使用traceback 来查看错误发生的位置。

traceback()
# 3: array(1:TD, dim = Dim)
# 2: jointcont(nw, timetrace = timetrace)
# 1: jointprior(net, 5)

这告诉您问题发生在 jointprior 函数内的 jointcont 函数中对 array 的调用中。例如,可以看到相同的错误

jointcont( net, timetrace=FALSE )
# Error in array(1:TD, dim = Dim) : 'dims' cannot be of length 0

好的,所以这告诉您 array 调用中的 Dim 可能是 NULL。你可以看到这个,因为

array(1:1,dim=NULL)
# Error in array(1:1, dim = NULL) : 'dims' cannot be of length 0

如果您通过在控制台中键入 jointcont 查看 jointcont 源代码,您可以看到 Dim 从未从 修改过c()(即 NULL),因为 net$nd 不大于零(它等于零)。看起来 net$nd 是图中离散节点的数量。请注意,rats.nw 有两个离散节点(参见 rats.nd$discrete)。因此,您的函数无法正确运行,因为您的网络没有离散节点。它有五个连续的节点,但没有离散的节点。

当提供给 network 的数据帧中有一列是 factor 时,discrete 节点似乎就产生了。请注意,rats 数据框有两个 factor 列,因此有两个离散节点。 marks 数据框有五个 numeric 列和五个连续节点,但没有 factor 列。通过运行 plot(rats),您可以看到离散节点和连续节点分别是闭合圆和开放圆。

关于r - R 中 "deal"包中的 jointprior() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com