venerdì 11 gennaio 2019

Statistiche elementari non parametriche

Siamo all'ultimo passo delle valutazioni preliminari che è sempre necessario effettuare nell'ambito di un percorso logico che prevede, per il calcolo delle statistiche elementari di una singola variabile (analisi univariata):
→ esecuzione dei test di normalità (gaussianità) per valutare se i dati seguono una distribuzione gaussiana;
→ calcolo delle statistiche elementari parametriche (media, deviazione standard, varianza, quantili parametrici) se i dati seguono una distribuzione gaussiana;
→ calcolo delle statistiche elementari non parametriche (mediana, deviazione assoluta mediana o MAD, quartili e altri quantili non parametrici) se i dati non seguono una distribuzione gaussiana.

Si tratta del passo conclusivo per la variabile concentrazione della ferritina (espressa in µg/L) rilevata in 202 atleti australiani, in quanto con i test di normalità abbiamo stabilito che la variabile non è distribuita in modo gaussiano cone risulta evidente anche dalla sintesi grafica dei risultati.


Copiate lo script, incollatelo nella Console di R e premete ↵ Invio:

# STATISTICHE ELEMENTARI NON PARAMETRICHE 
#
library(DAAG) # carica il pacchetto DAAG che include il set di dati ais
mydata <- unlist(ais[c(5)]) # ci interessa la sola colonna con la ferritina
#
# statistiche elementari non parametriche 
#
min(mydata) # valore minimo
median(mydata) # mediana
max(mydata) # valore massimo
range(mydata) # range
max(mydata)-min(mydata) # campo di variazione
mad(mydata) # deviazione assoluta mediana (MAD)
quantile(mydata) # quartili
#
# quartili, decili e percentili della distribuzione campionaria
#
quantile(mydata, probs=seq (0, 1, 0.25)) # con 0.25 calcola i quartili della ferritina
quantile(mydata, probs=seq (0, 1, 0.1)) # con 0.1 calcola i decili
quantile(mydata, probs=seq (0, 1, 0.01)) # con 0.01 calcola i percentili
#

Non avrebbe senso ripetere l'analisi esplorativa dei dati, i test di normalità e la sintesi grafica dei risultati - per questi si rimanda agli script riportati nel percorso logico indicato all'inizio. Per cui qui ci limitiamo a calcolare le usuali statistiche elementari non parametriche

Dopo avere caricato il pacchetto DAAG [1] contenente la tabella ais, la variabile ferr contenuta nella colonna 5 della tabella ais viene assegnata (<-) all'oggetto mydata, sul quale sono calcolate le statistiche elementari non parametriche con le funzioni:
→ min() per riportare il valore minimo osservato;
→ median() per calcolare la media;
→ max() per riportare il valore massimo osservato;
→ range() per calcolare il range qui correttamente inteso come "intervallo (di valori di una grandezza)";
→ max(mydata)-min(mydata) per calcolare il campo di variazione, talora indicato (impropriamente) con il termine "range";
→ mad() per calcolare la deviazione assoluta mediana MAD [2];
→ quantile() per calcolare i quartili.

> min(mydata) # valore minimo
[1] 8
> median(mydata) # mediana
[1] 65.5
> max(mydata) # valore massimo
[1] 234
> range(mydata) # range
[1]   8 234
> max(mydata)-min(mydata) # campo di variazione
[1] 226
> mad(mydata) # deviazione assoluta mediana (MAD)
[1] 37.8063
> quantile(mydata) # quartili
    0%    25%    50%    75%   100% 
  8.00  41.25  65.50  97.00 234.00 

Da notare che la funzione quantile(), se impiegata specificando come unico argomento il nome della variabile, prevede di default il calcolo dei quartili. Se si aggiunge l'argomento probs e si impiega la funzione seq() per stabilire la sequenza di valori per i quali calcolarli [3] è possibile calcolare i quantili desiderati, che in questo caso sono
→ i quartili impostando seq (0, 1, 0.25)
→ i decili impostando seq (0, 1, 0.1)
→ i percentili impostando seq (0, 1, 0.01)
essendo a loro volta gli argomenti della funzione seq() il quantile iniziale (0 che corrisponde al valore minimo osservato), il quantile finale (1 che corrisponde al valore massimo osservato) e l'incremento da applicare per il calcolo dei quantili intermedi. Modificando opportunamente questi tre argomenti è possibile calcolare qualsiasi altra sequenza di quantili. 

> quantile(mydata, probs=seq (0, 1, 0.25)) # con 0.25 calcola i quartili della ferritina
    0%    25%    50%    75%   100% 
  8.00  41.25  65.50  97.00 234.00 
> quantile(mydata, probs=seq (0, 1, 0.1)) # con 0.1 calcola i decili
   0%   10%   20%   30%   40%   50%   60%   70%   80%   90%  100% 
  8.0  30.0  39.2  44.0  55.0  65.5  76.0  90.7 107.0 138.4 234.0 
> quantile(mydata, probs=seq (0, 1, 0.01)) # con 0.01 calcola i percentili
    0%     1%     2%     3%     4%     5%     6%     7%     8%     9%    10% 
  8.00  13.03  19.02  20.03  21.04  22.00  25.06  26.07  29.00  29.09  30.00 
   11%    12%    13%    14%    15%    16%    17%    18%    19%    20%    21% 
 30.22  32.12  34.00  34.14  35.15  36.00  36.17  38.00  39.00  39.20  40.00 
   22%    23%    24%    25%    26%    27%    28%    29%    30%    31%    32% 
 40.22  41.00  41.00  41.25  43.00  43.00  43.28  44.00  44.00  45.31  46.64 
   33%    34%    35%    36%    37%    38%    39%    40%    41%    42%    43% 
 48.33  50.00  50.00  51.00  52.37  53.00  53.39  55.00  56.41  58.00  58.00 
   44%    45%    46%    47%    48%    49%    50%    51%    52%    53%    54% 
 58.44  59.45  60.46  61.47  63.48  64.00  65.50  66.51  68.00  69.00  70.54 
   55%    56%    57%    58%    59%    60%    61%    62%    63%    64%    65% 
 71.00  72.00  72.57  73.00  73.59  76.00  77.61  79.24  81.26  83.28  85.65 
   66%    67%    68%    69%    70%    71%    72%    73%    74%    75%    76% 
 86.66  87.00  88.00  89.69  90.70  91.71  93.00  94.00  97.00  97.00 100.52 
   77%    78%    79%    80%    81%    82%    83%    84%    85%    86%    87% 
101.77 102.00 105.37 107.00 109.00 109.82 115.00 117.84 122.00 124.00 124.87 
   88%    89%    90%    91%    92%    93%    94%    95%    96%    97%    98% 
126.88 131.78 138.40 142.82 154.60 163.44 176.94 182.95 188.80 211.37 212.98 
   99%   100% 
219.94 234.00 

Come al solito lo script può essere riutilizzato molto facilmente, assegnando (<-) all'oggetto mydata i propri dati.


----------

[1] Vedere il post Il set di dati ais nel quale trovate anche come caricare i dati della tabella senza impiegare il pacchetto DAAG

[2] La Median Absolute Deviation about median o MAD ovvero la deviazione assoluta mediana (dalla mediana) è l'equivalente non parametrico della deviazione standard. Vedere: Rousseeuw PJ, Croux C. Alternatives to the Median Absolute Deviation. Journal of the American Statistical Association 88 (424), 1273-1283, 1993. URL consultato il 04/01/2019: https://goo.gl/4Rh53b

[3] Per la documentazione della funzione seq() digitare help(seq) nella Console di R.

Nessun commento:

Posta un commento