Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


Il Laboratorio di Analisi dei Dati con R, dell'Università di Teramo su piattaforma Meet, inizia il 9 aprile 2021 - Iscrizione - email
r:analisi_monovariata:numeri_indice

Numeri indice

I numeri indice sono calcolati per rappresentare le variazioni di un fenomeno. Vedi Le serie storiche, da cui è tratto l'esempio1):

# vettore con i dati
dati <- c(56524064, 56563031, 56565117, 56588319, 56597823, 56594487, 56609375, 
          56649201, 56694360, 56744119, 56772923, 56821250, 56842392, 56844408, 
          56844197, 56876364, 56904379, 56909109, 56923524, 56960692, 56993742, 
          57321070, 57888245, 58462375, 58751711, 59131287, 59619290, 60045068)
 
# serie storica
tabA1.ts <- ts(dati, 
               start = 1982, 
               end = 2009,
               frequency = 1)

Numeri indice a base fissa

Variazioni complessive (numero indice)

Le variazioni complessive percentuali fra il tempo $t$ e un tempo di riferimento $t_0$ si ottengono:

$$\frac{Y_{t}}{Y_{t_0}}100$$

Il valore al denominatore ($t_0$) si chiama base. Nel linguaggio di R:

# se la base è il primo valore della serie:
ts / ts[1]

# oppure
ts / ts[1] * 100
b.fissa <- tabA1.ts / tabA1.ts[1]
 
b.fissa
## Time Series:
## Start = 1982 
## End = 2009 
## Frequency = 1 
##  [1] 1.000000 1.000689 1.000726 1.001137 1.001305 1.001246 1.001509
##  [8] 1.002214 1.003013 1.003893 1.004403 1.005258 1.005632 1.005667
## [15] 1.005664 1.006233 1.006728 1.006812 1.007067 1.007725 1.008309
## [22] 1.014100 1.024135 1.034292 1.039411 1.046126 1.054759 1.062292
# oppure
b.fissa * 100
## Time Series:
## Start = 1982 
## End = 2009 
## Frequency = 1 
##  [1] 100.0000 100.0689 100.0726 100.1137 100.1305 100.1246 100.1509
##  [8] 100.2214 100.3013 100.3893 100.4403 100.5258 100.5632 100.5667
## [15] 100.5664 100.6233 100.6728 100.6812 100.7067 100.7725 100.8309
## [22] 101.4100 102.4135 103.4292 103.9411 104.6126 105.4759 106.2292
Possiamo utilizzare anche un altro punto nel tempo come base, naturalmente: tabA1.ts / tabA1.ts[19] oppure il valore massimo della serie: tabA1.ts / max(tabA1.ts)

## Numeri indice a base mobile

I numeri indice a base mobile vengono calcolati modificando le basi del calcolo, solitamente utilizzando il periodo precedente a quello del numeratore.</markdown>

$$\frac{Y_{t}}{Y_{t-1}}100$$

Variazione complessiva (numero indice)

Nel nostro esempio, volendo calcolare il tasso di crescita della popolazione italiana nel periodo considerato dovremmo operare come segue:

c(tabA1.ts[2]/tabA1.ts[2-1], tabA1.ts[3]/tabA1.ts[3-1], ...)

Per calcolarlo, possiamo usare la funzione lag():

# calcoliamo il vettore dei dati "laggati" di un anno indietro
bm <- lag(tabA1.ts, -1)
bm
## Time Series:
## Start = 1983 
## End = 2010 
## Frequency = 1 
##  [1] 56524064 56563031 56565117 56588319 56597823 56594487 56609375
##  [8] 56649201 56694360 56744119 56772923 56821250 56842392 56844408
## [15] 56844197 56876364 56904379 56909109 56923524 56960692 56993742
## [22] 57321070 57888245 58462375 58751711 59131287 59619290 60045068

Nota: il primo valore, corrispondente all'anno 1983 ($t$), è quello del 1982 ($t-1$). Di conseguenza, dividendo la prima serie per questa seconda, l'indice corrispondente all'anno 1983 sarà $y_{t}/y_{t-1}$:

b.mobile <- tabA1.ts / bm
b.mobile
## Time Series:
## Start = 1983 
## End = 2009 
## Frequency = 1 
##  [1] 1.0006894 1.0000369 1.0004102 1.0001679 0.9999411 1.0002631 1.0007035 1.0007972
##  [9] 1.0008777 1.0005076 1.0008512 1.0003721 1.0000355 0.9999963 1.0005659 1.0004926
## [17] 1.0000831 1.0002533 1.0006529 1.0005802 1.0057432 1.0098947 1.0099179 1.0049491
## [25] 1.0064607 1.0082529 1.0071416

Nota: I vettori delle serie storiche vengono 'appaiati' correttamente in riferimento alla data. La prima serie inizia dal 1982, la seconda dal 1983, il valore del 1983 viene diviso per quello corrispondente dell'altra serie.

Tasso di variazione (percentuale)

Il tasso di variazione si ottiene calcolando:

$$\frac{Y_{t+1} - Y_t}{Y_t}100$$

Per calcolare la differenza $Y_{t+1} - Y_t$, usiamo la funzione `diff()`:

diff(tabA1.ts)
## Time Series:
## Start = 1983 
## End = 2009 
## Frequency = 1 
##  [1]  38967   2086  23202   9504  -3336  14888  39826  45159  49759  28804
## [11]  48327  21142   2016   -211  32167  28015   4730  14415  37168  33050
## [21] 327328 567175 574130 289336 379576 488003 425778

E la dividiamo per la serie "laggata" (all'anno 1983 corrisponde qui la differenza 1983-1982, e nella serie dei lags il valore del 1982):

diff(tabA1.ts) / bm * 100
## Time Series:
## Start = 1983 
## End = 2009 
## Frequency = 1 
##  [1]  0.0689387798  0.0036879212  0.0410182127  0.0167949856 -0.0058942196
##  [6]  0.0263064492  0.0703523047  0.0797169231  0.0877671077  0.0507612075
## [11]  0.0851233254  0.0372079108  0.0035466488 -0.0003711887  0.0565880102
## [16]  0.0492559616  0.0083121898  0.0253298642  0.0652946223  0.0580224692
## [21]  0.5743227037  0.9894703640  0.9917903022  0.4949097603  0.6460679928
## [26]  0.8252872967  0.7141614736

Solitamente, con tasso di crescita, ci si riferisce a questo valore.

Variazione media

Le variazioni medie del periodo (nel nostro caso, le variazioni medie annue) si ottengono calcolando la media geometrica delle variazioni.

Infatti, la variazione fra il tempo $t+3$ e il tempo $t$ è uguale al prodotto delle variazioni $t+1$ e $t+2$, e non alla loro somma2):

tabA1.ts[3] / tabA1.ts[1]
## [1] 1.000726

E

(tabA1.ts[2] / tabA1.ts[1]) * (tabA1.ts[3] / tabA1.ts[2])

ovvero:

b.mobile[2] * b.mobile[1]
## [1] 1.000726

mentre

b.mobile[2] + b.mobile[1]
## [1] 2.000726

La media aritmetica fornisce pertanto una misura inesatta del fenomeno.

# media geometrica
n = sum(!is.na(b.mobile))        # n = casi validi
 
prod(b.mobile, na.rm = T)^(1/n)

Oppure, utilizziamo la funzione della media geometrica illustrata alla voce Media geometrica:

g_mean.R
g_mean<- function(x) {
  n = sum(!is.na(x))
  res <- prod(x, na.rm = T)^(1/n)
  res
}

quindi:

g_mean(b.mobile)
## [1] 1.002241

Tasso medio

Il tasso medio annuo è pari a:

g_mean(b.mobile) - 1
## [1] 0.002240616

Per l'intero periodo, il tasso medio annuo è stato dello 0,22%.

Script di esempio

E' possibile scaricare ed eseguire lo script dell'esempio:

numeri_indice.R
 
# vettore con i dati
dati <- c(56524064, 56563031, 56565117, 56588319, 56597823, 56594487, 56609375, 
          56649201, 56694360, 56744119, 56772923, 56821250, 56842392, 56844408, 
          56844197, 56876364, 56904379, 56909109, 56923524, 56960692, 56993742, 
          57321070, 57888245, 58462375, 58751711, 59131287, 59619290, 60045068)
 
# serie storica
tabA1.ts <- ts(dati, 
               start = 1982, 
               end = 2009,
               frequency = 1)
 
 
# indice a base fissa
b.fissa <- tabA1.ts / tabA1.ts[1]
 
# percentuale
b.fissa * 100
 
 
# base mobile
bm <- lag(tabA1.ts, - 1)
 
b.mobile <- tabA1.ts / bm
 
# percentuale
b.mobile * 100
 
# tasso di variazione
diff(tabA1.ts) / bm
 
# tasso di variazione percentuale
diff(tabA1.ts) / bm * 100
 
# tasso medio di variazione
n <- sum(!is.na(b.mobile))
prod(b.mobile, na.rm = T)^(1/n)
 
# oppure (vedi voce Misure di tendenza centrale )
g_mean(b.mobile)
 
# tasso medio annuo
g_mean(b.mobile) - 1

1) Si tratta della popolazione italiana dal 1982 al 2009, dati Istat; esempio tratto dal testo “L'analisi dei flussi turistici: strumenti, fonti, metodi” di B. Baldazzi (Roma, Edizioni Nuova Cultura, 2014).
2) Ovvero: moltiplicando il primo valore della serie per la media geometrica alla $n-1$ (il numero degli anni successivi al primo), otteniamo l'ultimo valore
r/analisi_monovariata/numeri_indice.txt · Ultima modifica: 25/09/2021 12:19 da admin