Bastão de Asclépio & Distribuição Normal

Bastão de Asclépio & Distribuição Normal

invisible(Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8"))
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))
options(warn=-1)
suppressMessages(library(bootES, warn.conflicts=FALSE))
suppressMessages(library(bruceR, warn.conflicts=FALSE))
suppressMessages(library(car, warn.conflicts = FALSE))
suppressMessages(library(effectsize, warn.conflicts = FALSE))
suppressMessages(library(emmeans, warn.conflicts=FALSE))
suppressMessages(library(ggplot2, warn.conflicts = FALSE))
suppressMessages(library(gplots, warn.conflicts = FALSE))
suppressMessages(library(HH, warn.conflicts = FALSE))
suppressMessages(library(jmv, warn.conflicts=FALSE))
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(lmboot, warn.conflicts=FALSE))
suppressMessages(library(lmerTest, warn.conflicts=FALSE))
suppressMessages(library(multcomp, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(pwr, warn.conflicts=FALSE))
suppressMessages(library(RcmdrMisc, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
suppressMessages(library(Rmisc, warn.conflicts=FALSE))
suppressMessages(library(rstatix, warn.conflicts=FALSE))
suppressMessages(library(WRS2, warn.conflicts=FALSE))
source("summarySEwithin2.R")
source("eiras_plotIC.r")
source("eiras.OneWayANOVA.Welch.WORD.R")

Objetivos

  • reconhecer e mencionar propriedades da distribuição F.
  • reconhecer as indicações e aplicar ANOVA para três ou mais condições independentes.
  • reconhecer as indicações e aplicar ANOVA para três ou mais condições dependentes (medidas repetidas).
  • definir hipóteses estatísticas nula e alternativa.
  • executar e interpretar os testes estatísticos omnibus e post hoc.
  • conceituar estatísticas de tamanho de efeito.

ANOVA unifatorial em R

  1. Planejamento de ANOVA unifatorial
  • Independente de Fisher
    • pwr::pwr.anova.test
    • WebPower::wp.anova
  • Relacionada
    • WebPower::wp.rmanova
  1. ANOVA unifatorial independente
  1. Fisher (homocedástico)
  • teste omnibus: lm, car::Anova
    • testes post hoc: emmeans::emmeans, multcomp::cld
  • teste omnibus: oneway.test(var.equal=TRUE, ...)
    • testes post hoc: rstatix::tukey_hsd
  1. Fisher sem dados brutos
  • teste omnibus: demo_ANOVA_Independente_Unifatorial_Fisher_SemDadosBrutos.R, HH::anovaMean
    • testes post hoc: ?
  1. Fisher-White (heterocedástico)
  • teste omnibus: lm, car::Anova(white.adjust="hc2", ...))
    • testes post hoc: emmeans::emmeans, multcomp::cld
  1. Welch (heterocedástico)
  • teste omnibus: jmv::anovaOneW
    • testes post hoc: jmv::anovaOneW
  • teste omnibus: oneway.test(var.equal=FALSE, ...)
    • testes post hoc: rstatix::games_howell_test
  1. Welch sem dados brutos
  • teste omnibus: eiras.OneWayANOVA.Welch.WORD.R
    • testes post hoc: eiras.OneWayANOVA.Welch.WORD.R
  1. Reamostragem (bootstrapping)
  • teste omnibus: lmboot::ANOVA.boot
    • testes post hoc: ?
  • teste omnibus: WRS2::t1waybt
    • testes post hoc: WRS2::mcppb20
  1. ANOVA unifatorial relacionada ou para medidas repetidas (rm)
  1. rmANOVA
  • teste omnibus: lmerTest::lmer e car::Anova(test.statistic="F", ...)
    • testes post hoc: emmeans::emmeans e multcomp::cld
  1. Reamostragem (bootstrapping)
  • teste omnibus: WRS2::rmanovab
    • testes post hoc: WRS2::pairdepb

Introdução

As variáveis envolvidas no teste estatístico são:

  • VI (variável independente) nominal com três ou mais categorias (nominal politômica, fator): unifatorial, one way
  • VD (variável dependente) intervalar com distribuição normal por condição: univariada

ANOVA unifatorial pode ser:

  • independente (fator entre participantes)
  • relacionada (fator intraparticipantes)

ANOVA unifatorial independente (One-way Analysis of Variance) é uma extensão do teste t independente.

As suposições de normalidade homocedasticidade são condições suficientes e a suposição de independência é necessária para ANOVA unifatorial.

Exemplo de condições suficientes: lei do equilíbrio genético de Hardy-Weinberg

Ilustramos com uma analogia, recordando o a lei do equilíbrio genético de Hardy-Weinberg.

Em 1908, G. Hardy e W. Weinberg propuseram independentemente que a frequência de alelos e genótipos em uma população permanecerá constante de geração para geração se a população for estável e em equilíbrio genético.

Cinco condições são necessárias para que uma população permaneça em equilíbrio de Hardy-Weinberg:

  1. Uma grande população reprodutiva
  2. Acasalamento aleatório
  3. Nenhuma mudança na frequência alélica devido a mutação
  4. Nenhuma imigração ou emigração
  5. Nenhuma seleção natural

http://www.phschool.com/science/biology_place/labbench/lab8/concepts.html

Violando as condições de H-W, em simulação (implementada em demo_HardyWeinberg.R) com:

  • 500 indivíduos,
  • mutação alterando a frequência dos alelos,
  • selecionando para o alelo A.
source("demo_HardyWeinberg.R")

Observamos, por exemplo:

As condições matemáticas de população muito grande (ou infinita), sem mutação e sem seleção garantem a população no equilíbrio de Hardy-Weinberg; porém, dentro de certos limites, ainda encontramos predição aceitável para o Equilíbrio de Hardy-Weinberg e poderíamos utilizá-los em populações biológicas.

O que é independência?

Um delineamento entre participantes é aquele em que cada unidade experimental só é submetida a uma condição experimental.

Por exemplo, três grupos com 5 indivíduos cada um (total de 15 participantes, nomeados de A a J) são alocados assim:

Condição 1 Condição 2 Condição 3
A F K
B G L
C H M
D I N
E J O

Em um delineamento intraparticipantes, o mesmo indivíduo é submetido a todas as condições experimentais. Os mesmos 15 participantes seriam alocados assim:

Condição 1 Condição 2 Condição 3
A A A
B B B
C C C
D D D
E E E
F F F
G G G
H H H
I I I
J J J
K K K
L L L
M M M
N N N
O O O

O que é balanceamento?

Em delineamentos em que os grupos são balanceados, o número de participantes em cada condição é aproximadamente igual. Por exemplo, com 15 participantes em ANOVA independente, desbalanceada, poderíamos ter algo como.

Condição 1 Condição 2 Condição 3
A H K
B I L
C J M
D N
E O
F
G

Em um delineamento intraparticipantes, o desbalanceamento ocorre quando um dos participantes deixa de aparecer em uma das condições experimentais, por exemplo:

Condição 1 Condição 2 Condição 3
A A A
B B
C C C
D D D
E E E
F F F
G G G
H H H
I I I
J J
K K K
L L L
M M M
N N N
O O O

Basta uma participação faltando (missing) para caracterizar o desbalanceamento. O procedimento com as estatísticas padrão do R não funcionarão e temos que usar um modelo com efeitos aleatórios; lidaremos com esta situação adiante.

Teste F

O teste F na ANOVA unifatorial é usado para testar se há diferenças significantes entre as médias populacionais de três ou mais condições independentes. A hipótese nula (\(H_0\)) do teste F afirma que todas as médias populacionais das condições são iguais. A hipótese alternativa (\(H_a\)) afirma que pelo menos uma das médias das condições é diferente.

A distribuição da estatística de teste F tem distribuição F de Fisher-Snedecor.

Para a comparação de três ou mais condições, com base no teste F, os graus de liberdade do numerador dependem do número de condições e os do denominador dependem do tamanho da amostra.

Familiarize-se com a distribuição F, observando demo_AnimacaoF.R:

  • F é um valor maior que zero.
  • sob \(H_0\) a distribuição F tem um parâmetro de não centralidade (ncp) igual a zero; sob \(H_1\) o parâmetro de não centralidade é maior do que zero e é função do tamanho de efeito e do tamanho da amostra.
  • a distribuição é assimétrica positiva.
  • consideramos somente a cauda superior.
  • localize \(\alpha\) e \(\beta\).
  • há dois valores para graus de liberdade: para o numerador (número de grupos - 1) e denominador (número de sujeitos - número de grupos).
  • observe o que acontece com a distribuição sob \(H_0\) e com o valor de \(F\) crítico (\(F_c\)) à medida que os graus de liberdade aumentam.

O delineamento dos estudos, o tipo de variável e, consequentemente, a estatística adequada mudam, mas o problema é sempre o mesmo: incerteza porque lidamos com uma amostra.

A diferença, aqui, é que teremos que lidar com 3 ou mais condições simultaneamente.

A hipótese nula é pela igualdade de todos as médias populacionais dos \(m\) grupos. Caso não rejeitemos \(H_0\):

Quando rejeitamos \(H_0\), concluímos que as médias populacionais não são todas iguais:

ou

que pelo menos uma destoe das demais (i.e., basta que uma das condições ser diferente das demais para rejeitarmos \(H_0\)), por exemplo:

Teste t independente

Brendon Small e Coach McGuirk fazem com que seus alunos do SNAP-Ed mantenham diários do que comem por uma semana e depois calculem a ingestão diária de sódio em miligramas.

Desde que as classes receberam diferentes programas de educação nutricional, eles querem ver se a ingestão média de sódio é a mesma para as duas turmas.

Aplicamos o teste t de Welch, robusto à heterocedasticidade e default da função t.test:

Dtfrm <- readxl::read_excel("Nutricao.xlsx")
print(head(Dtfrm))
# A tibble: 6 × 3
  Instructor    Student Sodium
  <chr>         <chr>    <dbl>
1 Brendon Small a         1200
2 Brendon Small b         1400
3 Brendon Small c         1350
4 Brendon Small d          950
5 Brendon Small e         1400
6 Brendon Small f         1150
print(tail(Dtfrm))
# A tibble: 6 × 3
  Instructor    Student Sodium
  <chr>         <chr>    <dbl>
1 Coach McGuirk ai        1400
2 Coach McGuirk aj        1200
3 Coach McGuirk ak        1150
4 Coach McGuirk al        1400
5 Coach McGuirk am        1500
6 Coach McGuirk an        1200
t_out <- t.test(Sodium ~ Instructor, 
                data = Dtfrm)
print(t_out)

    Welch Two Sample t-test

data:  Sodium by Instructor
t = 0.76722, df = 34.893, p-value = 0.4481
alternative hypothesis: true difference in means between group Brendon Small and group Coach McGuirk is not equal to 0
95 percent confidence interval:
 -67.91132 150.41132
sample estimates:
mean in group Brendon Small mean in group Coach McGuirk 
                    1287.50                     1246.25 

Teste t independente para fator com três grupos

Suponha que uma terceira classe junte-se ao experimento (Melissa Robins). Podemos, então, verificar as diferenças destas três condições experimentais com testes t, comparando-se Brendon Small com Coach McGuirk, Brendon Small com Melissa Robins e Coach McGuirk com Melissa Robins?

Quantos testes t precisaremos de acordo com o número de grupos?

É a combinatória do número de grupos (\(m\)) dois a dois: \[{m \choose 2} = { {m!} \over {2! (m-2)!} }\]

  • para 2 -grupos: \({2 \choose 2} = { {2!} \over {2! (2-2)!} } = 1~\text{teste}\)

  • para 3 grupos: \({3 \choose 2} = { {3!} \over {2! (3-2)!} } = 3~\text{testes}\)

  • para 4 grupos: \({4 \choose 2} = { {4!} \over {2! (4-2)!} } = 6~\text{testes}\)

  • para 6 grupos: \({6 \choose 2} = { {6!} \over {2! (6-2)!} } = 15~\text{testes}\)

Graficamente (demo_Testes_t_2a2.R) podemos ver quantos testes t seriam necessários para o número de condições independentes a serem testadas:

Embora o número cresça rapidamente, podemos não nos impressionar, pois temos computadores para o trabalho repetitivo.

Há, porém, um problema mais grave: as probabilidades do erro do tipo I (\(\alpha\)) e do tipo II (\(\beta\)) se acumulam. Quando escolhemos \(\alpha\), a probabilidade de rejeitar incorretamente a hipótese nula, o máximo valor que p pode assumir, a probabilidade erro do tipo I para \(m\) grupos é:

\[ P(\alpha | m) = 1-(1-\alpha)^{m \choose 2} \]

Também gostaríamos de manter a probabilidade de rejeitar corretamente a hipótese nula, o poder do teste, \(1-\beta\); para \(m\) grupos é:

\[ P(\beta | m) = (1-\beta) ^ {m \choose 2} \]

Graficamente (demo_Testes_t_AlfaPoder.R) podemos observar o que acontece com o número crescente de pares de teste t necessários, considerando os tradicionais \(\alpha=0.05\) e \(\beta=0.1\):

Portanto, a probabilidade de erro do tipo I cresce rapidamente para quase \(100\%\) e o poder de seus testes combinados vai para próximo de zero. Na prática, dificilmente teremos mais do que 6 grupos mas, ainda assim, teríamos \(\alpha \approx 53.7\%\) e poder \(1-\beta \approx 3.5\%\), valores totalmente inaceitáveis para uma boa análise.

Podemos resolver com vários testes t? A resposta é:

NÃO!

É melhor, portanto, testar tudo simultaneamente para
manter \(\alpha\) no valor pretendido e
preservar \(1-\beta\).

Análise da variância

Esta análise, que tem o acrônimo ANOVA (do inglês, Analysis of Variance) utiliza apenas variâncias, mas…

… as conclusões são sobre as médias populacionais dos \(m\) grupos.

Como?

Princípio do teste F da ANOVA unifatorial independente de Fisher

Consideremos que existam três grupos nos quais a VD tem distribuição normal homocedástica.

De cada um deles, retiramos uma amostra:

Não havendo problemas, as três amostras reproduzem a distribuição, média e variância das populações das quais se originaram.

A estatística de teste F da ANOVA unifatorial independente é dada por

\[ F = \dfrac{S_E^2}{S_D^2} \]

em que \(S_E^2\) é a variância entre os grupos e \(S_D^2\) é a variância dentro dos grupos.

Variância entre (between) os grupos

A variância entre os grupos presume que as médias amostrais (\(\bar{X}_m\)) refletem as respectivas médias populacionais (\(\mu_m\)):

Como sempre, não temos esta certeza e lidamos somente com a informação das amostras, \(\bar{X}_m\):

Cada média é um número e, portanto, podemos calcular a variância destes números:

Sendo assim, para \(F = \dfrac{S_E^2}{S_D^2}\), a estatística F aumenta quando a variância entre os grupos aumentar.

Variância dentro (within) dos grupos

A variância dentro dos grupos é uma medida da variância total, desconsiderando a média de cada uma das condições. Cada amostra tem sua própria distribuição (presumivelmente, reflexo da distribuição da população de onde veio):

Como sempre, não temos esta certeza e lidaremos somente com a informação das amostras, \(\bar{X}_m\):

knitr::include_graphics("./image/variancia_dentro_amo.png")

Mesclando as três distribuições, estimamos a variância dentro dos grupos, \(S_D^2\), uma medida de quanto, como um todo, a variável é dispersa:

Caso a variância em cada condição seja maior,

esta variância será refletida em \(S_D^2\):

Sendo assim, para \(F = \dfrac{S_E^2}{S_D^2}\), a estatística F diminui quando a variância dentro os grupos (ou condições) aumentar.

Comportamento de \(F = \dfrac{S_E^2}{S_D^2}\)

É fácil imaginar o comportamento da estatística F combinando-se o que pode acontecer com \(S_E^2\) e \(S_D^2\):

Desta forma, Ronald Fisher inventou uma forma de comparar médias entre várias condições, simultaneamente, utilizando somente a comparação entre duas variâncias, com o numerador refletindo a dispersão das médias e o denominador refletindo a dispersão do fenômeno em estudo.

ANOVA unifatorial independente

A ANOVA unifatorial independente é utilizada quando os participantes são avaliados em somente uma das condições experimentais, i.e., um delineamento entre participantes.

Suposições

  • independência entre as unidades experimentais,
  • normalidade da VD em todas as condições,
  • homocedasticidade da VD entre todas as condições.

Os métodos aqui apresentados são robustos à heterocedasticidade.

O teste analítico pode prescindir da suposição de normalidade para amostras maiores invocando o teorema central do limite (tamanho mínimo de amostra será visto adiante), mas ainda precisaremos testar a suposição de normalidade em amostras pequenas caso queiramos testar as médias populacionais.

O teste por bootstrapping pode ser usado para qualquer tamanho de amostra, e não exige a suposição de normalidade. Portanto, exige apenas a suposição de independência entre as observações.

Normalidade

“Vale a pena observar que a MANOVA é ainda um teste válido, mesmo com modestas violações na suposição de normalidade, particularmente quando os tamanhos dos grupos são iguais e existe um número razoável de participantes em cada grupo; por “razoável” entendemos que, em um delineamento completamente entre participantes, deve haver pelo menos 12 participantes por grupo[…]”

Dancey & Reidy, 2019, p. 472

Como ANOVA é um caso particular de MANOVA, podemos transpor desta referência e assumir o número de unidades experimentais igual a pelo menos 12 em cada grupo para considerar a suposição de normalidade não necessária.

Balanceamento e Homocedasticidade

O balanceamento não precisa ser estrito:

“Consideram-se grupos de dimensão semelhante quando o quociente entre a maior dimensão e a menor for inferior a 1,5.”

Pestana & Gageiro, 2008, p. 278

A heterocedasticidade ocorre heuristicamente se (maior desvio-padrão)/(menor desvio-padrão) é maior que 2.

Johnson & Wichern, 2007, p. 291

Moore, 1995
Norusis, 2009, p. 148

Quando a maior quantidade de unidades observacionais numa condição NÃO superar 1.5 vezes a condição de menor quantidade de unidades observacionais, então a suposição de homocedasticidade não precisa ser considerada para o teste ANOVA unifatorial independente.

“Em geral, quando você tiver tamanhos de amostras iguais, esse pressuposto [homocedasticidade] não será um grande problema.”

Dancey & Reidy, 2019, p. 472-3

ANOVA unifatorial independente de Fisher para condições balanceadas é adequada na situação de heterocedasticidade populacional.

ANOVA unifatorial independente de Fisher com correção de White e a ANOVA unifatorial independente de Welch funcionam para condições desbalanceadas, pois lidam com a situação de heterocedasticidade populacional.

Exemplo: SNAP-Ed entreparticipantes com 3 grupos

Este exemplo foi obtido de Salvatore S. Mangiafico: Summary and Analysis of Extension Program Evaluation in R, disponível em https://rcompanion.org/handbook/I_05.html.

O SNAP-Ed (Supplemental Nutrition Assistance Program Education) é um programa baseado em evidências que ajuda as pessoas a terem uma vida mais saudável.

O SNAP-Ed ensina às pessoas que usam ou qualificam para o SNAP uma boa nutrição e como fazer com que o seu dinheiro de alimentação se estenda ainda mais.

Os participantes do SNAP-Ed também aprendem a ser fisicamente ativos.

Brendon Small, Coach McGuirk e Melissa Robins fazem com que seus alunos do SNAP-Ed mantenham diários do que comem por uma semana e depois calculem a ingestão diária de sódio em miligramas.

Desde que as classes receberam diferentes programas de educação nutricional, eles querem ver se a ingestão média de sódio é a mesma para as três turmas.

Arquivo de dados

alfa <- 0.05

Dados <- data.frame(readxl::read_excel("Nutricao3.xlsx"))
Dados$Instructor <- factor(Dados$Instructor)
Dados$Instructor <- factor(Dados$Instructor,
                           labels=c("Brendon", "McGuirk", "Melissa"))
saveRDS(Dados, "Nutricao3.rds")

Hipóteses nula e alternativa

As três classes receberam diferentes programas de educação nutricional. A ingestão diária média de sódio é a mesma (populacionalmente) para os três programas?

\[ \begin{cases} H_0: \mu_{\text{Brendon}} = \mu_{\text{McGuirk}} = \mu_{\text{Robins}}\\ H_1: \exists \mu_i \ne \mu_j,\quad i \ne j,\quad i,j=1,2,3 \end{cases} \]

Esta é uma forma matemática para escrever a hipótese alternativa, lida como “Existe pelo menos alguma média \(\mu_i\), diferente de outra média \(\mu_j\), com \(i\) e \(j\) assumindo os valores \(1\), \(2\) e \(3\)”. É dizer que \(\mu_1 \ne \mu_2\) OU \(\mu_1 \ne \mu_3\) OU \(\mu_2 \ne \mu_3\).

No entanto, aparece, frequentemente, como:

\[ H_1: \mu_1 \ne \mu_2 \ne \mu_3 \]

tentando indicar as diferenças, mas esta forma não funciona porque sugere que a rejeição de \(H_0\) implica que todos os grupos são diferentes entre si, como \(\mu_1 \ne \mu_2\) E \(\mu_1 \ne \mu_3\) E \(\mu_2 \ne \mu_3\).

Basta que uma condição tenha média estatisticamente diferente das demais para que se rejeite \(H_0\) com ANOVA. Em português:

\[ H_1: \text{Existe pelo menos uma média populacional diferente} \]

ANOVA unifatorial independente de Fisher

Análise descritiva e teste de suposições

source("demo_ANOVA1f_indep_Fisher_sodio_Parte1.R")

boxplot


gplots::plotmeans

NULL

Normality
 --------
 Instructor = Brendon 

    Shapiro-Wilk normality test

data:  Sodium
W = 0.97212, p-value = 0.7989

 --------
 Instructor = McGuirk 

    Shapiro-Wilk normality test

data:  Sodium
W = 0.96772, p-value = 0.7062

 --------
 Instructor = Melissa 

    Shapiro-Wilk normality test

data:  Sodium
W = 0.95835, p-value = 0.5114

 --------

 p-values adjusted by the Holm method:
        unadjusted adjusted
Brendon 0.79894    1       
McGuirk 0.70625    1       
Melissa 0.51138    1       
NULL

Homoscedasticity
    Fligner-Killeen test of homogeneity of variances

data:  Sodium by Instructor
Fligner-Killeen:med chi-squared = 0.95543, df = 2, p-value = 0.6202

Testes omnibus e post-hoc

O código R que testa a hipótese nula omnibus e realiza os testes post-hoc da ANOVA de Fisher é (demo_ANOVA1f_indep_Fisher_sodio_Parte2.R):

source("demo_ANOVA1f_indep_Fisher_sodio_Parte2.R")

Fisher's One-way ANOVA
Statistical analysis: omnibus test
ANOVAAnova Table (Type II tests)

Response: Sodium
            Sum Sq Df F value   Pr(>F)   
Instructor  290146  2  5.5579 0.006235 **
Residuals  1487812 57                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Call:
lm(formula = Sodium ~ Instructor, data = Dados)

Residuals:
   Min     1Q Median     3Q    Max 
-337.5 -121.2    2.5  105.9  412.5 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        1287.50      36.13  35.639  < 2e-16 ***
InstructorMcGuirk   -41.25      51.09  -0.807  0.42279    
InstructorMelissa  -163.75      51.09  -3.205  0.00221 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 161.6 on 57 degrees of freedom
Multiple R-squared:  0.1632,    Adjusted R-squared:  0.1338 
F-statistic: 5.558 on 2 and 57 DF,  p-value: 0.006235

R^2 = eta^2 = 0.1631905# Effect Size for ANOVA (Type II)

Parameter  |   Eta2 |           95% CI | interpret
--------------------------------------------------
Instructor | 0.1632 | [0.0166, 0.3265] |     large


Fisher's One-way ANOVA
Statistical analysis: Post hoc tests$emmeans
 Instructor emmean   SE df lower.CL upper.CL
 Brendon      1288 36.1 57     1215     1360
 McGuirk      1246 36.1 57     1174     1319
 Melissa      1124 36.1 57     1051     1196

Confidence level used: 0.95 

$contrasts
 contrast          estimate   SE df t.ratio p.value
 Brendon - McGuirk     41.2 51.1 57   0.807  0.4228
 Brendon - Melissa    163.8 51.1 57   3.205  0.0066
 McGuirk - Melissa    122.5 51.1 57   2.398  0.0396

P value adjustment: holm method for 3 tests 

 Instructor emmean   SE df lower.CL upper.CL .group
 Melissa      1124 36.1 57     1035     1213  a    
 McGuirk      1246 36.1 57     1157     1335   b   
 Brendon      1288 36.1 57     1198     1377   b   

Confidence level used: 0.95 
Conf-level adjustment: bonferroni method for 3 estimates 
P value adjustment: holm method for 3 tests 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
Teste post hoc: Dunnett contrast          estimate   SE df t.ratio p.value
 McGuirk - Brendon    -41.2 51.1 57  -0.807  0.4228
 Melissa - Brendon   -163.8 51.1 57  -3.205  0.0044

P value adjustment: holm method for 2 tests 

Teste post hoc: Consecutivo contrast          estimate   SE df t.ratio p.value
 McGuirk - Brendon    -41.2 51.1 57  -0.807  0.4228
 Melissa - McGuirk   -122.5 51.1 57  -2.398  0.0396

P value adjustment: holm method for 2 tests 

Pr(>F) é o valor p nas saídas.

Como p value = 0.006235 da regressão (igual ao valor p da ANOVA na linha Instructor) é menor que 0.05, rejeita-se a hipótese nula omnibus.

Multiple R-squared \(R^2=0.1632\) é a estimativa pontual do tamanho de efeito \(\eta^2\) de Cohen global. Note que o intervalo de confiança do tamanho de efeito de Instructor sobre Sodium, \(\eta^2\), está entre 1.66% e 32.65%.

Se \(H_0\) é rejeitada, podemos localizar as diferenças com testes post-hoc (par-a-par simultâneas) com os contrastes de Holm. A conclusão é que Melissa tem média populacional diferente e menor.

Exemplo de relatório para a ANOVA unifatorial independente de Fisher

Há 60 participantes no estudo com delineamento entreparticipantes com três condições, sendo que nenhuma delas é de controle. Os participantes foram distribuídos aleatoriamente e balanceadamente nos três grupos. As suposições de normalidade e homocedasticidade da VD Sodium nos grupos foram consideradas válidas. A análise por meio da ANOVA unifatorial independente de Fisher mostra que a menor ingestão de sódio diária média foi observada entre estudantes submetidos ao programa aplicado por Melissa Robins. As médias populacionais de ingestão de sódio dos estudantes de Brendon Small e do Coach McGuirk são semelhantes.

A análise de variância de um fator fixo entre participantes mostrou que o efeito fixo Instructor é estatisticamente significante, pois o teste omnibus produziu F(2,57) = 5.56 e p = 0.006235 O tamanho do efeito de Instructor é expresso por eta ao quadrado de Cohen, sendo que seu valor é igual a 0.16 e seu IC95% = [0.03, 1.00]. Portanto, 16% da variância da ingesta de sódio é explicada pelo programa adotado pelos instrutores. Os testes post hoc de Holm encontraram diferenças estatisticamente significantes entre os programas adotados por Melissa e McGuirk e Melissa e Brendon. Não se observou diferença estatisticamente significante entre McGuirk e Brendon.

ANOVA unifatorial independente de Welch

ANOVA unifatorial independente de Welch demo_ANOVA1f_indep_Welch_sodio.R pode ser executado pelas funções jmv::anovaOneW ou oneway.test e rstatix::games_howell_test.


ANOVA unifatorial independente de Welch


Análise de significância estatística: testes omnibus e posthoc

 ONE-WAY ANOVA

 One-Way ANOVA (Welch's)                                
 ────────────────────────────────────────────────────── 
             F           df1    df2         p           
 ────────────────────────────────────────────────────── 
   Sodium    5.765465      2    37.39637    0.0065692   
 ────────────────────────────────────────────────────── 


 Group Descriptives                                                 
 ────────────────────────────────────────────────────────────────── 
             Instructor    N     Mean        SD          SE         
 ────────────────────────────────────────────────────────────────── 
   Sodium    Brendon       20    1287.500    193.7341    43.32026   
             McGuirk       20    1246.250    142.4123    31.84435   
             Melissa       20    1123.750    143.1495    32.00920   
 ────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Games-Howell Post-Hoc Test – Sodium                                   
 ───────────────────────────────────────────────────────────────────── 
                                 Brendon      McGuirk      Melissa     
 ───────────────────────────────────────────────────────────────────── 
   Brendon    Mean difference            —     41.25000     163.7500   
              t-value                    —    0.7672235     3.040115   
              df                         —     34.89307     34.98266   
              p-value                    —    0.7253215    0.0120952   
                                                                       
   McGuirk    Mean difference                         —     122.5000   
              t-value                                 —     2.713093   
              df                                      —     37.99899   
              p-value                                 —    0.0263388   
                                                                       
   Melissa    Mean difference                                      —   
              t-value                                              —   
              df                                                   —   
              p-value                                              —   
 ───────────────────────────────────────────────────────────────────── 
   Note. * p < .05, ** p < .01, *** p < .001


Statistical analysis: omnibus test
    One-way analysis of means (not assuming equal variances)

data:  Sodium and Instructor
F = 5.7655, num df = 2.000, denom df = 37.396, p-value = 0.006569


Fisher's One-way ANOVA with White's heteroscedasticity correction
Statistical analysis: Post hoc tests     .y.  group1  group2 n1 n2 estimate  conf.low conf.high       se statistic
1 Sodium Brendon McGuirk 20 20   -41.25 -172.8462  90.34618 38.01781 0.7672235
2 Sodium Brendon Melissa 20 20  -163.75 -295.5707 -31.92929 38.08696 3.0401147
3 Sodium McGuirk Melissa 20 20  -122.50 -232.6166 -12.38341 31.92688 2.7130926
        df p.adj p.adj.signif       method
1 34.89307 0.725           ns Games-Howell
2 34.98266 0.012            * Games-Howell
3 37.99899 0.026            * Games-Howell

Análise de significância prática: tamanho de efeito
`var.equal = FALSE` - effect size is an approximation.
# Effect Size for ANOVA

Eta2   |           95% CI | interpret
-------------------------------------
0.2357 | [0.0251, 0.4351] |     large

A conclusão, neste exemplo, é similar à obtida com o teste de ANOVA de Fisher-White: o programa adotado por Melissa obteve ingestões diárias médias de sódio significantemente menores que a dos outros dois instrutores.

ANOVA independente unifatorial por bootstrapping

demo_ANOVA1f_indep_Bootstrap_sodio.R é a versão com bootstrapping por meio da função lmboot::ANOVA.boot.

Bootstrap One-Way ANOVA

F(2,57) = 5.5822, p = 0.00611
(1e+05 bootstrap samples)
Effect size analysis[1] 0.163786
Tamanho de efeito: estimativa pontual 
                              "large" 
(Rules: field2013)

Uma outra possível solução são as funções WRS2::t1waybt e WRS2::mcppb20. Implementamos em demo_WRS2_ANOVA_independente.R.


seed = 25809

Bootstrapped independent one-Way ANOVA
Call:
WRS2::t1waybt(formula = Sodium ~ Instructor, data = Dados, tr = 0, 
    nboot = 10000)

Effective number of bootstrap samples was 10000.

Test statistic: 5.7655 
p-value: 0.0065 
Variance explained: 0.241 
Effect size: 0.491 


post hoc
Legenda:
    A ... Brendon
    B ... McGuirk
    C ... Melissa
Call:
WRS2::mcppb20(formula = Sodium ~ InstructorShort, data = Dados, 
    tr = 0.2, nboot = 10000, level = 1 - 0.05/3)

        psihat  ci.lower ci.upper p-value
A vs. B   50.0 -83.33333 177.0833  0.3661
A vs. C  162.5  31.25000 297.9167  0.0056
B vs. C  112.5  -4.16667 239.5833  0.0215

[1] "A"
[1] "B"
[1] "C"

Usamos duas funções neste último código R. A primeira é um ANOVA independente unifatorial que utiliza bootstrapping e computa \(\eta^2\) (chamado de variância explicada). A segunda faz um teste post hoc, também por bootstrapping, mas que tem um problema: obriga uma média aparada de 20% que não conseguimos desligar; é provavelmente um erro de implementação, e esperamos que o autor o resolva em versões futuras.

As conclusões são quase as mesmas: os valores p não são ajustados na saída da função, então as multiplicamos por 3 (correção de Bonferroni) para o gráfico. Com isto, a diferença entre McGuirk e Melissa deixou de ser significante (decisão de acordo com o intervalo de confiança 95% que inclui a diferença igual a zero).

ANOVA independente SEM dados brutos

É muito comum, em publicações, que somente tenhamos acesso às medidas-resumo (número de participantes, média, desvio-padrão e correlação). Nestes casos, os códigos R acima não são utilizáveis. Para fazer os testes quando os dados brutos não estão disponíveis, criamos os seguintes scripts:

O teste de ANOVA independente unifatorial sem os dados brutos e também as comparações aos pares pode ser feito com a implementação da seguinte função:

Exemplo:

Dados <- data.frame(readxl::read_excel("ExemploWelchSDB.xlsx"))
print.data.frame(Dados)
  Grupo  media     dp  n
1     A 0.2760 0.4095 10
2     B 0.1956 0.1808 10
3     C 0.1495 0.2451 10
4     D 0.3997 0.2382 10
factor <- "Grupo"
mean <- "media"
sd <- "dp"
n <- "n"
alpha <- 0.05

resF <- HH::anovaMean(object=Dados$Grupo,
                      n=Dados$n,
                      ybar=Dados$media,
                      s=Dados$dp,
                      ylabel="SDB")
cat("\nAVOVA unifatorial independente de Fisher sem dados brutos\n")

AVOVA unifatorial independente de Fisher sem dados brutos
print(resF)
Analysis of Variance Table

Response: SDB

Terms added sequentially (first to last)
          Df Sum of Sq  Mean Sq F value  Pr(F)
SDB        3   0.36038 0.120125  1.5149 0.2272
Residuals 36   2.85473 0.079298               
cat("\nAVOVA unifatorial independente de Welch sem dados brutos\n")

AVOVA unifatorial independente de Welch sem dados brutos
OnewayWelch.WithoutRawData(data=Dados, 
                           factor=factor,
                           mean=mean, 
                           sd=sd, 
                           n=n, 
                           alpha=alpha,
                           echo=TRUE)
  Grupo  media     dp  n
1     A 0.2760 0.4095 10
2     B 0.1956 0.1808 10
3     C 0.1495 0.2451 10
4     D 0.3997 0.2382 10

------------
Omnibus
------------
Statistical significance:
    F(3,19.47366) = 2.038699, p = 0.1416938
Effect size:
    eta^2 = R^2 = 0.2390057 (large)
Homocedasticity heuristic (ratio<2):
    max(sd)/min(sd) =  2.264934 


----------------
Post hoc
----------------
Bonferroni correction for p values (6 comparisons 2 x 2)

Comparing groups:
- A
- B
- C
- D

 Group.1 Group.2 Mean.1 st.dev.1 n.1 Mean.2 st.dev.2 n.2 p.adj.    sig. eta^2
 A       B       0.2760 0.4095   10  0.1956 0.1808   10  1.0000000 ns   0.025
 A       C       0.2760 0.4095   10  0.1495 0.2451   10  1.0000000 ns   0.046
 A       D       0.2760 0.4095   10  0.3997 0.2382   10  1.0000000 ns   0.045
 B       C       0.1956 0.1808   10  0.1495 0.2451   10  1.0000000 ns   0.014
 B       D       0.1956 0.1808   10  0.3997 0.2382   10  0.2741523 ns   0.217
 C       D       0.1495 0.2451   10  0.3997 0.2382   10  0.1958118 ns   0.230
 effect.size
 (small)    
 (small)    
 (small)    
 (small)    
 (large)    
 (large)    
[[1]]
  Homocedasticity        F df1      df2         p     eta^2 effect.size
1        2.264934 2.038699   3 19.47366 0.1416938 0.2390057       large

[[2]]
  Group.1 Group.2 Mean.1 st.dev.1 n.1 Mean.2 st.dev.2 n.2    p.adj. sig. eta^2
1       A       B 0.2760   0.4095  10 0.1956   0.1808  10 1.0000000   ns 0.025
2       A       C 0.2760   0.4095  10 0.1495   0.2451  10 1.0000000   ns 0.046
3       A       D 0.2760   0.4095  10 0.3997   0.2382  10 1.0000000   ns 0.045
4       B       C 0.1956   0.1808  10 0.1495   0.2451  10 1.0000000   ns 0.014
5       B       D 0.1956   0.1808  10 0.3997   0.2382  10 0.2741523   ns 0.217
6       C       D 0.1495   0.2451  10 0.3997   0.2382  10 0.1958118   ns 0.230
  effect.size
1     (small)
2     (small)
3     (small)
4     (small)
5     (large)
6     (large)
rm(list = ls())

Esta função recebe uma planilha e os nomes das colunas que contém os níveis do fator, a média, o desvio-padrão e o tamanho de cada grupo. Devolve dois dataframes com o teste global e com os testes post hoc feitos dois a dois.

Planejamento de ANOVA unifatorial independente de Fisher

O tamanho do efeito pode ser expresso por eta ao quadrado de Cohen (\(\eta^2\)).

Boa parte dos valores relatados por Ellis (2010) são originais de Cohen (1992).

Cohen, 1992

Do mesmo trabalho, a tabela 2 indica o planejamento dos estudos:

Esta tabela pode ser reproduzida com as funções do pacote pwr. Por exemplo, para 3 grupos, nivel de significância de 5%, poder de 80%, com tamanho de efeito intermediário, obtemos:

print(pwr::pwr.anova.test(k=3,
                          f=0.25,
                          sig.level=0.05,
                          power=0.8))

     Balanced one-way analysis of variance power calculation 

              k = 3
              n = 52.3966
              f = 0.25
      sig.level = 0.05
          power = 0.8

NOTE: n is number in each group

Para poder de 90%:

print(pwr::pwr.anova.test(k=3,
                          f=0.25,
                          sig.level=0.05,
                          power=0.9))

     Balanced one-way analysis of variance power calculation 

              k = 3
              n = 68.49707
              f = 0.25
      sig.level = 0.05
          power = 0.9

NOTE: n is number in each group

O valor f de Cohen, necessário para esta função, precisa ser calculado em função do tamanho de efeito desejado. Supondo que você esteja mais familiarizado com \(\eta^2\) (igual ao \(R^2\)), a conversão é dada por:

\[ f = \sqrt{\dfrac{\eta^2}{1-\eta^2}} \]

Basta escolher a partir de uma das tabelas o tamanho de efeito que se deseja detectar.

Esta função pode receber os seguintes parâmetros:

pwr.anova.test(k = NULL, n = NULL, f = NULL, sig.level = 0.05, power = NULL)

Nos exemplos acima, o valor dado em n, que não foi fornecido na chamada da função, foi calculado.

Além deste planejamento mais habitual (achar o tamanho da amostra), podemos fornecer quaisquer quatro dos cinco valores, para obter o quinto, considerado como incógnita e calculado. E.g.: suponha que dispomos de 50 pacientes e pretendemos medir tamanho de efeito intermediário, com nível de significância de 5% e poder de 80%:

print(pwr::pwr.anova.test(n=50,
                          f=0.25,
                          sig.level=0.05,
                          power=0.8))

     Balanced one-way analysis of variance power calculation 

              k = 3.268196
              n = 50
              f = 0.25
      sig.level = 0.05
          power = 0.8

NOTE: n is number in each group

Necessitaremos de 3 a 4 grupos. Na verdade, se arredondarmos para 3, o poder será um pouco menor que 80%. Quanto?

print(pwr::pwr.anova.test(n=50,
                          k=3,
                          f=0.25,
                          sig.level=0.05))

     Balanced one-way analysis of variance power calculation 

              k = 3
              n = 50
              f = 0.25
      sig.level = 0.05
          power = 0.7795803

NOTE: n is number in each group

Obteremos poder próximo a 78%.

Tradicionalmente exigia-se, para a ANOVA unifatorial independente sem reamostragem, que a distribuição populacional da variável fosse normal para cada condição e que existisse homocedasticidade entre os grupos. As suposições são:

  • Independência das observações dentro e entre condições: delineamento entreparticipantes.
  • Normalidade da VD se a amostra é pequena (menos de 12 observações em cada grupo).
  • Homocedasticidade da VD se os grupos são desbalanceados.

Normalidade e homocedasticidade podem ser testadas. Quando não eram atendidas, alguns autores recomendam o teste não-paramétrico H de Kruskal-Wallis.

No entanto, este teste não-paramétrico não deve ser usado. O teste de Kruskal-Wallis com VD intervalar não precisa de normalidade, mas precisa de homocedasticidade para testar diferenças de pseudo-medianas; para testar diferença de médias, também precisa de simetria da VD em cada condição independente. Testes não paramétricos não são livres de suposições.

Quando o tamanho da amostra é pequeno e há heterocedasticidade ou desbalanceamento da VD, há alternativas de ANOVA unifatorial independente que podem funcionar: Fisher-White, Welch ou por reamostragem (bootstrapping).

Quando o tamanho da amostra é grande (tamanho de amostra total maior que 30 e menor grupo igual a 12 observações), o teorema central do limite permitirá que ANOVA unifatorial independente sem reamostragem funcionem independentemente da distribuição da VD em cada condição independente.

ANOVA unifatorial relacionada

ANOVA unifatorial relacionada é utilizada quando pelo menos um participante é submetido a pelo menos duas condições experimentais, i.e., um delineamento intraparticipantes.

O delineamento com medidas repetidas conduz a uma ANOVA com maior poder.

Neste delineamento intraparticipantes, cada participante pode ser controle de si mesmo. Nos participantes com pelo menos duas condições experimentais, sugere-se que esta ordem de submissão, se possível, seja aleatorizada ou contrabalanceada. Para o cálculo da estatística F, a variância total da VD é particionada entre as variâncias das condições dependentes e dos participantes.

Suposições

– as diferenças dos valores das VD são independentes entre as unidades observacionais. – as diferenças dos valores das VD têm distribuição normal multivariada. – esfericidade: homocedasticidade das variâncias das diferenças das VDs ( explicações estão em Mauchly’s sphericity test: Wikipedia e Ferrari, Motta-Jr & Siqueira (2017).

“Vale a pena observar que a MANOVA é ainda um teste válido, mesmo com modestas violações na suposição de normalidade, particularmente quando os tamanhos dos grupos são iguais e existe um número razoável de participantes em cada grupo; por “razoável” entendemos que [para um delineamento] completamente intraparticipantes, [deve haver] pelo menos 22 participantes ao todo.”

Dancey & Reidy, 2019, p. 472

Exemplo: SNAP-Ed intraparticipantes com 3 condições

Usaremos os mesmos dados do exemplo anterior, mas imaginando que as 20 medidas de ingestão de sódio sejam do mesmo participante, submetido aos três diferentes programas educacionais. Com 20 unidades observacionais no estudo, a normalidade multivariada das três diferenças não pode ser automaticamente assumida.

Brendon, McGuirk e Melissa fazem com que seus alunos do SNAP-Ed mantenham diários do que comem por uma semana e depois calculem a ingestão diária de sódio em miligramas.

Estudantes atenderam os diferentes programas de educação nutricional sucessivamente, cada um deles em uma ordem aleatorizada previamente. Os instrutores querem ver se a ingestão média de sódio é a mesma quando cada um dos três programas foi seguido.

Hipóteses nula e alternativa

O delineamento do estudo é diferente, mas as hipóteses são as mesmas:

\[ \begin{cases} H_0: &\mu_{\text{Brendon}} = \mu_{\text{McGuirk}} = \mu_{\text{Robins}}\\ H_1: &\exists\mu_i \ne \mu_j,\quad i \ne j,\quad i,j=1,2,3 \end{cases} \]

ANOVA unifatorial relacionada

A planilha a ser utilizada é Nutricao3rm.xlsx. Verifique a coluna Student, que foi alterada para indicar o participante nos três programas (compare com Nutricao3.xlsx, usada para ANOVA unifatorial independente).

alfa <- 0.05
Dados <- data.frame(readxl::read_excel("Nutricao3rm.xlsx"))
Dados$Instructor <- factor(Dados$Instructor)
Dados$Instructor <- factor(Dados$Instructor,
                           labels=c("Brendon", "McGuirk", "Melissa"))
saveRDS(Dados, "Nutricao3rm.rds")

A função adotada para esta ANOVA é lmerTest::lmer.

Executando demo_ANOVA1f_dep_balanc_sodio.R, obtemos:


    Factor (Instructor):

 Descriptive statistics by group 
Instructor: Brendon
       vars  n   mean     sd median trimmed    mad min  max range skew kurtosis
Sodium    1 20 1287.5 193.73   1300 1284.38 166.79 950 1700   750 0.12    -0.46
          se
Sodium 43.32
------------------------------------------------------------ 
Instructor: McGuirk
       vars  n    mean     sd median trimmed    mad  min  max range skew
Sodium    1 20 1246.25 142.41 1212.5 1240.62 148.26 1000 1525   525  0.3
       kurtosis    se
Sodium    -0.85 31.84
------------------------------------------------------------ 
Instructor: Melissa
       vars  n    mean     sd median trimmed    mad min  max range skew
Sodium    1 20 1123.75 143.15 1112.5 1120.31 185.32 900 1400   500 0.08
       kurtosis    se
Sodium     -1.1 32.01
  Instructor  N  Sodium SodiumNormed       sd       se       ci
1    Brendon 20 1287.50      1287.50 91.50304 20.46070 53.71151
2    McGuirk 20 1246.25      1246.25 47.62737 10.64980 27.95686
3    Melissa 20 1123.75      1123.75 59.92274 13.39913 35.17414


Repeated Measures one-way ANOVA
ANOVA
Analysis of Deviance Table (Type II Wald F tests with Kenward-Roger df)

Response: Sodium
                F Df Df.res    Pr(>F)    
Instructor 30.581  2     38 1.217e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

RegressionLinear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: Sodium ~ Instructor + (1 | Student)
   Data: Dados

REML criterion at convergence: 704

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.71211 -0.44338 -0.05566  0.54555  2.09262 

Random effects:
 Groups   Name        Variance Std.Dev.
 Student  (Intercept) 21358    146.14  
 Residual              4744     68.88  
Number of obs: 60, groups:  Student, 20

Fixed effects:
                  Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)        1287.50      36.13   24.37  35.639  < 2e-16 ***
InstructorMcGuirk   -41.25      21.78   38.00  -1.894   0.0659 .  
InstructorMelissa  -163.75      21.78   38.00  -7.518 4.95e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Effect size analysis# Effect Size for ANOVA (Type II)

Parameter  | Eta2 (partial) |           95% CI | interpret
----------------------------------------------------------
Instructor |         0.6168 | [0.4041, 0.7388] |     large

Post hoc tests Instructor emmean   SE   df lower.CL upper.CL
 Brendon      1288 36.1 24.4     1213     1362
 McGuirk      1246 36.1 24.4     1172     1321
 Melissa      1124 36.1 24.4     1049     1198

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 
 contrast          estimate   SE df lower.CL upper.CL t.ratio p.value
 Brendon - McGuirk     41.2 21.8 38    -13.3     95.8   1.894  0.0659
 Brendon - Melissa    163.8 21.8 38    109.2    218.3   7.518  <.0001
 McGuirk - Melissa    122.5 21.8 38     67.9    177.1   5.624  <.0001

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 
Conf-level adjustment: bonferroni method for 3 estimates 
P value adjustment: holm method for 3 tests 

 Instructor emmean   SE   df lower.CL upper.CL .group
 Melissa      1124 36.1 24.4     1031     1217  a    
 McGuirk      1246 36.1 24.4     1153     1339   b   
 Brendon      1288 36.1 24.4     1195     1380   b   

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 
Conf-level adjustment: bonferroni method for 3 estimates 
P value adjustment: holm method for 3 tests 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 

ANOVA unifatorial relacionada perfeitamente balanceada por reamostragem

As funções WRS2::rmanovab e WRS2::pairdepb realizam a ANOVA unifatorial relacionada perfeitamente balanceada por reamostragem (demo_WRS2_ANOVA_dependente.R).


seed = 11898

"WRS" bootstrapped repeated measure one-Way ANOVACall:
WRS2::rmanovab(y = Dados$Sodium, groups = Dados$Instructor, blocks = Dados$Student, 
    tr = 0, nboot = 10000)

Test statistic: 30.5805 
Critical value: 4.0072 
Significant:  TRUE 


"WRS" post hocCall:
WRS2::pairdepb(y = Dados$Sodium, groups = Dados$Instructor, blocks = Dados$Student, 
    tr = 0, nboot = 10000)

                    psihat  ci.lower ci.upper    test    crit   sig
Brendon vs. McGuirk  41.25 -35.16596 117.6660 1.75616 2.68398 FALSE
Brendon vs. Melissa 163.75  83.20521 244.2948 5.41496 2.68398  TRUE
McGuirk vs. Melissa 122.50  85.65541 159.3446 8.19517 2.68398  TRUE

As conclusões permanecem as mesmas.

Na linguagem do modelo linear geral (GLM) na ANOVA unifatorial relacionada precisamos distinguir medida de variável dependente ou de desfecho: há apenas uma medida (measure) que, em nosso exemplo, é a quantidade de sódio ingerida. As variáveis dependentes (VD) são estas observações da medida em cada condição experimental (os programas de cada instrutor).

Adicionalmente, na execução do teste, buscamos mitigar a dependência das três observações em cada indivíduo, o que é feito pelas diferenças, par-a-par, das observações entre todas as condições às quais cada indivíduo foi submetido. A rigor, as suposições de multinormalidade e de esfericidade poderiam ser feitas sobre estas diferenças.

Note que, no caso da ANOVA independente unifatorial, medida e VD são idênticas: há apenas uma medida, que é a própria VD.

ANOVA unifatorial relacionada desbalanceada

Vamos usar os mesmos dados, mas eliminar uma única observação (removemos o estudante a de Melissa , planilha Nutricao3rmdesb.xlsx).

alfa <- 0.05
Dados <- data.frame(readxl::read_excel("Nutricao3rmdesb.xlsx"))
Dados$Instructor <- factor(Dados$Instructor)
Dados$Instructor <- factor(Dados$Instructor,
                           labels=c("Brendon", "McGuirk", "Melissa"))
saveRDS(Dados, "Nutricao3rmdesb.rds")

Para lidar com esta situação, utilizamos o mesmo código R utilizado para a versão com dados perfeitamente balanceados, implementado em demo_ANOVA1f_dep_desbalanc_sodio.R. A função lmerTest::lmer é capaz de lidar com dados desbalanceados.


    Factor (Instructor):

 Descriptive statistics by group 
Instructor: Brendon
       vars  n   mean     sd median trimmed    mad min  max range skew kurtosis
Sodium    1 20 1287.5 193.73   1300 1284.38 166.79 950 1700   750 0.12    -0.46
          se
Sodium 43.32
------------------------------------------------------------ 
Instructor: McGuirk
       vars  n    mean     sd median trimmed    mad  min  max range skew
Sodium    1 20 1246.25 142.41 1212.5 1240.62 148.26 1000 1525   525  0.3
       kurtosis    se
Sodium    -0.85 31.84
------------------------------------------------------------ 
Instructor: Melissa
       vars  n    mean     sd median trimmed    mad min  max range skew
Sodium    1 19 1135.53 136.76   1125 1132.35 148.26 925 1400   475 0.08
       kurtosis    se
Sodium    -1.04 31.37
  Instructor  N   Sodium SodiumNormed       sd       se       ci
1    Brendon 20 1287.500     1288.743 89.65700 20.04791 52.62790
2    McGuirk 20 1246.250     1247.493 52.02848 11.63392 30.54028
3    Melissa 19 1135.526     1132.910 57.83517 13.26830 35.01696


Repeated Measures one-way ANOVA
ANOVAAnalysis of Deviance Table (Type II Wald F tests with Kenward-Roger df)

Response: Sodium
                F Df Df.res    Pr(>F)    
Instructor 27.356  2 37.061 5.043e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

RegressionLinear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: Sodium ~ Instructor + (1 | Student)
   Data: Dados

REML criterion at convergence: 691.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-1.7013 -0.4632 -0.0990  0.5474  2.1420 

Random effects:
 Groups   Name        Variance Std.Dev.
 Student  (Intercept) 20846    144.38  
 Residual              4654     68.22  
Number of obs: 59, groups:  Student, 20

Fixed effects:
                  Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)        1287.50      35.71   24.34  36.057  < 2e-16 ***
InstructorMcGuirk   -41.25      21.57   37.03  -1.912   0.0636 .  
InstructorMelissa  -157.51      21.98   37.12  -7.166 1.68e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Effect size analysis# Effect Size for ANOVA (Type II)

Parameter  | Eta2 (partial) |           95% CI | interpret
----------------------------------------------------------
Instructor |         0.5962 | [0.3729, 0.7253] |     large

Post hoc tests$emmeans
 Instructor emmean   SE   df lower.CL upper.CL
 Brendon      1288 35.7 24.3     1214     1361
 McGuirk      1246 35.7 24.3     1173     1320
 Melissa      1130 36.0 24.9     1056     1204

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 

$contrasts
 contrast          estimate   SE   df t.ratio p.value
 Brendon - McGuirk     41.2 21.6 37.0   1.912  0.0636
 Brendon - Melissa    157.5 22.0 37.1   7.166  <.0001
 McGuirk - Melissa    116.3 22.0 37.1   5.289  <.0001

Degrees-of-freedom method: satterthwaite 
P value adjustment: holm method for 3 tests 

 Instructor emmean   SE   df lower.CL upper.CL .group
 Melissa      1130 36.0 24.9     1038     1222  a    
 McGuirk      1246 35.7 24.3     1154     1338   b   
 Brendon      1288 35.7 24.3     1196     1379   b   

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 
Conf-level adjustment: bonferroni method for 3 estimates 
P value adjustment: holm method for 3 tests 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 

A ANOVA unifatorial relacionada desbalanceada feita com o pacote WRS2 funcionou apenas parcialmente. O teste omnibus com WRS2::rmanovab() funciona, mas o teste post hoc feito com WRS2::pairdepb() não completa a análise.

Exemplo de relatório para a ANOVA unifatorial relacionada

Vinte participantes foram selecionados para um estudo com delineamento intrapartipantes com três condições experimentais. A ordem de aplicação das três condições experimentais em cada participante foi aleatorizada. As médias amostrais brutas mostram que menor ingestão diária média de sódio foi observada entre estudantes submetidos ao programa aplicado por Melissa Robins. A ingestão diária média de sódio dos estudantes de Brendon e McGuirk são semelhantes. A ANOVA unifatorial relacionada por meio do modelo linear misto geral (lmerTest::lmer) rejeitou a hipótese nula omnibus, pois a estatística de teste observada é F(2,37.1) = 27.369 e o valor p associado é igual a \(1.22 \times 10^{-8}\). O tamanho do efeito do fator intraparticipantes Instructor é estimado pelo eta ao quadrado de Cohen cujo valor indica que 62% da variância da ingesta de sódio é explicada pelo efeito do fator fixo Instructor. A análise post-hoc confirmou que as diferenças das médias populacionais entre entre os programas adotados por Melissa e Brendon, e entre os adotados por Melissa e McGuirk são estatisticamente significantes. Não se observou diferença estatisticamente significante entre os programas adotados por Brendon e McGuirk.

Para aprofundar em métodos para resolver ANOVA relacionada, há oito possibilidades discutidas em Keselman et al. (2001).

Referências

  • Cohen, J (1992) A power primer. Quantitative methods in Psychology 112(1): 155-159.
  • Dancey C & Reidy J (2019) Estatística sem Matemática para Psicologia. 7a ed. Porto Alegre: PENSO.
  • Ferrari, A, Motta-Junior, JC & Siqueira, JO (2017) Métodos de amostragem e análise em estudos sobre comportamento de forrageio de aves. Oecologia Australis 21(2): 191–206. https://doi.org/10.4257/oeco.2017.2102.03
  • Johnson, R & Wichern, D (2007) Applied Multivariate Statistical Analysis. 6th ed. NJ: Prentice-Hall.
  • Keselman HJ, Algina J, Kowalchuk R (2001) The analysis of repeated measures designs: A review. British Journal of Mathematical and Statistical Psychology 54(1).
  • Moore, D (1995) The basic practice of statistics. NY: W. H. Freeman and Company.
  • Norusis, M (2009) PASW Statistics 18: Statistics Procedures Companion. NJ: Prentice-Hall.
  • Pestana, M & Gageiro, J (2008) Análise de dados para Ciências Sociais: a complementaridade do SPSS. Lisboa: Sílabo.