Perché i valori di p cambiano di significato quando si cambia l'ordine delle covariate nel modello aov?


10

Ho un set di dati di 482 osservazioni.

data=Populationfull

Ho intenzione di fare un'analisi dell'associazione genotipo per 3 SNP. Sto cercando di costruire un modello per la mia analisi e sto usando aov (y ~ x, data = ...). Per un tratto ho diversi effetti fissi e covariate che ho incluso nel modello, in questo modo:

Starts <- aov(Starts~Sex+DMRT3+Birthyear+Country+Earnings+Voltsec+Autosec, data=Populationfull)

summary(Starts)
                Df Sum Sq Mean Sq F value   Pr(>F)    
Sex              3  17.90    5.97  42.844  < 2e-16 ***
DMRT3            2   1.14    0.57   4.110    0.017 *  
Birthyear        9   5.59    0.62   4.461 1.26e-05 ***
Country          1  11.28   11.28  81.005  < 2e-16 ***
Earnings         1 109.01  109.01 782.838  < 2e-16 ***
Voltsec          1  12.27   12.27  88.086  < 2e-16 ***
Autosec          1   8.97    8.97  64.443 8.27e-15 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Ho scoperto che se ho cambiato l'ordine delle variabili nel modello ho ottenuto valori p diversi, vedi sotto.

Starts2 <- aov(Starts~Voltsec+Autosec+Sex+DMRT3+Birthyear+Country+Earnings, data=Populationfull)

summary(Starts2)

                Df Sum Sq Mean Sq F value   Pr(>F)    
Voltsec   1   2.18    2.18  15.627 8.92e-05 ***
Autosec   1 100.60  100.60 722.443  < 2e-16 ***
Sex              3  10.43    3.48  24.962 5.50e-15 ***
DMRT3            2   0.82    0.41   2.957  0.05294 .  
Birthyear        9   3.25    0.36   2.591  0.00638 ** 
Country          1   2.25    2.25  16.183 6.72e-05 ***
Earnings      1  46.64   46.64 334.903  < 2e-16 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Perché ottengo valori p diversi a seconda dell'ordine in cui sono codificate le variabili / fattori / covariate / fixedeffects (?)? C'è un modo per "correggere" per questo? Può essere che sto usando il modello sbagliato? Sono ancora abbastanza nuovo in R, quindi se puoi aiutarmi con questo ti prego di mantenerlo davvero semplice in modo che io possa capire la risposta hehe ... Grazie, spero che qualcuno possa aiutarmi a capirlo!


3
Fornisci alcuni dati di esempio per Populationfullrendere il tuo problema riproducibile . Questo non accade con l'esempio della aov()pagina di aiuto. summary(aov(yield ~ block + N + P + K, npk)); summary(aov(yield ~ K + P + block + N , npk))
MrFlick

I valori di p cambiano perché è cambiato l'intero campo di valori. la tua prima manche la Earnings 1 109.01 109.01 782.838 < 2e-16 ***tua seconda manche Earnings 1 46.64 46.64 334.903 < 2e-16 ***. I tuoi risultati non sono gli stessi. Inizia controllando che non hai fatto altro che riordinare le variabili.

1
ANCHE: nel secondo modello, si utilizza Guadagna, non guadagni ... se ci sono due variabili con nomi diversi, potrebbe essere un problema se questo non è un errore di battitura nella copia nello spazio delle domande SO.

Sì, i valori cambiano ma perché? Ho usato le stesse colonne esatte dello stesso identico frame di dati in entrambi i modelli (la cosa Earnings vs Earn nel secondo modello è solo che l'ho scritta male, l'ho corretta ora).
Rbeginner,

1
Questo accade perché hai un design sbilanciato. Troverai molto aiuto a riguardo se cerchi questo forum o semplicemente Google "ANOVA sbilanciato in R". Consiglio di esaminare il carpacchetto: implementa ANOVA di tipo II e di tipo III, che non dipendono dall'ordine delle variabili, mentre aovANOVA di tipo I.
Slow loris,

Risposte:


15

Il problema deriva dal modo in cui aov()esegue i test di significatività predefiniti. Utilizza la cosiddetta analisi ANOVA "Tipo I", in cui i test vengono eseguiti nell'ordine in cui le variabili sono specificate nel modello. Quindi, nel primo esempio, determina quanta varianza viene spiegata sexe ne verifica il significato, quindi da quale parte della varianza rimanente viene spiegata DMRT3e ne verifica il significato in termini di tale varianza rimanente , e così via. Nel secondo esempio, DMRT3viene valutato solo dopo Voltsec, Autosece sex, in quell'ordine, quindi c'è meno varianza rimanente per DMRT3spiegare.

Se due variabili predittive sono correlate, la prima immessa nel modello otterrà un "credito" completo, lasciando meno varianza per essere "spiegata dalla" seconda, che può quindi apparire meno "statisticamente significativa" della prima anche se lo è non, funzionalmente. Questa domanda e la sua risposta spiegano i diversi tipi di analisi ANOVA.

Un modo per aggirare questo è estrarre te stesso dalle restrizioni della classica ANOVA e usare un semplice modello lineare, con lm()in R, piuttosto che aov(). Questo analizza efficacemente tutti i predittori in parallelo, "correggendo" tutti i predittori contemporaneamente. In tal caso, due predittori correlati potrebbero finire per avere grandi errori standard dei loro coefficienti di regressione stimati e i loro coefficienti potrebbero differire tra i diversi campioni dalla popolazione, ma almeno l'ordine in cui inserisci le variabili nella specifica del modello non avrà importanza.

Se la tua variabile di risposta è un tipo di variabile di conteggio, come Startssuggerisce il nome , probabilmente non dovresti usare ANOVA comunque poiché è improbabile che i residui siano distribuiti normalmente, come richiede l'interpretazione del valore p . Le variabili di conteggio vengono gestite meglio con modelli lineari generalizzati (ad esempio, glm()in R), che possono essere considerati una generalizzazione di lm()altri tipi di strutture di errore residuo.

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.