2017-09-10 3 views
1

Je crée un réseau bayésien en utilisant le paquet gRain dans R. Lorsque j'essaie de compiler les tables de probabilités conditionnelles, j'obtiens l'erreur 'Les dimensions de la table ne correspondent pas'. La table en question prend la forme A | B, où A peut prendre trois valeurs possibles et B peut en prendre deux. J'ai entré un total de 12 valeurs dans la définition de cptable basée sur les six combinaisons possibles. Toute aide serait très appréciée car j'ai vérifié et recherché en vain et ne peux pas voir ce qui ne va pas. C'est mon code.R g Erreur d'erreur - les dimensions de la table ne correspondent pas

# define levels 
lh <- c("low", "high") 
lmh <- c("low", "medium", "high") 

# specify the conditional probability tables 
eh <- cptable(~eh, values=c(0.2, 0.8), levels=lh) 
inf.oil.eh <- cptable(~inf | oil:eh, values = c(0.9, 0.1, 0.1, 0.9, 0.1, 0.9, 0.01, 0.99), levels=lh) 
bp.oil <- cptable(~bp | oil, values=c(0.9, 0.1, 0.1, 0.9, 0, 1, 0.1, 0.9, 0.4, 0.6, 0.5, 0.5), levels=lmh) 
oil.eh <- cptable(~oil | eh, values=c(0.9, 0.1, 0.05, 0.95), levels=lh) 
rt.inf.eh <-cptable(~rt | inf:eh, values=c(0.9, 0.1, 0.1, 0.9, 0.1, 0.9, 0.01, 0.99), levels=lh) 
# compile the tables 
plist <- compileCPT(list(eh, oil.eh, inf.oil.eh, bp.oil, rt.inf.eh)) 

L'erreur est la suivante:

Error for v,pa(v): bp, oil 
    List of 2 
    $ bp : chr [1:3] "low" "medium" "high" 
    $ oil: chr [1:2] "low" "high" 
    num [1:12] 0.9 0.1 0.1 0.9 0 1 0.1 0.9 0.4 0.6 ... 
     Error in compileCPT(list(eh, oil.eh, inf.oil.eh, bp.oil, rt.inf.eh)) : 
     Table dimensions do not match! 

Répondre

1

Vous spécifiez trop de valeurs pour la table de probabilité conditionnelle pour bp|oil. Depuis oil a 2 niveaux et bp 3 vous avez besoin 6 probabilités conditionnelles, mais vous avez 12 dans la ligne

bp.oil <- cptable(~bp | oil, values=c(0.9, 0.1, 0.1, 0.9, 0, 1, 0.1, 0.9, 0.4, 0.6, 0.5, 0.5), levels=lmh) 
+0

Merci Harald - je commençais à me habituer à ajouter dans les paires de p, 1-p pour les variables deux valeurs et a fait la même chose ici! – Kate