From dd0df83fbd6d93ffcf3911c033ac7ab2a606dfb3 Mon Sep 17 00:00:00 2001 From: Walmes Zeviani <walmes@ufpr.br> Date: Fri, 6 Aug 2021 13:35:58 -0300 Subject: [PATCH] Adds content about non parametric analysis. --- analise-nao-parametrica.Rmd | 103 ++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/analise-nao-parametrica.Rmd b/analise-nao-parametrica.Rmd index 4813033..42969e8 100644 --- a/analise-nao-parametrica.Rmd +++ b/analise-nao-parametrica.Rmd @@ -76,3 +76,106 @@ aggregate(breaks ~ trt, FUN = mean) ``` + + +```{r} +# Solução baseada no arquivo `compact_letter_display.r` no tópico abaixo +# https://www.researchgate.net/post/How_to_denote_the_letters_in_mean_on_the_basis_of_p_value_in_R-console + +library(dunn.test) +ls("package:dunn.test") + +# Documentação da função. +help(dunn.test, help_type = "html") + +# Um conjunto de dados para usar. +str(chickwts) + +# Ajusta o modelo. +m0 <- lm(weight ~ feed, data = chickwts) +anova(m0) + +# Aplica o teste de Dunn. +dunn <- with(chickwts, + dunn.test(weight, feed, method = "sidak")) +str(dunn) + +# NOTE: o teste dá a matriz de p-valores para os contrastes par a par. +# Como obter o resumo compacto por letras? + +# Criar a matriz com os p-valores. +k <- nlevels(chickwts$feed) +pval_matrix <- matrix(0, nrow = k, ncol = k) +pval_matrix[upper.tri(pval_matrix)] <- dunn$P.adjusted +pval_matrix <- t(pval_matrix) +pval_matrix[upper.tri(pval_matrix)] <- dunn$P.adjusted +diag(pval_matrix) <- NA +colnames(pval_matrix) <- levels(chickwts$feed) +rownames(pval_matrix) <- levels(chickwts$feed) + + +# Onde estão as diferenças? +round(pval_matrix, digits = 5) +(pval_matrix < 0.05) * 1 + +library(multcompView) + +# Determina das letras. +cld <- multcompLetters(pval_matrix, + compare = "<", + threshold = 0.05, + Letters = letters, + reversed = FALSE) +cld + +# Organiza em uma tabela. +cld <- data.frame(feed = names(cld$Letters), + cld = unname(cld$Letters)) +cld + +# Junta com a médias. +tb_means <- aggregate(weight ~ feed, data = chickwts, FUN = mean) +tb_means <- merge(tb_means, cld, by = "feed") +tb_means <- tb_means[order(tb_means$weight), ] + +# Letras diferentes, rejeita hipótese nula de que o contraste é 0. Dá +# para ordenar as letras. + +source("https://raw.githubusercontent.com/walmes/wzRfun/master/R/pairwise.R") + +# Ordena as letras para facilitar. +tb_means$cld_fix <- with(tb_means, + ordered_cld(let = cld, means = weight)) +tb_means + +# DONE! + +# Tem como fazer de outro jeito sem gerar a matriz de p-valores. +dunn_pairs <- dunn$P.adjusted +names(dunn_pairs) <- dunn$comparisons + +# Ajusta o modelo. +m0 <- lm(weight ~ feed, data = chickwts) +anova(m0) + +# Teste de Tukey. +tk <- TukeyHSD(aov(m0)) +tk + +tk_pairs <- tk[[1]][, "p adj"] + +library(multcompView) +multcompLetters(tk_pairs) + +str(dunn) +dunn_pairs <- dunn$P.adjusted +names(dunn_pairs) <- dunn$comparisons + +# Tem que inverter os nomes no contraste: "A - B" --> "B-A". +dunn_pairs <- dunn$P.adjusted +names(dunn_pairs) <- gsub(x = dunn$comparisons, + pattern = "^(.*) - (.*)$", + replacement = "\\2-\\1") +multcompLetters(dunn_pairs) +``` + -- GitLab