Variáveis vs. Grupos
Como é a distribuição da variação entre grupos? Grupos diferem significativamente em quais variáveis?
- Requer:
- funcoesnecessarias.r - arquivo com funções usadas
- classificacaoaposteriorifinal.csv - dados com classificação
- dados_medias_todasvar.csv - dados com dados brutos das variáveis
- Gera:
- gruposmclustporvariavel.pdf - boxplot por variável (indicando diferenças entre grupos via TukeyTest)
rm(list=ls()) #gera um arquivo com boxplots para cada variavel library(multcompView) library(multcomp) #define para ler e salvar dados rm(list=ls()) library(mclust) #funcoes e pacotes necessarios source("funcoesNecessarias.r") #para salvar resultados pathparadados = "dadosParaAnalises" pathparafiguras = "figuras" pathparatabelas = "tabelas" #dir.create(pathparadados) #dir.create(pathparafiguras) #dir.create(pathparatabelas) #pega os dados brutos arq = "dadosParaAnalises/dados_medias_todasvar.csv" dados.medias = read.table(file=arq,sep='\t',as.is=F,row.names = 1,header=T) dados.medias$FLO_COMMAXDAFLO #pega o grupo que quer testar #neste caso usando o gerado a posteiori dir(pathparadados) arq = "dadosParaAnalises/classificacaoAposterioriFINAL.csv" osgrupos = read.table(file=arq,sep='\t',as.is=F,row.names = 1,header=T,na.strings=c("NA","")) #garante mesma ordem osgrupos = osgrupos[rownames(dados.medias),] vetorgrupos = as.vector(osgrupos$NOVACLASSE) #apenas para grupo core? #deixa as incertezas de fora vl = osgrupos$CATEGORIA=='core' dados.medias = dados.medias[vl,] vetorgrupos = vetorgrupos[vl] names(vetorgrupos) = rownames(dados.medias) table(vetorgrupos) #gera um vetor de cores my_colors=c( rgb(143,199,74,maxColorValue = 255),rgb(242,104,34,maxColorValue = 255), rgb(111,145,202,maxColorValue = 255),rgb(254,188,18,maxColorValue = 255) , rgb(74,132,54,maxColorValue = 255),rgb(236,33,39,maxColorValue = 255),rgb(165,103,40,maxColorValue = 255)) fn = paste(pathparafiguras,"/gruposMClustPorVariavel.pdf",sep="") pdf(fn,width=8.5,height=10) par(mfrow=c(3,2),mar=c(8,5,3,3),mgp=c(2.5,0.5,0),tck=-0.01,cex.axis=0.8,las=2) for(cl in 1:ncol(dados.medias)) { cln = colnames(dados.medias)[cl] print(cln) var = dados.medias[,cl] rn = row.names(dados.medias) gps = vetorgrupos[rn] dt = cbind(gps,var) dt = na.omit(dt) #plot(as.factor(dt[,1]),as.numeric(dt[,2]),ylab=cln,xlab='') dt = as.data.frame(dt) vl = as.numeric(as.vector(dt$var)) dt$var = vl if (sum(vl==0)!=length(vl)) { fm1 <- aov(var ~ gps,data=dt) #tukey = TukeyHSD(fm1, "gps", conf.level=0.95) tukey = glht(fm1, linfct = mcp(gps = "Tukey")) # Apply the function on my dataset LABELS=cld(tukey) LABELS = LABELS$mcletters$Letters lv = levels(dt$gps) LABELS = LABELS[lv] LABELS = as.factor(LABELS) # Draw the basic boxplot a=boxplot(dt$var ~ dt$gps , ylim=c(min(dt$var) , 1.1*max(dt$var)) , col=my_colors[as.numeric(LABELS)] , ylab=cln , main="") over=0.1*max( a$stats[nrow(a$stats),] ) text( c(1:nlevels(dt$gps)) , a$stats[nrow(a$stats),]+over , LABELS, col=my_colors[as.numeric(LABELS)] ) } } dev.off()