Indice
Le serie storiche
Le serie storiche sono osservazioni ripetute nel tempo, di cui si vogliono studiare le variazioni.
Gli oggetti ts
Il tipo di struttura di dati utilizzato in R è la time series, oggetto di classe ts
.
attributes(AirPassengers)
## $tsp ## [1] 1949.000 1960.917 12.000 ## ## $class ## [1] "ts"
Le componenti di un oggetto ts
sono: inizio (start), fine (end), frequenza (frequency).
start(AirPassengers); end(AirPassengers); frequency(AirPassengers)
## [1] 1949 1 ## [1] 1960 12 ## [1] 12
Sono previsti dei metodi di default per le serie storiche, ad esempio:
- stampa a schermo delle informazioni (
print()
):
AirPassengers
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ## 1949 112 118 132 129 121 135 148 148 136 119 104 118 ## 1950 115 126 141 135 125 149 170 170 158 133 114 140 ## 1951 145 150 178 163 172 178 199 199 184 162 146 166 ## 1952 171 180 193 181 183 218 230 242 209 191 172 194 ## 1953 196 196 236 235 229 243 264 272 237 211 180 201 ## 1954 204 188 235 227 234 264 302 293 259 229 203 229 ## 1955 242 233 267 269 270 315 364 347 312 274 237 278 ## 1956 284 277 317 313 318 374 413 405 355 306 271 306 ## 1957 315 301 356 348 355 422 465 467 404 347 305 336 ## 1958 340 318 362 348 363 435 491 505 404 359 310 337 ## 1959 360 342 406 396 420 472 548 559 463 407 362 405 ## 1960 417 391 419 461 472 535 622 606 508 461 390 432
- grafico (vedi Grafici a linee e plot):
plot(AirPassengers)
summary(AirPassengers)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 104.0 180.0 265.5 280.3 360.5 622.0
Per costruire un oggetto ts
da un vettore di osservazioni, dobbiamo indicare inizio, fine e periodicità 1):
# 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) tabA1.ts
## Time Series: ## Start = 1982 ## End = 2009 ## 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
plot(tabA1.ts/1000000, type = "b", pch = 15, xlab = "", ylab = "milioni", main = "Popolazione residente in Italia, 1982-2009") grid()
La periodicità
frequency si riferisce alla periodicità nel ciclo:
# serie mensile cycle(AirPassengers)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ## 1949 1 2 3 4 5 6 7 8 9 10 11 12 ## 1950 1 2 3 4 5 6 7 8 9 10 11 12 ## 1951 1 2 3 4 5 6 7 8 9 10 11 12 ## 1952 1 2 3 4 5 6 7 8 9 10 11 12 ## 1953 1 2 3 4 5 6 7 8 9 10 11 12 ## 1954 1 2 3 4 5 6 7 8 9 10 11 12 ## 1955 1 2 3 4 5 6 7 8 9 10 11 12 ## 1956 1 2 3 4 5 6 7 8 9 10 11 12 ## 1957 1 2 3 4 5 6 7 8 9 10 11 12 ## 1958 1 2 3 4 5 6 7 8 9 10 11 12 ## 1959 1 2 3 4 5 6 7 8 9 10 11 12 ## 1960 1 2 3 4 5 6 7 8 9 10 11 12
# serie trimestrale cycle(UKgas)
## Qtr1 Qtr2 Qtr3 Qtr4 ## 1960 1 2 3 4 ## 1961 1 2 3 4 ## 1962 1 2 3 4 ## 1963 1 2 3 4 ## 1964 1 2 3 4 ## 1965 1 2 3 4 ## 1966 1 2 3 4 ## 1967 1 2 3 4 ## 1968 1 2 3 4 ... ## 1984 1 2 3 4 ## 1985 1 2 3 4 ## 1986 1 2 3 4
Nella prima serie, abbiamo 12 osservazioni l'anno, nella seconda 4:
start(UKgas); end(UKgas); frequency(UKgas)
## [1] 1960 1 ## [1] 1986 4 ## [1] 4
Quindi, dovendo inserire una serie come questa, scriveremo: start = c(1960, 1), frequency = 4
.
La periodicità dipende insomma dall'unità di tempo considerata:
ciclo | dati | periodicità | |
---|---|---|---|
anno | annuali | 1 | |
mensili | 12 | ||
trimestrali | 4 | ||
quadrimestrali | 3 | ||
settimanali | 52 | o 365.25/7 | |
giornalieri | 365.25 | ||
settimana | giornalieri | 7 |
Rappresentazioni grafiche in ggplot2
Script di esempio
E' possibile scaricare ed eseguire lo script dell'esempio:
- serie_storiche.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) # grafico plot(tabA1.ts/1000000, type = "b", pch = 15, xlab = "", ylab = "milioni", main = "Popolazione residente in Italia, 1982-2009") grid()