2016-09-21 13 views
2

ベイジアンネットワークで条件付き確率を推定した後、 1ノードの確率(Inlet_gas_total_pressure)を以下のように尋ねました。ノードInlet_gas_total_pressure(多項分布)ベイジアンネットワーク(Rコード)における1つのノードの条件付き確率変更

条件付き確率テーブルの

bn.mle.before$"Inlet_gas_total_pressure" 

パラメータ:

 no  yes 
0.843127 0.156873 

bn.mle.before$"Inlet_gas_total_pressure"$prob 

     no  yes 
0.843127 0.156873 

私は0.156873〜0.4の "はい" の確率値を変更したいです。
どうすればいいですか? 以下は私の裁判でしたが、失敗しました。 check.fit.dnode.specで

bn.mle.before$"Inlet_gas_total_pressure" <- list(prob=c("no"=0.6, "yes"=0.4)) 

エラー(値、ノード=名): ノードInlet_gas_total_pressureの条件付確率分布は、表、行列、または多次元配列でなければなりません。

私を助けてください。

+0

エラーはそれがリストではありません示唆

原因1

ノードのための確率を変更しました。どのような種類のオブジェクトか 'dput(bn.mle.before $" Inlet_gas_total_pressure ")'を見るために 'str(bn.mle.before $" Inlet_gas_total_pressure ")'を見て、新しいテーブルと同じ方法 – user20650

答えて

1

同じ問題が発生しました。 ここに、その日を保存する方法を示すおもちゃの例があります。

library(bnlearn) 
Learning.set4=cbind(c("Yes","Yes","Yes","No","No","No"),c("Blue","Green","Blue","Green","Green","Green"),c(9,10,8,3,2,1)) 
Learning.set4=as.data.frame(Learning.set4) 
Learning.set4[,c(3)]=as.numeric(as.character(Learning.set4[,c(3)])) 
colnames(Learning.set4)=c("Cause1","Cause2","Cons") 
b.network=empty.graph(colnames(Learning.set4)) 
struct.mat=matrix(0,3,3) 
colnames(struct.mat)=colnames(Learning.set4) 
rownames(struct.mat)=colnames(struct.mat) 
struct.mat[2,3]=1 
struct.mat[1,3]=1 
bnlearn::amat(b.network)=struct.mat 
haha=bn.fit(b.network,Learning.set4) 

print(haha$Cause1$prob) 

T=haha$Cause1$prob 
T[[1]]=0.8 
T[[2]]=0.2 

haha$Cause1=T 
print(haha$Cause1$prob) 

私は正常に乾杯

+0

あなたの親切な助けをありがとう、ありがとう。やってみます。良い一日を過ごしてください! –

+0

問題ありません。 私のアプローチは動作しても少し不器用です。誰かがより良い解決策を持っているなら、私はそれを使用して喜んででしょう。 乾杯 –

関連する問題