[R-br] Verificar a normalidade em todo o data frame

Cesar Rabak cesar.rabak em gmail.com
Domingo Maio 15 20:35:58 BRT 2016


Elias,

Embora atrasado, quero propor-lhe uma abordagem mais adequada, que é *não
faça isso*.

Eu já expus em outras trédis desta lista as razões apresentadas por
pesquisadores hodiernos das razões porque esse teste /a priori/ é
inapropriado.

Faço um breve resumo:
1) do ponto de vista numérico, os testes são ou insensíveis para amostras
pequenas ou excessivamente sensíveis para amostras de moderadas a grandes.
2) Ao realizar um teste antes dos outros que lhe servirão para testar
alguma(s) hipótese(s) você está diminuindo a potência do segundo (o
problema das múltiplas comparações).
3) O importante sobre as variáveis é processo que as geram e a análise que
você venha a fazer com elas, no caso de regressões ou suas primas-irmãs
ANOVA e assemelhados, o importante é que os *resíduos* mostrem normalidade,
as variáveis podem ter quaisquer distribuições e ainda ser apropriadamente
analisadas.

HTH


2016-05-06 9:12 GMT-03:00 Elias Carvalho <ecacarva em gmail.com>:

> Bom dia Pessoal
>
> Eu tenho o seguinte data frame:
>
> 'data.frame':	1999 obs. of  14 variables:
>  $ AGE: int  21 31 44 46 49 50 52 64 23 33 ...
>  $ PHA: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 1 1 1 2 2 ...
>  $ SMK: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 1 1 1 1 1 ...
>  $ ALC: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 NA 2 NA 1 NA ...
>
>
>
>
> E preciso rodar uma rotina para verificar a normalidade de cada variável
> de uma só vez, então fiz assim (ps: me perdoem o 'for' eu sou programador
> das antigas e ainda estou aprendendo a user os ...apply):
>
> for (x in 1:length(names(data)))* # vai de 1 a 4 passando por todas as
> variáveis *
> {
> *   # Insere o nome da variável em uma matriz*
>    commandP <- paste("nmatrix[",x,",1] <- names(data)[x]", sep="")
>    eval(parse(text=commandP))
> * # aplicar apenas para variaveis continuas*
> * if (!is.factor(data$names(data)[x])) *
>     {
>       *# na coluna 2 da matriz insere valores referente a skewness*
>       commandP <- paste("nmatrix[",x,",2] <- round(skewness(data$",
> names(data)[x],"),2)", sep="")
>       eval(parse(text=commandP))
>       *# na coluna3 da matriz insere valores referente a kurtosis*
>       commandP <- paste("nmatrix[",x,",3] <- round(kurtosis(data$",
> names(data)[x],"),2)", sep="")
>       eval(parse(text=commandP))
>    *   # gera um histograma para cada variável* já com par(mfrow...)
> calculado de acordo com o
>       #  numero de variáveis
>       commandP <- paste("hist(data$", names(data)[x],")", sep="")
>       eval(parse(text=commandP))
>       *# gera um gráfico de quartil para cada variável já com
> par(mfrow...) calculado de *
> *      # acordo **com a quantidade de variáveis*
>       commandP <- paste("qqnorm(data$", names(data)[x],")", sep="")
>       eval(parse(text=commandP))
> *      # Insere a linha no gráfico      *
>       commandP <- paste("abline(0,1)", sep="")
>       eval(parse(text=commandP))
>     }
>
> O Resultado que quero parecido com o abaixo, mas para todas as variáveis:
>
> nmatrix      [,1]  [,2]    [,3]
>  [1,] "AGE" "-0.13" "2.28"
>
>
>
>>
>
> O meu problema é na linha  if (!is.factor(data$names(data)[x])) que
> identifica todas as variáveis como caracter, o que não está errado, pois
> pega por exemplo "AGE" e então sempre retorna falso e na verdade eu queria
> algo como "!is.factor(data$AGE), !is.factor(data$SMK)....
>
> ou se alguem conhecer um pacote que faça isso de maneira mais fácil
> agradeço a sugestão
>
> Obrigado
> -
>
> Elias
> <http://lattes.cnpq.br/4248328961021251>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160515/dc35f35b/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: Captura de tela de 2016-05-06 09:03:53.png
Tipo: image/png
Tamanho: 95273 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160515/dc35f35b/attachment-0001.png>


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