Come eseguire ANOVA bidirezionale su dati senza normalità o uguaglianza di varianza in R?


16

Attualmente sto lavorando alla mia tesi di laurea e ho pianificato di gestire le statistiche con SigmaPlot. Tuttavia, dopo aver trascorso un po 'di tempo con i miei dati, sono giunto alla conclusione che SigmaPlot potrebbe non essere adatto al mio problema (potrei sbagliarmi), quindi ho iniziato i miei primi tentativi in ​​R, il che non ha reso esattamente più facile.

Il piano era di eseguire un semplice ANOVA A DUE VIE sui miei dati che risulta da 3 diverse proteine ​​e 8 diversi trattamenti su quelle, quindi i miei due fattori sono proteine ​​e trattamenti. Ho provato la normalità usando entrambi

> shapiro.test(time)

e

> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))

In entrambi i casi (forse non sorprendente) ho finito con una distribuzione non normale.

Il che mi ha lasciato con le prime domande su quale test usare per l'uguaglianza delle varianze. Mi è venuta in mente

> chisq.test(time)

e il risultato è stato che non ho uguaglianza di varianza nei miei dati.

Ho provato diverse trasformazioni di dati (log, center, standardizzazione), che non hanno risolto i miei problemi con le varianze.

Ora sono in perdita, come condurre l'ANOVA per testare quali proteine ​​e quali trattamenti differiscono in modo significativo l'uno dall'altro. Ho trovato qualcosa su un Kruskal-Walis-Test, ma solo per un fattore (?). Ho anche trovato cose sulla classifica o sulla randamizzazione, ma non ancora come implementare quelle tecniche in R.

Qualcuno ha un suggerimento su cosa dovrei fare?

Modifica: grazie per le tue risposte, sono un po 'sopraffatto dalla lettura (sembra solo ottenere sempre di più invece di meno), ma ovviamente continuerò.

Ecco un esempio dei miei dati, come suggerito (mi dispiace molto per il formato, non sono riuscito a trovare un'altra soluzione o un posto dove mettere un file. Sono ancora nuovo a tutto questo.):

protein treatment   time  
A   con 2329.0  
A   HY  1072.0  
A   CL1 4435.0  
A   CL2 2971.0  
A   CL1-HY sim  823.5  
A   CL2-HY sim  491.5  
A   CL1+HY mix  2510.5  
A   CL2+HY mix  2484.5  
A   con 2454.0  
A   HY  1180.5  
A   CL1 3249.7  
A   CL2 2106.7  
A   CL1-HY sim  993.0  
A   CL2-HY sim  817.5  
A   CL1+HY mix  1981.0  
A   CL2+HY mix  2687.5  
B   con 1482.0  
B   HY  2084.7  
B   CL1 1498.0  
B   CL2 1258.5  
B   CL1-HY sim  1795.7  
B   CL2-HY sim  1804.5  
B   CL1+HY mix  1633.0  
B   CL2+HY mix  1416.3  
B   con 1339.0  
B   HY  2119.0  
B   CL1 1093.3  
B   CL2 1026.5  
B   CL1-HY sim  2315.5  
B   CL2-HY sim  2048.5  
B   CL1+HY mix  1465.0  
B   CL2+HY mix  2334.5  
C   con 1614.8  
C   HY  1525.5  
C   CL1 426.3  
C   CL2 1192.0  
C   CL1-HY sim  1546.0  
C   CL2-HY sim  874.5  
C   CL1+HY mix  1386.0  
C   CL2+HY mix  364.5  
C   con 1907.5  
C   HY  1152.5  
C   CL1 639.7  
C   CL2 1306.5  
C   CL1-HY sim  1515.0  
C   CL2-HY sim  1251.0  
C   CL1+HY mix  1350.5  
C   CL2+HY mix  1230.5

2
Sembrerebbe che tu sia sulla buona strada con R, ma sento che le tue difficoltà potrebbero non essere affatto legate a R. Forse è necessario consultare prima uno statistico per ottenere le prese del problema, solo allora lo affronteresti praticamente. La tua domanda attuale è piuttosto elaborata e può dissuadere le persone dal fare una botta. Per la parte tecnica, ecco alcuni siti: ats.ucla.edu/stat/R/seminars/Repeated_Measures/… and personality-project.org/R/r.anova.html
Roman Luštrik,

4
Un'ottima alternativa ai test di rango è usare l'ANOVA di permutazione ( uvm.edu/~dhowell/StatPages/More_Stuff/Permutation%20Anova/… ). Con questo approccio l'eteroscedasticità non ha importanza. Il motivo principale per cui le persone usano i test di livello è perché sono molto più facili dal punto di vista computazionale. Non ha più importanza. Abbiamo R e computer efficienti ...
Mikko,

1
Che cos'è la risposta? Si noti che in realtà non ci interessa se la risposta è normalmente distribuzione - vogliamo verificare se i residui dell'analisi sono approssimativamente normali con varianze simili. Ma se ci fosse effettivamente un effetto terapeutico, non ci aspetteremmo che la risposta sia normalmente distribuita marginalmente.
Dason,

1
Noterò che ho appena afferrato i dati che hai pubblicato e ho eseguito l'anova a due vie e ho fatto un test di Wilp Shapiro sui residui e questo ha dato un valore p di 0,5022 che non implica troppo preoccupazione.
Dason,

1
La normalità di @Sabine non è spesso una grande preoccupazione per ciò che riguarda ANOVA, ma i tuoi campioni dovrebbero provenire dalla stessa popolazione, il che significa che l'uguaglianza di varianza è il presupposto più importante, ovviamente dopo la randomizzazione. Dovresti fare qualcosa, se le tue variazioni non sono approssimativamente uguali (prova ?bartlett.test)
Mikko,

Risposte:


12

Questo può essere più un commento che una risposta, ma non si adatta come un commento. Potremmo essere in grado di aiutarti qui, ma ciò potrebbe richiedere alcune iterazioni; abbiamo bisogno di maggiori informazioni.

Innanzitutto, qual è la tua variabile di risposta?

In secondo luogo, nota che la distribuzione marginale della tua risposta non deve essere normale, piuttosto che la distribuzione condizionata al modello (cioè i residui) dovrebbe essere - non è chiaro che tu abbia esaminato i tuoi residui. Inoltre, la normalità è il presupposto meno importante di un modello lineare (ad esempio, un ANOVA); potrebbe non essere necessario che i residui siano perfettamente normali. I test di normalità non sono generalmente utili (vedi qui per una discussione sul CV), le trame sono molto migliori. Vorrei provare una trama qq dei tuoi residui. In Rquesto è fatto con qqnorm(), o provare qqPlot()nelcarpacchetto. Vale anche la pena considerare il modo in cui i residui non sono normali: l'asimmetria è più dannosa dell'eccessiva curtosi, in particolare se le inclinazioni alternano direzioni tra i gruppi.

Se c'è davvero un problema di cui preoccuparsi, una trasformazione è una buona strategia. Prendere il registro dei dati non elaborati è un'opzione, ma non l'unica. Si noti che la centratura e la standardizzazione non sono in realtà trasformazioni in questo senso. Vuoi dare un'occhiata alla famiglia di trasformazioni di potenza Box & Cox . E ricorda, il risultato non deve essere perfettamente normale, ma abbastanza buono.

Successivamente, non seguirò il vostro uso del test chi-quadrato per l'omogeneità della varianza, sebbene possa essere perfettamente soddisfacente. Suggerirei di usare il test di Levene (usare leveneTest()in car). L'eterogeneità è più dannosa della non normalità, ma l'ANOVA è piuttosto robusta se l'eterogeneità è minore. Una regola empirica standard è che la più grande varianza di gruppo può essere fino a quattro volte la più piccola senza porre forti problemi. Una buona trasformazione dovrebbe anche affrontare l'eterogeneità.

Se queste strategie non fossero sufficienti, probabilmente esplorerei la regressione solida prima di provare un approccio non parametrico.

Se riesci a modificare la tua domanda e dire di più sui tuoi dati, potrei essere in grado di aggiornarlo per fornire informazioni più specifiche.


Re il mio 2 ° punto, di recente ho scritto una risposta qui che aiuto possono rendere più chiaro questo problema. Potresti volerlo leggere.
gung - Ripristina Monica

8

( nota: questa risposta è stata pubblicata prima che la domanda fosse migrata e unita da SO, quindi sono stati aggiunti dettagli alla domanda che non sono stati affrontati qui. Molti sono affrontati nei commenti e nella risposta di @gung).

Esistono molti approcci diversi e questa domanda è stata trattata altrove in questo sito. Ecco un elenco di alcuni approcci, con collegamenti ad altre domande sul sito e alcuni riferimenti .:

  1. La trasformazione di potenza Box-Cox può normalizzare i residui che si trovano su una scala non lineare
  2. ANOVA sui dati classificati è molto semplice ma ha una potenza ridotta ed è difficile da interpretare. Vedi Conover e Iman, (1981)
  3. Modello logistico ordinale quote proporzionali
  4. Test di permutazione ( Anderson e ter Braak 2003 ), implementati e descritti da Anderson e come adonisfunzione nel pacchetto R Vegan
  5. bootstrapping
  6. Modellistica gerarchica bayesiana ( Gelman 2005 )

+1, questa è una bella lista di alcune opzioni disponibili da esplorare.
gung - Ripristina Monica

Di seguito sono riportati i commenti originariamente scambiati su Stack Overflow, in qualche modo persi durante la migrazione. Vedi meta.stats.stackexchange.com/q/1157/930 .
chl

Sai se esiste un'implementazione delle idee di Anderson e Braak? - Henrik 16 maggio alle 15:15
chl

@Henrik c'è un'implementazione in FORTRAN Anderson 2005 che è disponibile tramite la funzione R adonisnel Veganpacchetto R / David 16 maggio alle 16:20
chl

Grazie. adonissembra funzionare anche con DVD univariati Tuttavia, ho la sensazione che usi qualcosa come somme di quadrati di tipo 1 mentre ricevo il messaggio Terms added sequentially (first to last)ogni volta che lo eseguo. L'hai usato o puoi dire qualcosa al riguardo? - Henrik 16 maggio alle 17:03
chl
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.