In pratica, come gestiscono le persone ANOVA quando i dati non soddisfano del tutto le ipotesi?


19

Questa non è una domanda strettamente statistica - posso leggere tutti i libri di testo sui presupposti ANOVA - Sto cercando di capire come gli analisti che lavorano effettivamente gestiscono i dati che non soddisfano del tutto i presupposti. Ho passato molte domande su questo sito in cerca di risposte e continuo a trovare post su quando non usare ANOVA (in un contesto matematico astratto e idealizzato) o su come fare alcune delle cose che descrivo di seguito in R. I Sto davvero cercando di capire quali decisioni le persone prendono realmente e perché.

Sto eseguendo analisi su dati raggruppati da alberi (alberi reali, non alberi statistici) in quattro gruppi. Ho dati per circa 35 attributi per ogni albero e sto esaminando ogni attributo per determinare se i gruppi differiscono significativamente su quell'attributo. Tuttavia, in un paio di casi, le ipotesi ANOVA sono leggermente violate perché le varianze non sono uguali (secondo un test di Levene, usando alpha = .05).

A mio modo di vedere, le mie opzioni sono: 1. Potenza trasforma i dati e controlla se cambia il p-val di Levene. 2. Utilizzare un test non parametrico come un Wilcoxon (se sì, quale?). 3. Effettua una qualche correzione al risultato ANOVA, come un Bonferroni (non sono sicuro che esista qualcosa del genere?). Ho provato le prime due opzioni e ho ottenuto risultati leggermente diversi: in alcuni casi un approccio è significativo e l'altro no. Ho paura di cadere nella trappola per la pesca di valore p e sto cercando consigli che mi aiuteranno a giustificare quale approccio usare.

Ho anche letto alcune cose che suggeriscono che l'eteroscedasticità non è davvero un grosso problema per ANOVA a meno che i mezzi e le varianze non siano correlati (cioè entrambi aumentino insieme), quindi forse posso semplicemente ignorare il risultato del Levene a meno che non vedo un modello del genere? In tal caso, esiste un test per questo?

Infine, dovrei aggiungere che sto facendo questa analisi per la pubblicazione in una rivista peer-reviewed, quindi qualsiasi approccio mi accontento deve passare per i revisori. Quindi, se qualcuno può fornire collegamenti a esempi simili, pubblicati, sarebbe fantastico.


3
Indipendentemente dal fatto che si utilizzi R, può essere utile leggere qui la mia risposta: Alternative all'ANOVA a senso unico per i dati eteroscedastici , che discute di alcuni di questi problemi.
gung - Ripristina Monica

Risposte:


18

Sto cercando di capire come gli analisti che lavorano effettivamente gestiscono i dati che non soddisfano del tutto le ipotesi.

Dipende dalle mie esigenze, quali ipotesi vengono violate, in che modo, quanto male, quanto influisce sull'inferenza e talvolta sulla dimensione del campione.

Sto eseguendo analisi su dati raggruppati da alberi in quattro gruppi. Ho dati per circa 35 attributi per ogni albero e sto esaminando ogni attributo per determinare se i gruppi differiscono significativamente su quell'attributo. Tuttavia, in un paio di casi, le ipotesi ANOVA sono leggermente violate perché le varianze non sono uguali (secondo un test di Levene, usando alpha = .05).

1) Se le dimensioni del campione sono uguali, non hai molti problemi. ANOVA è abbastanza (livello) robusto per varianze diverse se le n sono uguali.

2) testare l' uguaglianza della varianza prima di decidere se assumerlo è sconsigliato da numerosi studi. Se hai dei veri dubbi sul fatto che saranno vicini alla parità, è meglio supporre che siano ineguali.

Alcuni riferimenti:

Zimmerman, DW (2004),
"Una nota sui test preliminari di uguaglianza delle varianze".
Br. J. Math. Statistica. Psychol. , Maggio ; 57 (Pt 1): 173-81.
http://www.ncbi.nlm.nih.gov/pubmed/15171807

Henrik fornisce tre riferimenti qui

3) È la dimensione dell'effetto che conta, piuttosto che se il tuo campione è abbastanza grande da dirti che sono significativamente diversi. Quindi, in campioni di grandi dimensioni, una piccola differenza nella varianza mostrerà come estremamente significativa dal test di Levene, ma non avrà sostanzialmente alcuna conseguenza nel suo impatto. Se i campioni sono grandi e la dimensione dell'effetto - il rapporto tra varianze o differenze nelle varianze - è abbastanza vicino a quello che dovrebbero essere, allora il valore p non ha alcuna conseguenza. (D'altra parte, in piccoli campioni, un bel grande valore p è di scarso conforto. In entrambi i casi il test non risponde alla domanda giusta.)

Si noti che esiste una correzione del tipo Welch-Satterthwaite per la stima dell'errore standard residuo e df in ANOVA, proprio come nei test t a due campioni.

  1. Usa un test non parametrico come un Wilcoxon (se sì, quale?).

Se sei interessato a alternative di spostamento di località, stai ancora assumendo una diffusione costante. Se sei interessato a alternative molto più generali, potresti forse considerarlo; il campione k equivalente a un test di Wilcoxon è un test di Kruskal-Wallis.

Apporta una sorta di correzione al risultato ANOVA

Vedi il mio suggerimento di cui sopra di considerare Welch-Satterthwaite, è un "tipo di correzione".

(In alternativa, potresti lanciare il tuo ANOVA come una serie di test t di tipo Welch a coppie, nel qual caso probabilmente vorresti guardare un Bonferroni o qualcosa di simile)

Ho anche letto alcune cose che suggeriscono che l'eteroscedasticità non è davvero un grosso problema per ANOVA a meno che i mezzi e le varianze non siano correlati (cioè aumentino entrambi insieme)

Dovresti citare qualcosa del genere. Dopo aver esaminato una serie di situazioni con i test t, non penso che sia chiaramente vero, quindi mi piacerebbe vedere perché la pensano così; forse la situazione è in qualche modo limitata. Sarebbe bello se fosse così, perché modelli lineari abbastanza spesso generalizzati possono aiutare in quella situazione.

Infine, dovrei aggiungere che sto facendo questa analisi per la pubblicazione in una rivista peer-reviewed, quindi qualsiasi approccio mi accontento deve passare per i revisori.

È molto difficile prevedere cosa potrebbe soddisfare i tuoi recensori. Molti di noi non lavorano con gli alberi.


12

In realtà non è molto difficile gestire l'eteroscedasticità in semplici modelli lineari (ad esempio, modelli ANOVA a una o due vie).

Robustezza di ANOVA

In primo luogo, come altri hanno notato, l'ANOVA è incredibilmente robusto per le deviazioni dall'assunzione di varianze uguali, specialmente se si dispone di dati approssimativamente bilanciati (uguale numero di osservazioni in ciascun gruppo). I test preliminari su varianze uguali, d'altro canto, non lo sono (sebbene il test di Levene sia molto migliore del test F comunemente insegnato nei libri di testo). Come diceva George Box:

Effettuare il test preliminare sulle varianze è piuttosto come mettersi in mare su una barca a remi per scoprire se le condizioni sono sufficientemente calme per consentire a un transatlantico di lasciare il porto!

Anche se ANOVA è molto robusto, poiché è molto facile tenere conto dell'eteroscedaticità, ci sono poche ragioni per non farlo.

Test non parametrici

Se sei veramente interessato alle differenze di mezzi , i test non parametrici (ad esempio il test di Kruskal – Wallis) non servono davvero. Fanno le differenze tra i gruppi di test, ma lo fanno senza differenze di prova generale in mezzo.

Dati di esempio

Generiamo un semplice esempio di dati in cui si vorrebbe usare ANOVA, ma in cui l'assunzione di varianze uguali non è vera.

set.seed(1232)
pop = data.frame(group=c("A","B","C"),
                 mean=c(1,2,5),
                 sd=c(1,3,4))
d = do.call(rbind, rep(list(pop),13))
d$x = rnorm(nrow(d), d$mean, d$sd)

Abbiamo tre gruppi, con (chiare) differenze sia nella media che nella varianza:

stripchart(x ~ group, data=d)

Diagramma a strisce che mostra i dati di esempio.

ANOVA

Non sorprende che un normale ANOVA lo gestisca abbastanza bene:

> mod.aov = aov(x ~ group, data=d)
> summary(mod.aov)
            Df Sum Sq Mean Sq F value  Pr(>F)    
group        2  199.4   99.69   13.01 5.6e-05 ***
Residuals   36  275.9    7.66                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Quindi, quali gruppi differiscono? Usiamo il metodo HSD di Tukey:

> TukeyHSD(mod.aov)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = x ~ group, data = d)

$group
        diff        lwr      upr     p adj
B-A 1.736692 -0.9173128 4.390698 0.2589215
C-A 5.422838  2.7688327 8.076843 0.0000447
C-B 3.686146  1.0321403 6.340151 0.0046867

Con un valore P di 0,26, non possiamo rivendicare alcuna differenza (in media) tra il gruppo A e B. E anche se non prendessimo in considerazione il fatto che abbiamo fatto tre confronti, non otterremmo una P bassa - valore ( P  = 0.12):

> summary.lm(mod.aov)
[…]
Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
(Intercept)   0.5098     0.7678   0.664     0.511    
groupB        1.7367     1.0858   1.599     0.118    
groupC        5.4228     1.0858   4.994 0.0000153 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.768 on 36 degrees of freedom

Perché? Sulla base della trama, non v'è una differenza abbastanza chiaro. Il motivo è che ANOVA assume varianze uguali in ciascun gruppo e stima una deviazione standard comune di 2,77 (indicata come "Errore standard residuo" nelsummary.lm tabella, oppure è possibile ottenerla prendendo la radice quadrata del quadrato medio residuo (7,66) nella tabella ANOVA).

Ma il gruppo A ha una deviazione standard (della popolazione) di 1, e questa sopravvalutazione di 2,77 rende (inutilmente) difficile ottenere risultati statisticamente significativi, cioè abbiamo un test con (troppo) bassa potenza.

'ANOVA' con varianze ineguali

Quindi, come adattare un modello adeguato, che tenga conto delle differenze di varianza? È facile in R:

> oneway.test(x ~ group, data=d, var.equal=FALSE)
    One-way analysis of means (not assuming equal variances)

data:  x and group
F = 12.7127, num df = 2.000, denom df = 19.055, p-value = 0.0003107

Quindi, se si desidera eseguire un semplice "ANOVA" unidirezionale in R senza assumere scostamenti uguali, utilizzare questa funzione. È fondamentalmente un'estensione del (Welch) t.test()per due campioni con varianze ineguali.

Sfortunatamente, non funziona con TukeyHSD()(o la maggior parte delle altre funzioni che usi sugli aovoggetti), quindi anche se siamo abbastanza sicuri che ci siano differenze di gruppo, non sappiamo dove siano.

Modellare l'eteroscedasticità

La soluzione migliore è modellare esplicitamente le varianze. Ed è molto facile in R:

> library(nlme)
> mod.gls = gls(x ~ group, data=d,
                weights=varIdent(form= ~ 1 | group))
> anova(mod.gls)
Denom. DF: 36 
            numDF  F-value p-value
(Intercept)     1 16.57316  0.0002
group           2 13.15743  0.0001

Differenze ancora significative, ovviamente. Ma ora anche le differenze tra i gruppi A e B sono diventate staticamente significative ( P  = 0,025):

> summary(mod.gls)
Generalized least squares fit by REML
  Model: x ~ group
  […]
Variance function:
 Structure: Different standard
            deviations per stratum
 Formula: ~1 | group 
 Parameter estimates:
       A        B        C 
1.000000 2.444532 3.913382 

Coefficients:
               Value Std.Error  t-value p-value
(Intercept) 0.509768 0.2816667 1.809829  0.0787
groupB      1.736692 0.7439273 2.334492  0.0253
groupC      5.422838 1.1376880 4.766542  0.0000
[…]
Residual standard error: 1.015564 
Degrees of freedom: 39 total; 36 residual

Quindi usare un modello appropriato aiuta! Si noti inoltre che otteniamo stime delle deviazioni standard (relative). La deviazione standard stimata per il gruppo A può essere trovata nella parte inferiore del, risultati, 1.02. La deviazione standard stimata del gruppo B è 2,44 volte questa, o 2,48, e la deviazione standard stimata del gruppo C è simile a 3,97 (digitare intervals(mod.gls)per ottenere intervalli di confidenza per le deviazioni standard relative dei gruppi B e C).

Correzione per più test

Tuttavia, dovremmo davvero correggere più test. Questo è facile usando la libreria 'multcomp'. Sfortunatamente, non ha il supporto integrato per gli oggetti 'gls', quindi dovremo prima aggiungere alcune funzioni di supporto:

model.matrix.gls <- function(object, ...)
    model.matrix(terms(object), data = getData(object), ...)
model.frame.gls <- function(object, ...)
  model.frame(formula(object), data = getData(object), ...)
terms.gls <- function(object, ...)
  terms(model.frame(object),...)

Ora mettiamoci al lavoro:

> library(multcomp)
> mod.gls.mc = glht(mod.gls, linfct = mcp(group = "Tukey"))
> summary(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate Std. Error z value Pr(>|z|)    
B - A == 0   1.7367     0.7439   2.334   0.0480 *  
C - A == 0   5.4228     1.1377   4.767   <0.001 ***
C - B == 0   3.6861     1.2996   2.836   0.0118 *  

Differenza statisticamente significativa ancora tra il gruppo A e il gruppo B! ☺ E possiamo anche ottenere intervalli di confidenza (simultanei) per le differenze tra i gruppi:

> confint(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate lwr     upr    
B - A == 0 1.73669  0.01014 3.46324
C - A == 0 5.42284  2.78242 8.06325
C - B == 0 3.68615  0.66984 6.70245

Usando un modello approssimativamente (qui esattamente) corretto, possiamo fidarci di questi risultati!

Si noti che per questo semplice esempio, i dati per il gruppo C non aggiungono realmente alcuna informazione sulle differenze tra il gruppo A e B, poiché modelliamo sia medie separate che deviazioni standard per ciascun gruppo. Avremmo potuto usare t -test a coppie corretti per confronti multipli:

> pairwise.t.test(d$x, d$group, pool.sd=FALSE)
    Pairwise comparisons using t tests with non-pooled SD 

data:  d$x and d$group 

  A       B      
B 0.03301 -      
C 0.00098 0.02032

P value adjustment method: holm 

Tuttavia, per i modelli più complicati, ad esempio modelli a due vie o modelli lineari con molti predittori, l'utilizzo di GLS (minimi quadrati generalizzati) e la modellazione esplicita delle funzioni di varianza è la soluzione migliore.

E la funzione di varianza non deve essere semplicemente una costante diversa in ciascun gruppo; possiamo imporre struttura su di esso. Ad esempio, possiamo modellare la varianza come una potenza della media di ciascun gruppo (e quindi solo per stimare un parametro, l'esponente), o forse come logaritmo di uno dei predittori nel modello. Tutto questo è molto semplice con GLS (e gls()in R).

I minimi quadrati generalizzati sono l'IMHO una tecnica di modellistica statistica molto poco utilizzata. Invece di preoccuparti delle deviazioni dalle ipotesi del modello, modella quelle deviazioni!


1
Grazie per la risposta! Non capisco il risultato di oneway.test () e gls () per la varianza disuguale ANOVA (Welch ANOVA). Il valore p di oneway.test () è p-value = 0.0003107. Ma il valore p di gls (x ~ group, data = d, weights = varIdent (form = ~ 1 | group)) è 0,0001. Perché questi due risultati sono diversi?
WCMC,

2
C'è una crescente preoccupazione per le correzioni per più test, penso che riportare valori p non corretti insieme al numero di confronti che hai fatto sia più trasparente. Soprattutto perché potresti non essere interessato ad ogni confronto a coppie durante il test in R, quindi la correzione sarà effettuata prendendo in considerazione confronti che non sono di interesse.
Nakx,

7
  1. Potrebbe infatti esserci una trasformazione dei dati che produce una distribuzione accettabilmente normale. Naturalmente, ora la tua inferenza riguarda i dati trasformati, non i dati non trasformati.

  2. Supponendo che tu stia parlando di un ANOVA a senso unico, il test di Kruskal-Wallis è un analogo non parametrico appropriato all'ANOVA a senso unico. Il test di Dunn (non il test di somma dei ranghi delle varietà da giardino) è forse il test non parametrico più comune appropriato per confronti multipli post hoc a coppie, anche se ci sono altri test come il test Conover-Iman (strettamente più potente del test di Dunn dopo il rifiuto del kruskal-Wallis) e il test Dwass-Steele-Crichtlow-Fligner.

  3. α

L'ANOVA si basa su un rapporto tra gruppo e tra varianze di gruppo. Non sono del tutto sicuro di ciò che intendi per eteroscedasticità in questo contesto, ma se intendi differenze ineguali tra i gruppi, ciò sembrerebbe a me fondamentalmente infrangere la logica dell'ipotesi nulla del test.

Una semplice query di Google Scholar per "test di Dunn" insieme a un termine generale della tua disciplina dovrebbe restituire molti esempi pubblicati.


Riferimenti

Conover, WJ e Iman, RL (1979). Sulle procedure di confronto multiplo . Rapporto tecnico LA-7677-MS, Laboratorio scientifico di Los Alamos.

Crichtlow, DE e Fligner, MA (1991). Su confronti multipli senza distribuzione nell'analisi unidirezionale della varianza . Communications in Statistics — Theory and Methods , 20 (1): 127.

Dunn, GU (1964). Confronti multipli usando somme di rango . Technometrics , 6 (3): 241–252.


2
Ok, grazie per questa risposta, ma non sono del tutto chiaro su quello che stai dicendo. Per quanto riguarda "eteroscedasticità" pensavo di usare la parola nel senso ordinario: "una raccolta di variabili casuali è eteroscedastica se vi sono sottopopolazioni che hanno variabilità diverse dalle altre. Qui la" variabilità "può essere quantificata dalla varianza o qualsiasi altra misura di dispersione statistica. "- Wikipedia. Nei miei dati le varianze dei sottogruppi sono disuguali (secondo il test di Levene), quindi le ho descritte come eteroscedastiche. Non è giusto?
Jas Max,

1
Quello che sto davvero cercando di discutere è il divario tra le statistiche dei libri di testo e il mondo reale. Ogni libro di testo dice "le varianze devono essere uguali per ANOVA" ma ovviamente non lo sono mai. Quindi, interrompiamo arbitrariamente un determinato punto e passiamo a un altro test - in caso affermativo, a che punto? Nel mio campo (biologia vegetale) la maggior parte delle persone usa semplicemente qualsiasi test che sono stati addestrati a usare senza pensarci troppo. Non ne sono davvero soddisfatto. Gradirei qualsiasi suggerimento per libri / siti Web che trattino l'uso "pratico" delle statistiche, ovvero quali test utilizzare quando e perché. Grazie per il suggerimento del Dunn, questo aiuta.
Jas Max,

2
Ah, l'assunzione di varianze uguali è la varianza della popolazione e non la varianza del campione . Puoi dedurre che le varianze della popolazione sono uguali ... tramite il test del bulbo oculare, o da qualche altro, diciamo, test statistico.
Alexis,

1
Come fai a sapere qualcosa sulla varianza della popolazione se non valutando la varianza del campione? Interpreto un test p-val di Levene come "supponendo che le varianze della popolazione siano uguali, quali sono le probabilità che le varianze del tuo campione differiscano così tanto". Se ottengo un p-val basso, rifiuto l'ipotesi che le varianze della popolazione siano uguali e non possano usare ANOVA. Kruskal-Wallace sembra una buona alternativa, ma è preferibile trasformare i dati per soddisfare le ipotesi ANOVA e, se sì, perché?
Jas Max,

1
Inoltre, il test di Levene, p <.05 è il test appropriato e il limite per questa decisione? Che dire di O'Brien, Bartlett ... i risultati di questi test possono differire in modo sostanziale e non so davvero quale usare - quindi vado con Levene perché sembra essere il più conservatore. Ma forse è eccessivo - forse essendo troppo veloce per abbandonare ANOVA, sto passando a un test che riduce inutilmente il potere statistico della mia analisi.
Jas Max,

1

Mi sembra che tu stia facendo il lavoro di gambe e stai facendo del tuo meglio, ma sei preoccupato che i tuoi sforzi non saranno abbastanza buoni da far passare la tua carta ai revisori. Molto un problema del mondo reale. Penso che tutti i ricercatori abbiano difficoltà ad analizzare analisi che sembrano essere al limite o addirittura francamente infrangere ipotesi di volta in volta. Dopotutto ci sono milioni di articoli che valutano ad esempio gli effetti del trattamento in 3 piccoli gruppi di topi con qualcosa come 6 - 7 topi in ciascun gruppo. Come sapere se i presupposti di Anova sono soddisfatti in tale documento!

Ho esaminato un gran numero di articoli soprattutto nel campo della fisiopatologia cardiovascolare e in realtà non mi sento mai sicuro al 100% se posso fidarmi dei dati o meno in un articolo che ho letto. Ma per me come revisore, in realtà tendo a pensare che possano sorgere problemi a così tanti livelli nella scienza che probabilmente non ha molto senso scavare troppo in profondità nelle statistiche - dopo tutto, l'intero set di dati potrebbe essere fabbricato e non avrei mai tra un milione di anni sarà in grado di dirlo. Di conseguenza, ci sarà sempre un elemento di fiducia in questo campo di lavoro, che i ricercatori non devono mai abusare.

Il suggerimento più reale che darei è che devi riflettere attentamente su tutto prima di inviare e assicurarti di essere in grado di rispondere in modo veritiero a tutte le domande poste dai revisori. Finché hai fatto del tuo meglio, le tue intenzioni sono oneste e dormi bene la notte, penso che dovresti essere a posto.


2
Non sono sicuro di essere d'accordo sul fatto di non essere in grado di individuare le fabbricazioni: l'ho notato prima.
Alexis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.