[R-br] Regra de Bayes em loop - desculpem se a mensagem foi triplicada

Mauricio Cardeal mcardeal2010 em gmail.com
Quinta Março 17 14:51:32 BRT 2011


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110317/a8bb366b/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br