<div dir="ltr">Elias,<div><br></div><div>Embora atrasado, quero propor-lhe uma abordagem mais adequada, que é *não faça isso*.</div><div><br></div><div>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.</div><div><br></div><div>Faço um breve resumo:</div><div>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.</div><div>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).</div><div>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.</div><div><br></div><div>HTH</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-05-06 9:12 GMT-03:00 Elias Carvalho <span dir="ltr"><<a href="mailto:ecacarva@gmail.com" target="_blank">ecacarva@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Bom dia Pessoal<div><br></div><div>Eu tenho o seguinte data frame:</div><div><br></div><div><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)">'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 ...</pre><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><br></pre><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><br></pre><div><br></div><div>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):</div><div><br></div><div><div>for (x in 1:length(names(data)))<b> # vai de 1 a 4 passando por todas as variáveis </b></div><div>{</div></div><div><b>   # Insere o nome da variável em uma matriz</b></div><div>   commandP <- paste("nmatrix[",x,",1] <- names(data)[x]", sep="")</div><div>   eval(parse(text=commandP))  </div><div><b> # aplicar apenas para variaveis continuas</b></div><div><div><b> if (!is.factor(data$names(data)[x])) </b></div><div>    {</div><div>      <b># na coluna 2 da matriz insere valores referente a skewness</b></div><div>      commandP <- paste("nmatrix[",x,",2] <- round(skewness(data$", names(data)[x],"),2)", sep="")<br></div><div>      eval(parse(text=commandP))</div><div>      <b># na coluna3 da matriz insere valores referente a kurtosis</b></div><div>      commandP <- paste("nmatrix[",x,",3] <- round(kurtosis(data$", names(data)[x],"),2)", sep="")<br></div><div>      eval(parse(text=commandP))</div><div>   <b>   # gera um histograma para cada variável</b> já com par(mfrow...) calculado de acordo com o </div><div>      #  numero de variáveis  </div><div>      commandP <- paste("hist(data$", names(data)[x],")", sep="")</div><div>      eval(parse(text=commandP))</div><div>      <b># gera um gráfico de quartil para cada variável já com par(mfrow...) calculado de </b></div><div><b>      # acordo </b><b>com a quantidade de variáveis</b> </div><div>      commandP <- paste("qqnorm(data$", names(data)[x],")", sep="")<br></div><div>      eval(parse(text=commandP))</div><div><b>      # Insere a linha no gráfico      </b></div><div>      commandP <- paste("abline(0,1)", sep="")</div><div>      eval(parse(text=commandP))</div><div>    }</div></div><div><br></div><div>O Resultado que quero parecido com o abaixo, mas para todas as variáveis:</div><div><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><span style="color:rgb(255,157,0)">nmatrix
</span>      [,1]  [,2]    [,3]  
 [1,] "AGE" "-0.13" "2.28"</pre></div><div><br></div><div><img src="cid:ii_invobuvg0_15485f4560fee924" width="541" height="309"><br>​<br></div><div><br></div><div><br></div><div>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)....</div><div><br></div><div>ou se alguem conhecer um pacote que faça isso de maneira mais fácil agradeço a sugestão</div><div><br></div><div>Obrigado <br></div>-</div><div><br></div><div>Elias<br><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><a href="http://lattes.cnpq.br/4248328961021251" target="_blank"></a><br></div></div></div></div></div></div>
</div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>