首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Reingold树形图绘制R中bnlearn包爬山算法结果的误差

用Reingold树形图绘制R中bnlearn包爬山算法结果的误差
EN

Stack Overflow用户
提问于 2016-07-06 00:39:15
回答 1查看 534关注 0票数 1

我是第一次发帖,但我是这个网站的长期学习者。这是我的问题的第一次没有被反向工程师-可以从以前的帖子,所以我希望有人能帮助我解决它。

我试图绘制爬山搜索算法(hc来自R中的bnlearn包)的结果,运行在相关矩阵上,作为Reingold树图。

假设我跑:

代码语言:javascript
运行
复制
    hc.obj<-hc(corr.matrix)
    hc.plot<-qgraph(hc.obj, directed = "TRUE", layout = "spring")

我得到了一个弗鲁奇曼-Reingold布局的定向关系,没有问题。

但是无论我如何格式化hc.obj中的信息,我都无法得到一个树布局来工作。例如,使用"layout = tree“运行上面的代码,我得到了错误:”1中的错误,1:不正确的维数“。

下面是一个可重复的例子:

代码语言:javascript
运行
复制
    require("bnlearn")
    require("qgraph")
    cm <- matrix(runif(100), ncol=10)
    cm <- (cm * lower.tri(cm)) + t(cm * lower.tri(cm))
    diag(cm) <- 1 
    cm.df<-as.data.frame(cm)
    hc.obj<-hc(cm.df)
    hc.plot<-qgraph(hc.obj, directed = "TRUE", layout = "tree")

类似地,如果我试图以以下方式运行igraph:

代码语言:javascript
运行
复制
    layout_as_tree(hc.obj)

我得到了错误"Error in layout_as_tree(hc.obj):不是图形对象“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 01:09:39

看起来,您正在尝试使用绘图函数来做一些他们不打算做的事情。

hc.obj是一个bn类的模型对象,而qplot()则支持以下内容:

...either是称重矩阵还是编辑师。也可以是类"sem“(sem)、"mod”(sem)、"lavaan“(lavaan)、”主体“(心理学)、"loadings”(stats)、"factanal“(stats)、"graphNEL”(里格维兹)、"pcAlgo“(pcalg)、”pcAlgo“(巨型)、"select”(巨型)或glasso的输出。

你可以,但是对象。一种方法是简单地使用plot()

代码语言:javascript
运行
复制
if(!require(pacman)) install.packages("pacman")
pacman::p_load(qgraph,bnlearn,Rgraphviz)
cm <- matrix(runif(100), ncol=10)
cm <- (cm * lower.tri(cm)) + t(cm * lower.tri(cm))
diag(cm) <- 1 
cm.df<-as.data.frame(cm)
hc.obj<-hc(cm.df)
plot(hc.obj)

另一种方法是使用graphviz.plot()

代码语言:javascript
运行
复制
bnlearn::graphviz.plot(hc.obj)

如果您进行搜索或查看相关的CRAN任务视图,您可能会发现更多支持bn类对象的包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38214862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档