2016-11-07 2 views
1

Ich habe ein Bayes-Netzwerk über das bnlearn-Paket und die bn.fit-Funktion mit 6 Prädiktorvariablen für die eine 'Augenfarbe' generiert Variable. Ich versuche, die Wahrscheinlichkeiten jeder möglichen Augenfarbe Kategorie (von denen es 3 gibt) für jede Probe zu bekommen.R: Verwenden von bn.fit, um bedingte Wahrscheinlichkeiten in jeder Kategorie als Ausgabe für ein Bayes-Netzwerk zu erhalten

dag_iris<-empty.graph(nodes=c("rs122","rs128","rs129","rs139","rs180","rs168","eyecolor")) 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs168") 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs128") 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs122") 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs129") 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs139") 
dag_iris<-set.arc(dag_iris,from="eyecolor", to="rs180") 


bn.mle<-bn.fit(dag_iris,data=iris.geno[,2:8],method="mle") 
bn.grain<-as.grain(bn.mle) 
predict.mle<-predict(bn.grain,"eyecolor",newdata=iris_geno[,2:7],predictors =  
c("rs129","rs180","rs128","rs168","rs139","rs122"),method="bayes-lw") 

Dieser Ausgang gibt die höchstmöglichen Kategorie (entweder „blau“, „braun“ oder „int“) für jede Probe, aber ich mag die numerischen Wahrscheinlichkeitswerte in jedem dieser Kategorien (für blau, braun , UND int). Ich habe gegoogelt und die Verwendung von 'prob' in der Vorhersagefunktion der bn.fit-Dienstprogramme gesehen, aber es gibt den Fehler als ein unbenutztes Argument zurück. Ich habe mir die anderen Fragen angeschaut, die etwas damit zu tun haben, und habe nichts gesehen, was dabei helfen könnte. Ich habe das Gefühl, dass mir ein Argument fehlt, das das lösen könnte, oder gibt es eine andere Funktion?

Schätzen Sie jede Hilfe!

+0

wenn Ihr BN ist nicht zu groß, und diskret, Sie genau berechnen können diese mit gRain – user20650

+0

Also habe ich es auch so gemacht, aber als ich es mit den Hugin-Daten verglichen habe, die ich generiert habe (weshalb ich zu R wechselte, weil ich nur die Lite-Version habe und es nicht mit meiner größeren BN umgehen würde), hatte es invertiert einige der Daten für die Kategorien braun und int, also wollte ich einen anderen Weg versuchen – GMD886

+0

GMD886, meinst du, dass einige der vorhergesagten Kategorien mit bnlearn d waren ifrent von Hugin oder gRain war anders als Hugin? Wenn die erste, sollten Sie versuchen, n zu erhöhen, (der Standardwert, ich denke, 500, versuchen Sie 5000, Zeit zulässt) als bnlearn Sampling-Methoden verwendet. Wenn der zweite, würde ich sehen, wie Hugin schätzt, wie gRain exakten Methoden verwendet – user20650

Antwort

1

Durch die Umwandlung des bnlearn Netz zu einem gRain ein, fand ich, dass einfach Hinzufügen der type="distribution" Attribut tat genau das, was ich brauchte:

predict.mle <- predict(bn.grain, c("eyecolor"), 
         predictors=c("rs129","rs180","rs168","rs128","rs139","rs122"), 
         newdata=iris_test[,2:7] , 
         type="distribution") 
+0

Vielen Dank für diese Klarstellung – GMD886

Verwandte Themen