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.
$$\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 exp(mean(log(b.mobile, na.rm = T))
Oppure, utilizziamo la funzione della media geometrica illustrata alla voce Media geometrica:
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