J'utilise le paquetage bnlearn dans R pour construire un réseau bayésien discret ajusté personnalisé en utilisant à la fois des données et des connaissances spécialisées. http://www.bnlearn.com/examples/custom/R erreur de paquet bnlearn réaffectation des probabilités conditionnelles
Cela implique la création d'un objet en utilisant bn.fit bn.fit() et modifier les distributions locales des noeuds d'intérêt. Pour les réseaux bayésiens discrets (ou les nœuds discrets dans les réseaux gaussiens conditionnels), la table de probabilité conditionnelle peut être extraite de l'objet bn.fit avec coef(), mise à jour et réenregistrée.
library(bnlearn)
dag = model2network("[A][C][F][B|A][D|A:C][E|B:F]") #creates a network
fitted <- bn.fit(dag, learning.test) #(determines conditional probability
given data in learning.test)
fitted[[3]] #CP for node [C] as example, fitted$C also works
cpt <- coef(fitted[[3]]) #extract coefficients from table
cpt[1:length(cpt)] = c(0.50, 0.25, 0.25) #new CPs
fitted$C<-cpt #assign new CPs to joint CP table
fitted$C#Works
Parameters of node C (multinomial distribution)
Conditional probability table:
a b c
0.50 0.25 0.25
Je voudrais mettre à jour un grand nombre de nœuds par l'indexation l'objet bn.fit, à savoir
fitted[[3]][[4]][1:3]<-cpt #returns error
fitted[[3]][[4]]<-cpt #returns error
Error in check.nodes(name, x) :
nodes must be a vector of character strings, the labels of the nodes.
Compte tenu de l'équivalence entre [[et les opérateurs $, quelqu'un peut-il expliquer pourquoi il en est cas et un travail potentiel autour.
identical(fitted$C,fitted[[3]])
TRUE
Merci
Amour et respect si quelqu'un peut trouver comment ajouter les guillemets, plutôt que les simples guillemets dans les fonctions 'bnlearn :::' – user20650
Merci d'extraire les noms des noeuds en indexant l'objet bn.fit travaillé monté [[fitted [[3]] [[1]]]] <- cpt – DRBG
you ' De rien. Vous pourriez probablement le ranger un peu en disant en utilisant 'nms <- names (fitted)' et en utilisant ensuite l'index sur ce 'fitted [[nms [3]]] <- cpt' – user20650