#função para lidar com amostras de tamanhos diferentes #repete a estatística de interesse (ANOVA ou Mann-Whitney) amostral<-function(x,cat,cat1,cat2,var,tam,log10=TRUE,ciclos=1000) #x=dataframe cat=nome da variável categórica cat1=nome da categoria de menor n cat2=nome da categoria de maior n var=variável a ser testada tam= igual ao n da cat2 log10=true para transformar dados em log10 ciclos=quantas vezes repete o ciclo na função for { dados<-x #salva dataframe em objeto dados if(log10==TRUE) #transforma os dados em seus log decimais { dados[,2]<-log10(dados[,2]) #só os dados da variável numérica } else #os dados já estão em log decimal { dados<-dados } variancia<-bartlett.test(x[,2],x[,1]) #cálculo da equivalência de variância p.variancia<-variancia$p.value #salvando só o valor de p do teste de variância dados.cat1<-subset(dados,dados[,1]==cat1) #separando só os dados da categoria 1 dados.cat2<-subset(dados,dados[,1]==cat2) #separando só os dados da categoria 2 rep.cat1<-rep(cat1,tam) #cria um novo vetor para cat1 com o tamanho que a amostra vai ter resulta<-rep(NA,ciclos) #cria vetor com 1000 NAs que será preenchido na função for #pelos valores de p dos testes if(p.variancia>=0.05) #p>=0.05 a função segue realizando ANOVA { for(i in 1:ciclos) #para repetir ciclos vezes as linhas de comando { s.cat1<-sample(dados.cat1[,2],tam,replace=TRUE) #aplicando sample para cat1 e gerando objeto com comprimento igual ao da cat2 dados.cat1<-data.frame(rep.cat1,s.cat1) #transforma esse sample em um dataframe colnames(dados.cat1)[1]<-cat #nomeando coluna 1 colnames(dados.cat1)[2]<-var #noemando coluna 2 dados<-rbind(dados.cat1,dados.cat2) #construindo dataframe para ANOVAs. lmanova<-lm(dados[,2]~dados[,1],dados) #modelo para realizar anova anova<-anova(lmanova) #fazendo anova com as amostras com mesmo tamanho resulta[i]<-anova$Pr[1] #preenche objeto resulta com os p gerados na ANOVA } histograma<-hist(resulta,xlab="p valor ANOVA",ylab="Frequência")#histograma com as frequências dos p return(resulta) #retorna para o usuário } else #se o p<=0.05 no teste de variância { for(i in 1:ciclos) #para repetir ciclos vezes as linhas de comando { s.cat1<-sample(dados.cat1[,2],tam,replace=TRUE) #aplicando sample para cat1 e gerando objeto com comprimento igual ao da cat2 dados.cat1<-data.frame(rep.cat1,s.cat1) #transforma esse sample em um dataframe colnames(dados.cat1)[1]<-cat #nomeando coluna 1 colnames(dados.cat1)[2]<-var #noemando coluna 2 dados<-rbind(dados.cat1,dados.cat2) #construindo dataframe para Mann-Whitney-Wilcox mann<-wilcox.test(dados[,2]~dados[,1]) #teste de Mann-Whitney-Wilcox resulta[i]<-mann$p.value #preenche objeto resulta com os p gerados no Mann-Whitney } } histograma<-hist(resulta,xlab="p valor Mann-Whitney",ylab="Frequência") #histogtama com as frequências dos p return(resulta) #retorna para o usuário }