[R-br] Normalização de dados

Leonardo Fontenelle leonardof em leonardof.med.br
Sexta Junho 24 17:43:13 BRT 2016


Em Sex 24 jun. 2016, às 17:08, Elias Carvalho via R-br escreveu:
> Pessoal,
>
> Eu preciso fazer uma análise para verificar a relação das variáveis
> com a morte e meus dados são semelhantes a tabela abaixo:
>
> *CD_MUN* *MUNIC* *UF* *POPULAÇÃO* *UTI* *PIB* *AUTO* *MOTO* *ONIBUS*
> *CAMINHÃO* *MORTE* 1 A X 3577 10 18533,94 1549 661 40 360 2 *2* *B*
> *Y* *11958* *2* *12487,36* *5402* *2234* *185* *1401* *11* 3 C Z 6936
> 8 9947 2187 1478 60 666 6
>
> Nessa tabela o município da linha 2 tem mais população, mais PIB, mais
> veículos e mais morte. Isso é óbvio porque a sua população e maior,
> mas isso não necessariamente quer dizer que esse município tenha mais
> mortes ou que elas são causadas mais provavelmente pela frota de
> carros ou motos.
>
> Então pensando em evitar vieses, e por isso eu pensei em normalizar os
> dados dividindo as colunas UTI, PIB, AUTO, MOTO, ONIBUS, CAMINHÃO e
> MORTE pela coluna da POPULAÇÃO e dividir por 10.000, por exemplo para
> MORTE  da linha 2, ficaria: (11/11958)*1000 = 9,1989.
 
Primeiro, algumas firulas, caso interessem.
 * Em epidemiologia costumamos chamar de calcular a taxa, o que você
   chama de normalizar a variável. Não estou desclassificando sua
   denominação, apenas alertando para o fato de ajudá-lo a encontrar
   referências relevantes e possivelmente a comunicar seus resultados.
 * Ou você divide a população por dez mil, ou você multiplica a taxa por
   dez mil. Você não divide a taxa por dez mil. Naturalmente, assim como
   15% é igual a 0,15, e não igual a 100 * 0,15, 9 óbitos por 10.000
   habitantes é igual a 0,0009 óbitos por habitante, e não a 10.000
   vezes 0,0009 óbitos por habitante. Mas esse preciosismo é algo que
   não tenho coragem de dividir com meus colegas da área da saúde.
 * Sugiro que você considere dividir por 100.000, em vez de 10.000, para
   tornar seus resultados mais facilmente comparáveis. (Veja a
   publicação "INDICADORES BÁSICOS PARA A SAÚDE NO BRASIL: CONCEITOS E
   APLICAÇÕES", da RIPSA).
 
>
> Dessa forma a tabela ficaria assim:
>
> *CD_MUN* *MUNIC* *UF* *POPULAÇÃO* *UTI* *PIB* *AUTO* *MOTO* *ONIBUS*
> *CAMINHÃO* *MORTE* 1 A X 3577 27,9564 51814,2018 4330,4445 1847,9172
> 111,8256 1006,4300 5,5913 *2* *B* *Y* *11958* *1,6725* *10442,6827*
> *4517,4778* *1868,2054* *154,7081* *1171,6006* *9,1989* 3 C Z 6936
> 11,5340 14341,1188 3153,1142 2130,9112 86,5052 960,2076 8,6505
>
> Ou ainda poderia usar alguma ferramento do R que fosse mais
> confiável ?
 
Não acho necessário usar alguma função ou pacote especial.
 
Supondo que você esteja tenha um data.frame (o exemplo é facilmente
adaptável para data.table) chamado "dados",
 
dados$MORTE_N <- with(dados, 10000 * MORTE / POPULAÇÃO)
 
ou, seguindo meu próprio conselho,
 
dados$MORTE_TX <- with(dados, 100000 * MORTE / POPULAÇÃO)
 
Basta adaptar a linha para as outras variáveis. Em princípio, você não
deveria repetir a si mesmo, mas para sete linhas acho mais fácil repetir
um procedimento simples como esse, em vez de fazer algo mais sofisticado
como criar um laço que crie as colunas normalizadas a partir de um vetor
com o nome das colunas originais.
 
Atenciosamente,
 
Leonardo Fontenelle
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160624/ecc8861f/attachment.html>


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