[R-br] Função para criar agrupamento de variáveis em função do valor de p

ASANTOS alexandresantosbr em yahoo.com.br
Segunda Março 28 23:27:35 BRT 2016


> Prezados Listeiros,
>
>                Gostaria de uma ajuda do grupo para criação de uma 
> função para criação de uma variável dados$groups, em função da 
> significância de res$aov.tab$Pr=> 0.05, de maneira que níveis de 
> fatores iguais serão fundidos, como no exemplo abaixo onde trat1 e 
> trat2 são iguais e vão ficar trat1_trat2, e os não significativos 
> ficam do mesmo jeito, sem alteração. O output desejado esta no final 
> do meu CRM, não estou conseguindo chegar a resultados satisfatórios 
> com a função ifelse (res$aov.tab$Pr=> 0.05) { ... Alguém teria alguma 
> sugestão?
>
> ### <code r>
> require(vegan)
>
> #Fator
> trat <- gl(3, 15, labels = paste("t", 1:3, sep=""))
>
> # Variaveis resposta
> set.seed(124)
> sp  <- cbind(c(rnorm(10,  5, 0.25), rnorm(35, 5, 0.25)), rnorm(45, 
> 2.5, 0.25),
>              c(rnorm(10, 4.5, 0.25), rnorm(35, 5, 0.25)), rnorm(45, 5, 
> 0.25))
> colnames(sp) <- c("sp1", "sp2", "sp3", "sp4")
> dados<-cbind(trat,sp)
>
>
> #Comparações
> contrasts(trat) <- cbind(c(0,1,0),c(0,0,1))
> trat_c <- model.matrix(~ trat)[, -1]
> trat1_trat2 <- trat_c[, 1]
> trat1_trat3 <- trat_c[, 2]
>
> res <- adonis(sp ~ trat1_trat2 + trat1_trat3, method = "euclidean", 
> perm = 999)
> res
>
> step1<-gsub("[:punct:]*(sp ~)"," ",res$call[2])
> step2<-as.factor(chartr("+", " ", step1))
>
> # Tentativa de função
> for(i in step2){
>
>         if (res$aov.tab$Pr>=0.05) {
>         dados$groups = step2[i]
> } else {
>         dados$groups = dados$trat
> }
> }
> head(dados)
> #
> #
>       trat      sp1      sp2      sp3      sp4   groups
>  [1,]    1 4.653732 2.490977 4.236323 5.382113   trat1_trat2
>  [2,]    1 5.009581 2.254713 4.604529 4.842553   trat1_trat2
>  [3,]    1 4.809242 2.391435 4.675318 4.732977   trat1_trat2
>  [4,]    1 5.053077 2.483129 4.561690 5.311215   trat1_trat2
>  [5,]    1 5.356384 2.745474 4.616074 5.114969   trat1_trat2
>  ...
>  #
>
>
>
> Obrigado,
>



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