|[[:bie5782:01_curso_atual:alunos:trabalho_final:marcel.vaz:start]]| ====== Código da função ====== #################### ### ANOVA GRAPHS ### #################### anova.graph=function(dados){ medias=aggregate(dados[,4],list(dados[,2],dados[,3]),mean) # crio tabela com a média dos tratamentos names(medias)=c("A","B","media") medias[,1]=c("A-","A+","A-","A+") sem.int=medias[1,3]+medias[2,3]+medias[3,3]-2*medias[1,3] # valor esperado para o tratamento AB caso não houvesse interação ctrl=subset(dados,A<1&B<1)[,4] # separo os dados nos grupos de tratamentos tratA=subset(dados,A>0&B<1)[,4] tratB=subset(dados,A<1&B>0)[,4] tratAB=subset(dados,A>0&B>0)[,4] ### Barra de erros por meio de bootstrap nb=length(unique(dados[,1])) # calculo o número de amostras por tratamento b.c=mean(ctrl) for(i in 1:999){ b.c[i+1]=mean(sample(ctrl,nb,replace=T)) } b.a=mean(tratA) for(i in 1:999){ b.a[i+1]=mean(sample(tratA,nb,replace=T)) } b.b=mean(tratB) for(i in 1:999){ b.b[i+1]=mean(sample(tratB,nb,replace=T)) } b.ab=mean(tratAB) for(i in 1:999){ b.ab[i+1]=mean(sample(tratAB,nb,replace=T)) } ### GRÁFICO ### x11() # abre janela do gráfico vM=c(sem.int,sort(b.c)[950],sort(b.a)[950],sort(b.b)[950],sort(b.ab)[950]) # valor máximo possível para este gráfico vm=c(sem.int,sort(b.c)[51],sort(b.a)[51],sort(b.b)[51],sort(b.ab)[51]) # idem para o valor mínimo stripchart(media~A,data=subset(medias,B<1), vertical=T, pch=16, xlim=c(0.5,2.5), ylim=c(min(vm),max(vM)), ) points(c(.95,1.95),c(medias[3,3],medias[4,3]),col=2,pch=16) points(1.95,sem.int,col=3,pch="*",cex=1.5) segments(1,medias[1,3],2,medias[2,3]) segments(.95,medias[3,3],1.95,medias[4,3],col=2) segments(.95,medias[3,3],1.95,sem.int,lty=2,col=3) legend(2.1,max(vM),c("B-","B+","esp. \ns/ int."),col=1:3,lty=c(1,1,2),bty="n") arrows(1,medias[1,3],1,sort(b.c)[51],length=.1,angle=90) # barras do controle arrows(1,medias[1,3],1,sort(b.c)[950],length=.07,angle=90) arrows(2,medias[2,3],2,sort(b.a)[51],length=.1,angle=90) # idem para tratA arrows(2,medias[2,3],2,sort(b.a)[950],length=.07,angle=90) arrows(.95,medias[3,3],.95,sort(b.b)[51],length=.1,angle=90,col=2) # idem para tratB arrows(.95,medias[3,3],.95,sort(b.b)[950],length=.07,angle=90,col=2) arrows(1.95,medias[4,3],1.95,sort(b.ab)[51],length=.1,angle=90,col=2) # idem para tratAB arrows(1.95,medias[4,3],1.95,sort(b.ab)[950],length=.07,angle=90,col=2) } # fecha função