Quali sono le funzioni di distribuzione cumulativa empirica e cosa possiamo fare con esse? Per rispondere alla prima domanda, facciamo un primo passo indietro e assicuriamoci di capire “distribuzioni”, o più specificamente “distribuzioni di probabilità”.
Una distribuzione di probabilità di base
Immagina un semplice evento, ad esempio lanciando una moneta 3 volte., Ecco tutti i possibili risultati, dove H = head e T = tails:
- HHH
- HHT
- HTH
- THH
- HTT
- TTH
- THT
- TTT
Ora immagina H = “successo”., I nostri risultati possono essere modificati come segue:
- HHH (3 successi)
- HHT (2 successi)
- HTH (2 successi)
- THH (2 successi)
- HTT (1 successo)
- TTH (1 successo)
- THT (1 successo)
- TTT (0 successi)
Dal momento che ci sono 8 possibili esiti, le probabilità di 0, 1, 2, e 3 successi sono
- 0 successi: 1/8
- 1 successi: 3/8
- 2 successi: 3/8
- 3 successi: 1/8
Se si somma a quelle probabilità otteniamo 1. E questo rappresenta la “distribuzione di probabilità” per il nostro evento., Formalmente questo evento segue una distribuzione binomiale perché gli eventi sono indipendenti, ci sono un numero fisso di prove (3), la probabilità è la stessa per ogni flip (0.5) e il nostro risultato è il numero di “successi” nel numero di prove. In realtà ciò che abbiamo appena dimostrato è una distribuzione binomiale con 3 prove e probabilità pari a 0.5. Questo è talvolta abbreviato come b (3,0. 5)., È possibile generare rapidamente la probabilità R utilizzando il tag dbinom
funzione:
dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125
Siamo in grado di visualizzare velocemente la distribuzione di probabilità con il barplot
funzione:
barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)
La funzione utilizzata per generare queste probabilità è spesso definito come la “densità” della funzione, e quindi la “d” di fronte binom., Le distribuzioni che generano probabilità per valori discreti, come il binomio in questo esempio, sono talvolta chiamate “funzioni di massa di probabilità” o PMFS. Le distribuzioni che generano probabilità per valori continui, come il Normale, sono talvolta chiamate “funzioni di densità di probabilità” o PDF. Tuttavia in R, indipendentemente da PMF o PDF, la funzione che genera le probabilità è nota come funzione “densità”.
Funzione di distribuzione cumulativa
Ora parliamo di probabilità “cumulative”., Queste sono probabilità che si accumulano mentre ci spostiamo da sinistra a destra lungo l’asse x nella nostra distribuzione di probabilità., L’analisi della distribuzione della trama di cui sopra, che sarebbe
- \(P(X\le0)\)
- \(P(X\le1)\)
- \(P(X\le2)\)
- \(P(X\le3)\)
Siamo in grado di calcolare rapidamente questi:
- \(P(X\le0) = \frac{1}{8}\)
- \(P(X\le1) = \frac{1}{8} + \frac{3}{8} = \frac{1}{2}\)
- \(P(X\le2) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} = \frac{7}{8}\)
- \(P(X\le3) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} + \frac{1}{8} = 1\)
La distribuzione di queste probabilità è conosciuta come la distribuzione cumulativa., Ancora una volta c’è una funzione in R che genera queste probabilità per noi. Invece di una” d “davanti a” binom “mettiamo una”p”.
pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000
Questa funzione è spesso indicata come “funzione di distribuzione”, che può essere fonte di confusione quando si sta cercando di aggirare le distribuzioni di probabilità in generale. Tracciare questa funzione richiede un po ‘ più di lavoro. Dimostreremo un modo più semplice per creare questa trama a breve, quindi presentiamo il seguente codice senza commenti.,
Questo grafico è talvolta chiamato grafico a passi. Non appena colpisci un punto sull’asse x, “passi” alla probabilità successiva. La probabilità di 0 o meno è 0,125. Da qui la linea retta da 0 a 1. A 1 facciamo un passo fino a 0,5, perché la probabilità di 1 o meno se 0,5. E così via. A 3, abbiamo un punto a 1. La probabilità di 3 o meno è certezza. Abbiamo la garanzia di ottenere 3 o meno successi nella nostra distribuzione binomiale.
Ora dimostriamo cosa abbiamo fatto sopra con una distribuzione continua., Per mantenerlo relativamente semplice useremo la distribuzione normale standard, che ha una media di 0 e una deviazione standard di 1. A differenza del nostro esempio di lancio delle monete sopra che potrebbe essere compreso con precisione con una distribuzione binomiale, non esiste un esempio “off-the-shelf” dalla vita reale che si associ perfettamente a una distribuzione normale standard. Quindi dovremo usare la nostra immaginazione.
Disegniamo prima la distribuzione usando la funzionecurve
. Il primo argomento, dnorm(x)
, è fondamentalmente la formula matematica che disegna la linea., Si noti la ” d “davanti a” norm”; questa è la funzione” densità”. I valori predefiniti della funzionednorm
sono mean = 0 e deviazione standard = 1. Gli argomentifrom
eto
dicono di disegnare questa curva usando valori di x che vanno da -3 a 3.
curve(dnorm(x), from = -3, to = 3)
La curva è una linea liscia, il che significa che è una distribuzione di probabilità per tutti i numeri reali. L’area sotto la curva è 1 perché è una distribuzione di probabilità.,
Immagina di raggiungere questa distribuzione e disegnare un numero. Qual è la probabilità di ottenere 1.134523768923? È essenzialmente 0. Perché? Perché c’è\(\frac{1} {\infty}\) possibilità di selezionarlo. Perché è\ (\infty\) nel denominatore? Perché c’è un numero infinito di possibilità. Se ciò sembra confuso, immagina di ingrandire l’asse x con una risoluzione più fine e più fine, con decimali che si estendono all’orizzonte. Ciò significa che i valori dell’asse y non rappresentano la probabilità ma piuttosto la “densità”., La densità è essenzialmente la probabilità di un piccolo intervallo di valori diviso per tale intervallo. Se anche questo sembra confuso, va bene. Ricorda solo che non usiamo distribuzioni normali (o qualsiasi distribuzione continua) per ottenere probabilità esatte. Li usiamo per ottenere probabilità per un intervallo di valori.
Ad esempio, qual è la probabilità che x sia minore o uguale a -1? Per questo possiamo usare la funzionepnorm
, che è la funzione di distribuzione cumulativa per la distribuzione normale.,
pnorm(-1)## 0.1586553
Il pacchetto mosaic fornisce la comoda funzioneplotDist
per visualizzare rapidamente questa probabilità. Posizionando mosaic::
prima della funzione possiamo chiamare la funzione senza caricare il pacchetto mosaic. L’argomentogroups
dice di creare due regioni: una per meno di -1 e un’altra per maggiore di -1. L’argomentotype='h'
dice di disegnare una trama “simile a un istogramma”. I due colori sono per le rispettive regioni. Ovviamente “norma” significa disegnare una distribuzione normale., Anche in questo caso il valore predefinito è media 0 e deviazione standard 1.
# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue'))
Questo grafico mostra effettivamente la probabilità cumulativa. La regione blu è uguale a 0,1586553, la probabilità che traggiamo un valore di -1 o meno da questa distribuzione. Ricordiamo che abbiamo usato la funzione di distribuzione cumulativa per ottenere questo valore. Per visualizzare tutte le probabilità cumulative per la distribuzione normale standard, possiamo usare nuovamente la funzione curve
ma questa volta con pnorm
.,
curve(pnorm(x), from = -3, to = 3)
Se guardiamo -1 sull’asse x e andiamo dritti fino alla linea, e poi andiamo direttamente a sinistra sull’asse x, dovrebbe atterrare su 0.1586553. Possiamo aggiungere questo alla trama usando segments
:
curve(pnorm(x), from = -3, to = 3)segments(x0 = -1, y0 = 0, x1 = -1, y1 = pnorm(-1), col = 'red')segments(x0 = -1, y0 = pnorm(-1), x1 = -3, y1 = pnorm(-1), col = 'blue')
Ancora una volta questa è una linea liscia perché siamo trattare con un numero infinito di valori reali.,
Funzioni di distribuzione cumulativa empirica
Ora che siamo chiari sulle distribuzioni cumulative, esploriamo le distribuzioni cumulative empiriche. “Empirico” significa che ci occupiamo di osservazioni piuttosto che di teoria. Le distribuzioni cumulative che abbiamo esplorato sopra erano basate sulla teoria. Abbiamo usato le distribuzioni cumulative binomiali e normali, rispettivamente, per calcolare le probabilità e visualizzare la distribuzione. Nella vita reale, tuttavia, i dati che raccogliamo o osserviamo non provengono da una distribuzione teorica. Dobbiamo usare i dati stessi per creare una distribuzione cumulativa.,
Possiamo farlo in R con la funzione ecdf
. ECDF sta per “Empirical Cumulative Distribution Function”. Nota l’ultima parola: “Funzione”. La funzioneecdf
restituisce una funzione. Proprio come pbinom
e pnorm
le funzioni di distribuzione cumulativa per i nostri dati teorici, ecdf
crea una funzione di distribuzione cumulativa per i nostri dati osservati. Proviamo questo con il set di dati roccia che viene fornito con R.,
Il set di dati sulla roccia contiene misurazioni su 48 campioni di roccia provenienti da un serbatoio di petrolio. Contiene 4 variabili: area, peri, forma e perm. Lavoreremo con la variabile area, che è l’area totale dei pori in ogni campione.
Ilecdf
funzioni funziona su vettori numerici, che sono spesso colonne di numeri in un frame di dati. Di seguito gli diamo la colonna area del frame di dati rock.
ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212
Si noti che l’output non è così utile. Questo perché la funzioneecdf
restituisce una funzione., Dobbiamo assegnare il risultato a un nome in modo da poter creare la nostra funzione ECDF. Usiamo Fn
Fn <- ecdf(rock$area)
Ora hai una funzione di distribuzione cumulativa personalizzata che puoi usare con i tuoi dati. Ad esempio possiamo creare un grafico a passi per visualizzare la distribuzione cumulativa.
plot(Fn)
Guardando la trama possiamo vedere la probabilità stimata che l’area di un campione sia inferiore o uguale a 8000 è di circa 0.6., Ma non dobbiamo fare affidamento su eye-balling il grafico. Abbiamo una funzione! Possiamo usarlo per ottenere una stima più precisa. Basta dargli un numero all’interno dell’intervallo dell’asse x e restituirà la probabilità cumulativa.
# Prob area less than or equal to 8000Fn(8000)## 0.625
Possiamo usare la funzione con più di un valore. Ad esempio, possiamo ottenere probabilità stimate che l’area sia inferiore o uguale a 4000, 6000 e 8000.
Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000
Esiste anche un metodosummary
per le funzioni ECDF., Restituisce un riepilogo dei valori univoci dei dati osservati. Si noti che è simile al metodo di riepilogo tradizionale per i vettori numerici, ma il risultato è leggermente diverso poiché riassume i valori univoci anziché tutti i valori.
Infine, se vogliamo, possiamo sovrapporre una distribuzione cumulativa teorica sull’ECDF. Questo può aiutarci a valutare se possiamo supporre che i nostri dati possano essere modellati con una particolare distribuzione teorica. Ad esempio, si potrebbe pensare che i nostri dati siano stati campionati da una distribuzione normale?, Di seguito tracciamo la funzione step e quindi sovrapponiamo una distribuzione normale cumulativa utilizzando la media e la deviazione standard dei nostri dati osservati.
plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2)
Le linee sembrano sovrapporsi un po’, suggerendo che i dati potrebbero essere approssimati con una distribuzione Normale. Possiamo anche confrontare le stime del nostro ECDF con un CDF teorico. Abbiamo visto che la probabilità che l’area sia inferiore o uguale a 8000 è di circa 0,625., Come si confronta con una normale distribuzione cumulativa con una media e una deviazione standard di rock$area
?
pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223
Questo è abbastanza vicino!
Un’altra valutazione grafica è la trama Q-Q, che può essere facilmente eseguita anche in R utilizzando le funzioniqqnorm
eqqline
. L’idea è che se i punti cadono lungo la linea diagonale, allora abbiamo buone prove che i dati sono plausibilmente normali., Ancora una volta questa trama rivela che i dati sembrano essere ben approssimati con una distribuzione normale. (Per ulteriori informazioni sui grafici Q-Q, vedere il nostro articolo, Comprensione dei grafici Q-Q).
qqnorm(rock$area)qqline(rock$area)
Per domande o chiarimenti riguardanti questo articolo, contattare lo STATLAB della Libreria UVA: [email protected]
Visualizza l’intera collezione di articoli STATLAB della libreria UVA.
Clay Ford
Consulente di ricerca statistica
Biblioteca dell’Università della Virginia
9 luglio 2020
Lascia un commento