来自pcalg的Pc-Stable

时间:2015-06-08 17:12:14

标签: machine-learning

我使用的是'pcalg'版本2.0-10中的pc-stable来学习结构。据我所知,这个算法不会影响输入数据的顺序,因为它是order_independent。当我以不同的顺序运行它时,我得到了不同的图形。任何人都可以帮我解决这个问题,这是我的代码。

library(pracma)

randindexMatriax <- matrix(0,10,ncol(TrainData))
numberUnique_val_col = vector()
pdf("Graph for Test PC Stable with random order.pdf")

参数(mfrow = C(2,1))    for(i in 1:10)   {

randindex<-randperm(1:ncol(TrainData))
randindexMatriax[i,]<-randindex
TrainDataRandOrder<-data[,randindex]

V <- colnames( TrainDataRandOrder)
UD <-data.frame(TrainDataRandOrder)

numberUnique_val_col = sapply(UD,function(x)length(unique(x)))

suffStat&lt; - list(dm = TrainDataRandOrder,nlev = c(numberUnique_val_col [1],numberUnique_val_col [2],numberUnique_val_col [3],numberUnique_val_col [4],                                                 numberUnique_val_col [5],numberUnique_val_col [6],numberUnique_val_col [7],                                                    numberUnique_val_col [8],numberUnique_val_col [9],                                                      numberUnique_val_col [10],numberUnique_val_col [11],                                                      numberUnique_val_col [12],numberUnique_val_col [13],                                                      numberUnique_val_col [14],numberUnique_val_col [15],                                                      numberUnique_val_col [16],numberUnique_val_col [17],                                                      numberUnique_val_col [18],numberUnique_val_col [19],numberUnique_val_col [20]),adaptDF = FALSE)

pc.fit&lt; - pc(suffStat,indepTest = disCItest,alpha = 0.01,labels = V,fixedGaps = NULL,fixedEdges = NULL,NAdelete = TRUE,m.max = Inf,skel.method =“stable” ,conservative = TRUE,solve.confl = TRUE,verbose = TRUE)

1 个答案:

答案 0 :(得分:1)

&#34;稳定&#34; PC-Stable的一部分仅影响算法的Skeleton阶段。 Orientation阶段仍然依赖于顺序。这两个图表是否具有相同的&#34;骷髅&#34;?也就是说,如果将所有有向边转换为无向边,两个图是否相同?

如果没有,您可能在pcalg中发现了一个错误!请发布样本数据集和两个生成具有不同骨架的图形的列的排序。