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 <[email protected]>: > 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 > [email protected] > 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. >
_______________________________________________ R-br mailing list [email protected] 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.
