Perché tutti i test per la normalità respingerebbero l'ipotesi nulla?


12

Il test di Kolgomorov-Smirnov, il test di Shapiro, ecc .... rifiutano tutti l'ipotesi che una distribuzione sia normale. Tuttavia, quando tracciamo i normali quantili e l'istogramma, i dati sono chiaramente normali. Forse perché la potenza dei test è alta?

La dimensione del campione è di circa 650. Quindi non dovrebbe almeno uno di questi test non respingere l'ipotesi nulla?

risultati:

           Kolmogorov-Smirnov    D          0.05031          Pr > D       <0.010
           Cramer-von Mises      W-Sq       0.30003          Pr > W-Sq    <0.005
           Anderson-Darling      A-Sq       1.66965          Pr > A-Sq    <0.005
           Chi-Square            Chi-Sq  3250.43596     18   Pr > Chi-Sq  <0.001

1
Benvenuti nel sito. Il potere potrebbe davvero essere un problema. Puoi pubblicare i tuoi risultati, in modo che possiamo essere più specifici?
StasK,

1
È quasi impossibile valutare la normalità con molta precisione osservando un istogramma o i quantili. I primi tre di questi test misurano le deviazioni in un diagramma di probabilità (diagramma Qq normale), quindi quanto appare lineare quel diagramma?
whuber

Risposte:


13

Il test della normalità è una perdita di tempo e il tuo esempio illustra il perché. Con piccoli campioni, il test di normalità ha un basso potere, quindi le decisioni su quali modelli statistici usare devono essere basate su una conoscenza a priori . In questi casi il mancato rigetto del null non dimostra che il null sia addirittura approssimativamente vero a livello di popolazione.

Quando hai campioni di grandi dimensioni, i test di normalità diventano ridicolmente potenti, ma non ti dicono nulla che non sapevi già. Nessuna quantità reale è esattamente normalmente distribuita. La distribuzione normale è solo un'astrazione matematica che è un'approssimazione abbastanza buona in molti casi. La prova più semplice di ciò è che non esiste una quantità reale (almeno nessuna a cui riesco a pensare) che possa prendere qualsiasi numero reale come valore. Ad esempio, ci sono solo così tante molecole nell'universo. Ci sono solo tanti dollari nell'offerta di moneta. La velocità della luce è finita. I computer possono memorizzare solo numeri di dimensioni finite, quindi anche se qualcosa avesse un supporto di tutti i numeri reali, non saresti in grado di misurarlo.

Il punto è che sapevi già che i tuoi dati non erano esattamente distribuiti normalmente, ma i test di normalità non ti dicono nulla di quanto non siano normali. Non ti danno assolutamente alcun indizio sul fatto che i tuoi dati siano approssimativamente distribuiti normalmente in modo tale che i metodi di inferenza statistica che presuppongono la normalità darebbero risposte corrette. Ironia della sorte, i test comuni (ad esempio il test T e ANOVA) che assumono la normalità sono più robusti rispetto alla non normalità su campioni di grandi dimensioni.


In seguito alla tua risposta, ho pubblicato una domanda su ciò che costituisce un buon indice di non normalità: stats.stackexchange.com/questions/16646/… Qualche idea?
Jeromy Anglim,

Per quanto riguarda il quantizzare tutto nel mondo: non è possibile distribuire normalmente anche dati discreti?
xmjx,

Un altro commento sul problema del computer: si noti che il meccanismo spesso utilizzato per memorizzare i numeri decimali nei computer ha una granularità diversa per l'intervallo di numeri piccoli e grandi. Quindi la differenza minima tra i numeri che il computer è in grado di memorizzare è più piccola per i numeri piccoli e maggiore per i numeri grandi. Per un computer, 100000.1 e 100000.2 potrebbero essere gli stessi, mentre 0.1 e 0.2 non lo sono. (Solo un esempio - nel mondo reale non è poi così male.)
xmjx

@xmjx: i dati discreti possono essere distribuiti approssimativamente normalmente, il che significa che sono abbastanza vicini per quasi tutti gli scopi pratici. Tuttavia, in teoria qualsiasi distribuzione discreta fallirà alcuni test per la normalità se la dimensione del campione è abbastanza grande. La distribuzione normale è continua e non c'è modo di evitarlo.
dsimcha,

@dsimcha Ma la distribuzione normale è solo una funzione di densità di probabilità che potrebbe predire il numero di osservazioni in un dato bin della variabile discreta. Quindi, capirei se dicessi "nessuna variabile reale è esattamente distribuita normalmente ed è per questo che i test di normalità falliranno ad un certo punto". Ma per "i dati discreti non possono essere normalmente distribuiti poiché non sono continui" Vorrei qualche riferimento. Sono davvero interessato a quel tipo di cose. Non voler iniziare una rissa qui.
xmjx,

4

Questo non mi sorprende: con una dimensione del campione abbastanza grande, qualsiasi buon test dovrebbe rifiutare l'ipotesi nulla, a meno che la distribuzione di generazione dei dati sia veramente (ed esattamente) normale.

Con il test delle ipotesi, di solito si è interessati a trovare un test "potente", che è in grado di trovare deviazioni molto piccole dall'ipotesi nulla, con il minor numero possibile di dati.

Prova a eseguire il test con un sottocampione di dimensioni 20, 50, 100, 200 e vedi a quale dimensione i test iniziano a rifiutare. È facile vedere se un istogramma è simmetrico e generalmente a forma di campana, ma le code della distribuzione sono più difficili da valutare a occhio. Forse ci sono valori anomali nei dati che stanno causando il rifiuto dei test? Se ci sono, vedi cosa succede quando li elimini.


Grazie per la risposta. Lo scopo è verificare se i residui sono normali. Immagino che guardare una trama normale-quantile e vedere se si trova su y = x sia la scommessa migliore?
Robbie,

@Robbie Se sei solo interessato a cercare di capire se i tuoi residui sono normali, un'ispezione visiva dovrebbe andare bene. I test statistici sulla distribuzione non sono realmente necessari per questo - come è stato notato, raccoglierà qualsiasi deviazione dalla normalità, anche una che non ha molta importanza.
Fomite,

@EpiGrad Non sono d'accordo. I test per la normalità hanno un potere notoriamente basso. Vedi la mia risposta sopra. Modifica d'altra parte, la regressione è piuttosto robusta rispetto alla non normalità, quindi concordo sul fatto che se sembra normale, probabilmente stai bene a tale scopo.
David J. Harris,

@ David J. Harris: "Notoriamente a bassa potenza"? Per campioni di dimensioni di 650? Questo è contrario a tutto ciò che ho letto o vissuto. Hai una citazione?
whuber

@ DavidJ.Harris Penso che alla base, a bassa potenza o significato spurio a causa di un ampio campione, l'intero esercizio non sia necessario per l'esame di routine dell'assunzione della normalità.
Fomite,

3

La probabile causa è che i tuoi dati sono leggermente non normali e la dimensione del tuo campione è abbastanza grande da rivelarlo.

Se la distribuzione è veramente normale, di solito dovrebbe superare questi test, come nel seguente esempio R in cui vengono superati tutti i test tranne uno.

> require(nortest)
> 
> set.seed(1)
> dat <- rnorm(650,mean=100, sd=5)
> 
> ad.test(dat)

        Anderson-Darling normality test

data:  dat 
A = 0.439, p-value = 0.2924

> cvm.test(dat)

        Cramer-von Mises normality test

data:  dat 
W = 0.0882, p-value = 0.1619

> lillie.test(dat)

        Lilliefors (Kolmogorov-Smirnov) normality test

data:  dat 
D = 0.0334, p-value = 0.08196

> pearson.test(dat)

        Pearson chi-square normality test

data:  dat 
P = 37.96, p-value = 0.035

> sf.test(dat)

        Shapiro-Francia normality test

data:  dat 
W = 0.9978, p-value = 0.5186

> shapiro.test(dat)

        Shapiro-Wilk normality test

data:  dat 
W = 0.9981, p-value = 0.675

Potresti voler fare un qqplot e se questo è abbastanza vicino a una linea retta, potresti decidere di trattarlo come abbastanza vicino alla normalità per i tuoi scopi. Dipende piuttosto da quali sono questi scopi.


Gli scopi sono i test per vedere se i residui sono normali nella regressione lineare.
Robbie,

1
@Robbie. Apparentemente non lo sono, ma potrebbero essere abbastanza vicini da non importare molto. Prova il qqplot.
Henry,

Il risultato del chi quadrato di Pearson sembra che i dati non siano normalmente distribuiti. Sto solo dicendo. Cosa fare con un tale risultato?
xmjx,

@xmjx: Not much - Se si applica un criterio 0,05, non si deve essere sorpresi se si ottiene un falso positivo il 5% delle volte.
Henry,

@Henry lo so. Cosa intendo: scegliere in anticipo qualsiasi test di normalità ha qualche probabilità di sceglierne uno che dirà "significativo". Quindi è meglio far funzionare una batteria e poi ... cosa? Media? Vai con il voto della maggioranza?
xmjx,

2

Vorrei essere in disaccordo con la risposta di dsimcha: "Il test della normalità è una perdita di tempo e il tuo esempio illustra il perché". I test di normalità non sono mai una perdita di tempo, puoi sempre imparare dai tuoi dati. Inoltre, ci sono alcune condizioni che è necessario testare prima di eseguire alcune analisi (ad es. ANOVA, regressione, ecc.). È preferibile testare campioni di grandi dimensioni relative con trama (QQplot, istogramma). In tali casi, la visualizzazione fornisce molte più informazioni sul comportamento multimodale e così via.

L'ANOVA e la regressione sono robusti rispetto alla non normalità quando si tratta di campioni di grandi dimensioni, ma il tipo principale di dati che causa problemi è costituito da campioni di dati multimodali.

Con campioni di piccole dimensioni, il test Kolgomorov-Smirnov è l'opzione migliore principalmente per la sua sensibilità.


1

Non sarò leggermente in disaccordo con le altre risposte finora pubblicate: questi test per la normalità hanno notoriamente poca potenza, anche con campioni relativamente grandi, almeno per alcuni tipi di deviazioni.

Ecco un breve esempio. Ho generato una miscela di due normali i cui mezzi sono separati da un intero sd.

set.seed(1)
reps = replicate(
  10000, 
  shapiro.test(c(rnorm(325, mean = 0), rnorm(325, mean = 1)))$p.value
)
mean(reps < .05)
[1] 0.0525

Considerando che "rilevare" le deviazioni dalla normalità il 5% delle volte, anche se fosse veramente normale, non è molto impressionante.

Ecco un altro esempio: aggiungo un rumore uniforme su un intervallo delle dimensioni di due deviazioni standard. Questo è visibilmente non normale.

set.seed(1)
reps = replicate(
  10000, 
  shapiro.test(rnorm(650) + 2 * runif(650))$p.value
)
mean(reps < .05)
[1] 0.0523

Ancora una volta, potenza estremamente bassa per un grande distacco dalla normalità.

Sei sicuro di leggere correttamente qqplot? Potresti caricarlo in modo che possiamo vederlo?

Modifica d'altra parte, la regressione è abbastanza robusta rispetto alla non normalità, quindi concordo sul fatto che l'ispezione visiva sarà probabilmente sufficiente per la maggior parte degli scopi.


3
073/2575/25
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.