Come creare e interpretare un grafico qq in r
Un grafico QQ , abbreviazione di “quantile-quantile”, è un tipo di grafico che possiamo utilizzare per determinare se un set di dati proviene potenzialmente o meno da una distribuzione teorica.
Molti test statistici presuppongono che un set di dati segua una distribuzione normale e un grafico QQ viene spesso utilizzato per valutare se questo presupposto è soddisfatto o meno.
Sebbene un grafico QQ non sia un test statistico formale, fornisce un modo semplice per verificare visivamente se un set di dati segue una distribuzione normale e, in caso contrario, come viene violata questa ipotesi e quali punti dati sono potenzialmente all’origine di questa violazione.
Possiamo creare un grafico QQ tracciando due serie di quantili uno contro l’altro. Se entrambi gli insiemi di quantili provengono dalla stessa distribuzione, i punti sul grafico dovrebbero formare all’incirca una linea diagonale retta.
I quantili rappresentano i punti in un insieme di dati al di sotto dei quali si trova una certa porzione di dati. Ad esempio, il quantile 0,9 rappresenta il punto sotto il quale cade il 90% dei dati. Il quantile 0,5 rappresenta il punto sotto il quale si trova il 50% dei dati e così via.
I grafici QQ identificano i quantili dei campioni di dati e li confrontano con i quantili di una distribuzione teorica. Nella maggior parte dei casi viene utilizzata la distribuzione normale, ma in realtà è possibile creare un grafico QQ per qualsiasi distribuzione teorica.
Se i punti dati si trovano lungo una linea diagonale retta in un grafico QQ, è probabile che il set di dati segua una distribuzione normale.
Come creare un grafico QQ in R
Possiamo facilmente creare un grafico QQ per verificare se un set di dati segue una distribuzione normale utilizzando la funzione qqnorm() incorporata.
Ad esempio, il codice seguente genera un vettore di 100 valori casuali che segue una distribuzione normale e crea un grafico QQ per quel set di dati per verificare che segua effettivamente una distribuzione normale:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data)
Per rendere ancora più semplice vedere se i dati seguono una linea retta, possiamo utilizzare la funzione qqline() :
#create QQ plot qqnorm(data) #add straight diagonal line to plot qqline(data)
Possiamo vedere che i punti dati vicino alle code non seguono esattamente la linea retta, ma per la maggior parte questi dati campione sembrano essere distribuiti normalmente (come dovrebbero essere dal momento che abbiamo chiesto a R di generare i dati da una distribuzione normale ). ).
Consideriamo invece il seguente codice che genera un vettore di 100 valori casuali che segue una distribuzione gamma e crea un grafico QQ per questi dati per verificare se seguono una distribuzione normale:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a gamma distribution data <- rgamma(100, 1) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
Possiamo vedere una chiara deviazione dalla linea retta in questo grafico QQ, indicando che questo set di dati probabilmente non segue una distribuzione normale.
Consideriamo un altro pezzo di codice che genera un vettore di 100 valori casuali che segue una distribuzione Chi-quadrato con 5 gradi di libertà e crea un grafico QQ per questi dati per verificare se seguono una distribuzione normale:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a Chi-Square distribution data <- rchisq(100, 5) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
Ancora una volta possiamo vedere che questo set di dati non sembra seguire una distribuzione normale, soprattutto vicino alle code.
Cambia l’estetica di un grafico QQ in R
Possiamo modificare alcuni aspetti estetici del grafico QQ in R, inclusi il titolo, le etichette degli assi, i colori dei punti dati, il colore della linea e la larghezza della linea.
Il codice seguente modifica i titoli, le etichette degli assi e il colore dei punti della trama:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot qqnorm(data, main = 'QQ Plot for Normality', xlab = 'Theoretical Dist', ylab = 'Sample dist', col = 'steelblue')
Quindi il codice seguente aggiunge una linea diagonale retta al grafico con un colore rosso, una larghezza della linea pari a 2 (lwd = 2, il valore predefinito è 1) e una linea tratteggiata (lty = 2, il valore predefinito è 1):
qqline(data, col = 'red', lwd = 2, lty = 2)
Note tecniche
Tieni presente che un grafico QQ è semplicemente un modo per verificare visivamente se un set di dati segue una distribuzione teorica. Per verificare formalmente se un set di dati segue o meno una distribuzione particolare, è possibile eseguire i seguenti test (supponendo che si stia confrontando il set di dati con una distribuzione normale):
Test di Anderson-Darling
Test di Shapiro-Wilk
Test di Kolmogorov-Smirnov