Skip to content

Instantly share code, notes, and snippets.

@kdiogenes
Created August 19, 2021 17:41
Show Gist options
  • Save kdiogenes/08944c35b1440a9e6389bcd7f430ab62 to your computer and use it in GitHub Desktop.
Save kdiogenes/08944c35b1440a9e6389bcd7f430ab62 to your computer and use it in GitHub Desktop.
# Criando uma rede vazia
library(bnlearn)
dag = empty.graph(c("P", "N"))
class(dag)
dag
# Criando a estrutura da rede
arc.set = matrix(c("P", "N"), ncol = 2, byrow = TRUE, dimnames = list(NULL, c("de", "para")))
arc.set
arcs(dag) = arc.set
dag
P.lv = c("Ativo", "Reflexivo")
N.lv = c("Boa", "Ruim")
P.prob = array(c(0.5, 0.5), dim = 2, dimnames = list(P = P.lv))
N.prob = array(c(0.5, 0.5, 0.5, 0.5), dim = c(2,2), dimnames = list(N = N.lv, P = P.lv))
cpt = list(P = P.prob, N = N.prob)
cpt
bn = custom.fit(dag, cpt)
bn
# Dados utilizado como exemplo na dissertação
sample = rbn(bn, n = 10)
sample
class(sample)
sample = data.frame(P = c("Ativo", "Ativo", "Ativo", "Ativo", "Ativo", "Reflexivo", "Reflexivo", "Reflexivo", "Reflexivo", "Reflexivo"),
N = c("Ruim", "Ruim", "Ruim", "Ruim", "Boa", "Ruim", "Ruim", "Boa", "Ruim", "Boa"),
stringsAsFactors = TRUE)
bn = bn.fit(dag, sample)
bn
# Bayesian network parameters
#
# Parameters of node P (multinomial distribution)
#
# Conditional probability table:
# Ativo Reflexivo
# 0.5 0.5
#
# Parameters of node N (multinomial distribution)
#
# Conditional probability table:
#
# P
# N Ativo Reflexivo
# Boa 0.2 0.4
# Ruim 0.8 0.6
cpquery(bn, event = (N == "Ruim"), evidence = (P == "Reflexivo" | P == "Ativo"))
# [1] 0.6942
cpquery(bn, event = (N == "Boa"), evidence = (P == "Reflexivo" | P == "Ativo"))
# [1] 0.3068
cpquery(bn, event = (P == "Ativo"), evidence = (N == "Boa"))
# [1] 0.3226247
cpquery(bn, event = (P == "Ativo"), evidence = (N == "Ruim"))
# [1] 0.5665432
cpquery(bn, event = (P == "Reflexivo"), evidence = (N == "Boa"))
# [1] 0.6615385
cpquery(bn, event = (P == "Reflexivo"), evidence = (N == "Ruim"))
# [1] 0.4313501
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment