Ich baue ein Bayes'sches Netzwerk mit den bnlearn
Paketen in R. Nachdem ich den Baum erstellt habe, versuche ich einige Wahrscheinlichkeiten abzufragen und gebe den folgenden Fehler zurück ... Error in check.fit.dnode.spec(dist[[node]], node = node) : some conditional probability distributions of node Sprinkler do not sum to one.
. Wenn ich gehe und überprüfe die Sprinkler
es zu einem hinzufügen. Hier ist das Ergebnis Sprinkler
...R einige bedingte Wahrscheinlichkeitsverteilungen von Knoten summieren sich nicht zu
Rain
Slippery_Road true false
true 0.7 0.3
false 0.0 1.0
Hier ist meine gesamte Code ...
require(bnlearn)
vname <- c('Winter', 'Sprinkler', 'Rain', 'Wet_Grass', 'Slippery_Road')
e <- empty.graph(vname)
arc.set <- matrix(c('Winter', 'Winter', 'Sprinkler', 'Rain', 'Rain',
'Sprinkler', 'Rain', 'Wet_Grass', 'Wet_Grass', 'Slippery_Road'),
ncol = 2, dimnames = list(NULL, c('from', 'to')))
arcs(e) <- arc.set
# Winter
cptW <- matrix(c(0.6, 0.4), ncol = 2, dimnames = list(NULL, c('true', 'false')))
cptW
# Sprinkler
cptS <- c(0.2, 0.75, 0.8, 0.25)
dim(cptS) <- c(2, 2)
dimnames(cptS) <- list('Sprinkler' = c('true', 'false'),
'Winter' = c('true', 'false'))
cptS
# Rain
cptR <- c(0.8, 0.1, 0.2, 0.9)
dim(cptR) <- c(2, 2)
dimnames(cptR) <- list('Rain' = c('true', 'false'),
'Winter' = c('true', 'false'))
cptR
# Wet Grass
cptG <- c(0.95, 0.9, 0.05, 0.1, 0.8, 0, 0.02, 1)
dim(cptG) <- c(2, 2, 2)
dimnames(cptG) <- list('Wet_Grass' = c('true', 'false'),
'Rain' = c('true', 'false'),
'Sprinkler' = c('true', 'false'))
cptG
# Slippery Road
cptSR <- c(0.7, 0, 0.3, 1)
dim(cptSR) <- c(2, 2)
dimnames(cptSR) <- list('Slippery_Road' = c('true', 'false'),
'Rain' = c('true', 'false'))
cptSR
dfit <- custom.fit(e, dist = list(Winter = cptW, Sprinkler = cptS,
Rain = cptR, Wet_Grass = cptG,
Slippery_Road = cptSR))
# Calculating probabilities
cpquery(dfit, event = (Slippery_Road == 'false'), evidence = (Winter == 'true'))
Das gezogene Netzwerk direkt von der Adjazenzmatrix ist dass du definiert hast, wenn es nicht wie erwartet ist, dann pro Wahrscheinlich müssen wir die Graph-Adjazenz-Matrix noch einmal überprüfen (als gerichteter Graph). –
Ich hatte meine Werte falsch. Dein Code hat geholfen! – Gilbert