Boa Tarde pessoal
!
Peguei do manual do Bioestat o exemplo da Regra de Bayes
para fazer no R e consegui na mão grande, logo abaixo. Tentei então
colocar em loop para expandir para além de 3 situações e aí deu
erro no cálculo do denominador (o loop está no final). Como posso
resolver ?
Obrigado,
Mauricio Cardeal
UFBA
# Regra
de Bayes
# Dados populacionais
PB1 <- 0.15 # asma
PB2 <-
0.01 # enfisema
PB3 <- 0.009 # ca
# Dados
clínicos
PAdadoB1 <- 0.26 # dispneia dado asma
PAdadoB2 <-
0.75 # dispneia dado enfisema
PAdadoB3 <- 0.43 # dispneia dado
ca
PB1dadoA <- (PAdadoB1 * PB1) / (PAdadoB1*PB1 +
PAdadoB2*PB2 + PAdadoB3*PB3)
PB2dadoA <- (PAdadoB2 * PB2) /
(PAdadoB1*PB1 + PAdadoB2*PB2 + PAdadoB3*PB3)
PB3dadoA <-
(PAdadoB3 * PB3) / (PAdadoB1*PB1 + PAdadoB2*PB2 +
PAdadoB3*PB3)
rbind(Asma_dado_dispneia=PB1dadoA,Asma_dado_enfisema=PB2dadoA,Asma_dado_ca=PB3dadoA)
[,1]
Asma_dado_dispneia 0,774270
Asma_dado_enfisema
0,148898
Asma_dado_ca
0,076831
# LOOP
PB <- c(0.15,0.01,0.009)
PAdadoB
<- c(0.26,0.75,0.43)
dados <- data.frame(PB,PAdadoB)
n =
dim(dados)[1]
dados$PBdadoA <- 0
dados$den <-
0
dados
for(i in 1:n)
{
dados$num <- dados$PAdadoB[i]
* dados$PB[i]
for(j in 1:n)
{
dados$den <-
dados$PAdadoB[j]*dados$PB[j] + dados$den
}
dados$PBdadoA <- dados$num[i] / dados$den[i]
}
dados
PB PAdadoB PBdadoA den
num
1 0,150 0,26 0,025610 0,15111 0,00387
2
0,010 0,75 0,025610 0,15111 0,00387
3 0,009
0,43 0,025610 0,15111 0,00387