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

Henrique Dallazuanna wwwhsd em gmail.com
Quinta Março 17 15:02:08 BRT 2011


Esta faltando você indexar os vetores:

for(i in 1:n)
{
dados$num <- dados$PAdadoB[i] * dados$PB[i]
    for(j in 1:n)
      {
        dados$den[i] <- dados$PAdadoB[j]*dados$PB[j] + sum(dados$den)
      }
dados$PBdadoA[i] <- dados$num[i] / dados$den[i]
}


Mas você pode fazer sem for:

transform(dados, num = PAdadoB * PB, den = cumsum(PAdadoB * PB),
PBdadoA = (PAdadoB * PB) +  cumsum(PAdadoB * PB))

2011/3/17 Mauricio Cardeal <mcardeal2010 em gmail.com>:
> 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
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O


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