Data una sequenza di valori numerici la media cumulativa è la media, calcolata in corrispondenza di ciascun dato, di tutti i dati dal primo fino a quello corrente.
Così ad esempio in corrispondenza del dato numero 5 la media cumulativa è la media dei dati da 1 a 5, in corrispondenza del dato numero 6 la media cumulativa è la media dei dati da 1 a 6, in corrispondenza del dato numero 7 la media cumulativa è la media dei dati da 1 a 7 e così via. Lo stesso principio vale per la mediana cumulativa che a sua volta è la mediana, calcolata in corrispondenza di ciascun dato, di tutti i dati dal primo fino a quello corrente.
Per il calcolo della media cumulativa e della mediana cumulativa impieghiamo le funzioni contenute nel pacchetto cumstats, che deve essere scaricato dal CRAN.
Copiate e incollate questo script nella Console di R e premete ↵ Invio:
# CALCOLARE LA MEDIA CUMULATIVA E LA MEDIANA CUMULATIVA
#
library(cumstats) # carica il pacchetto
rileva_x <- seq(1:50) # numero progressivo della rilevazione in ascisse
valore_y <- c(5, 9, 12, 7, 8, 13, 26, 7, 8, 19, 10, 7, 5, 36, 12, 18, 31, 17, 16, 43, 7, 12, 9, 27, 15, 18, 24, 29, 32, 23, 29, 12, 7, 48, 34, 45, 19, 12, 16, 18, 22, 31, 38, 7, 11, 4, 38, 36 ,43, 15) # valore osservato corrispondente in ordinate
mydata <- data.frame(rileva_x, valore_y) # combina i vettori in una matrice
#
mydata$mediacum <- cummean(mydata$valore_y) # calcola la media cumulativa e la aggiunge in una nuova colonna
mydata$medianacum <- cummedian(mydata$valore_y) # calcola la mediana cumulativa e la aggiunge in una nuova colonna
mydata # mostra la matrice con i dati definitivi
#
plot(mydata$rileva_x, mydata$valore_y, xlim=c(0,50), ylim=c(0,60), type="l", lty=1, lwd=1, col="black", main="Valori osservati, media cumulativa e mediana cumulativa", xlab="Rilevazioni", ylab="Valori osservati") # grafico dei dati originali
lines(mydata$rileva_x, mydata$mediacum, xlim=c(0,50), ylim=c(0,60), type="l", lty=2, lwd=1, col="red") # sovrappone grafico della media cumulativa
lines(mydata$rileva_x, mydata$medianacum, xlim=c(0,50), ylim=c(0,60), type="l", lty=2, lwd=1, col="blue") # sovrappone grafico della mediana cumulativa
#
legend(0,60, legend=c("Valori osservati nelle rilevazioni", "Media cumulativa dei valori osservati", "Mediana cumulativa dei valori osservati"), col=c("black", "red", "blue"), lty=c(1,2,2), lwd=c(1,1,1), cex=0.8) # aggiunge la legenda
#
Dopo avere caricato il pacchetto cumstats i dati impiegati come esempio sono generati in questo modo:
→ nel vettore rileva_x viene riportato il numero progressivo della rilevazione;
→ nel vettore valore_y viene riportato il valore numerico osservato in corrispondenza di ciascuna rilevazione, valore numerico sul quale calcoleremo la media cumulativa e la mediana cumulativa.
→ con la funzione dataframe() i due vettori sono combinati nella matrice mydata [1].
A questo punto alla matrice mydata sono aggiunte due colonne:
→ la colonna (vettore) mediacum nella quale è riportata la media cumulativa calcolata in corrispondenza di ogni dato con la funzione cummmean();
→ la colonna (vettore) medianacum nella quale è riportata la mediana cumulativa calcolata in corrispondenza di ogni dato con la funzione cummedian().
Per i dettagli delle funzioni impiegate digitare help(nomedellafunzione) nella Console di R. Al bisogno potete consultare il manuale del pacchetto cumstats [2].
Non resta quindi che mostrare il contenuto della matrice mydata nella versione definitiva contenente il numero della rilevazione (rileva_x), il valore osservato (valore_y) e le rispettive media cumulativa (mediacum) e mediana cumulativa (medianacum)
> mydata # mostra la matrice con i dati definitivi
rileva_x valore_y mediacum medianacum
1 1 5 5.000000 5.0
2 2 9 7.000000 7.0
3 3 12 8.666667 9.0
4 4 7 8.250000 8.0
5 5 8 8.200000 8.0
6 6 13 9.000000 8.5
7 7 26 11.428571 9.0
8 8 7 10.875000 8.5
9 9 8 10.555556 8.0
10 10 19 11.400000 8.5
11 11 10 11.272727 9.0
12 12 7 10.916667 8.5
13 13 5 10.461538 8.0
14 14 36 12.285714 8.5
15 15 12 12.266667 9.0
16 16 18 12.625000 9.5
17 17 31 13.705882 10.0
18 18 17 13.888889 11.0
19 19 16 14.000000 12.0
20 20 43 15.450000 12.0
21 21 7 15.047619 12.0
22 22 12 14.909091 12.0
23 23 9 14.652174 12.0
24 24 27 15.166667 12.0
25 25 15 15.160000 12.0
26 26 18 15.269231 12.0
27 27 24 15.592593 12.0
28 28 29 16.071429 12.5
29 29 32 16.620690 13.0
30 30 23 16.833333 14.0
31 31 29 17.225806 15.0
32 32 12 17.062500 14.0
33 33 7 16.757576 13.0
34 34 48 17.676471 14.0
35 35 34 18.142857 15.0
36 36 45 18.888889 15.5
37 37 19 18.891892 16.0
38 38 12 18.710526 15.5
39 39 16 18.641026 16.0
40 40 18 18.625000 16.0
41 41 22 18.707317 16.0
42 42 31 19.000000 16.5
43 43 38 19.441860 17.0
44 44 7 19.159091 16.5
45 45 11 18.977778 16.0
46 46 4 18.652174 16.0
47 47 38 19.063830 16.0
48 48 36 19.416667 16.5
49 49 43 19.897959 17.0
50 50 15 19.800000 16.5
che sono impiegati per la successiva rappresentazione grafica
→ la funzione plot() che traccia il grafico del valore osservato mydata$valore_y in corrispondenza di ciascuna rilevazione mydata$rileva_x impiegando una linea (type="l") continua (lty=1) di larghezza unitaria (lwd=1) e di colore nero (col="black");
→ la funzione lines() che viene impiegata una prima volta per sovrapporre il grafico della media cumulativa con una linea tratteggiata (lty=2) di colore rosso (col="red") e una seconda volta per sovrapporre il grafico della mediana cumulativa con una linea tratteggiata (lty=2) di colore blu (col="blue")
→ la funzione legend() che riporta la legenda esplocativa dei grafici [3].
Ovviamente lo script può essere riadattato per rappresentare dati differenti ma anche per riportare solamente l'uno o l'altro dei grafici.
----------
[1] Parliamo di array o vettore nel caso di dati numerici monodimensionali, disposti su una sola riga,
8 | 6 | 11 | 7 |
di matrice nel caso di dati numerici disposti su più righe e più colonne
8 | 9 | 15 | 14 |
6 | 7 | 18 | 12 |
11 | 8 | 17 | 13 |
7 | 4 | 19 | 17 |
e di tabella nei casi in cui il contenuto, disposto su più righe e più colonne, è rappresentato oltre che da dati numerici, anche da testo e/o operatori logici
M | 7 | 9 | VERO |
F | 3 | 12 | VERO |
F | 5 | 10 | FALSO |
[2] Vedere la voce Reference manual del pacchetto cumstats: Cumulative Descriptive Statistics. URL consultato il 02/01/2023.
[3] Per un approfondimento sull'impiego della funzione legend() rimando al post Aggiungere la legenda a un grafico.
Nessun commento:
Posta un commento