Successfully reported this slideshow.
BITS: Serie Storiche in Matlab

                      Emmanuele Somma

               Supporto Informatico per l’Area Rice...
Piano della presentazione


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - B...
Le serie storiche in MATLAB


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS -...
Serie storica Insieme di informazioni omogenee riferite a momenti diversi
              in successione temporale.

       ...
Serie storica Insieme di osservazioni numeriche riferite a momenti diversi
              in successione temporale periodic...
L’oggetto timeseries


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank o...
Un array dei dati



Un array di dati
x = [-0.2   -0.3 13;
     -0.1   -0.4 15;
      NaN    2.8 17;
      0.5   0.3 NaN;
...
Un paio di timeseries
ts_pos = timeseries(x(:,1:2), 1:5, ’name’, ’Position’)
getdatasamplesize(ts_pos)

ts_vel = timeserie...
Altre timeseries
%% Import the sample data
load count.dat

count1 = timeseries(count(:,1), 1:24,’name’, ’intersection1’);
...
Definizione delle unit` di misura
                     a
count1.DataInfo.Units          =   ’cars’;
count1.TimeInfo.Units  ...
Definizione del metodo d’interpolazione
count1.DataInfo.Interpolation = tsdata.interpolation(’zoh’);
        % zero-order h...
Aggiunta di eventi
%% Construct and add the first event to all time series
e1 = tsdata.event(’AMCommute’,8);
             ...
Aggiunta di eventi
%% Construct and add the second event to all time series
e2 = tsdata.event(’PMCommute’,18);
           ...
Collezioni di timeseries
tsc = tscollection({count1 count2},’name’, ’count_coll’)

tsc = addts(tsc, count3)

tsc1 = remove...
Ricampionamento della collezione
tsc1 = resample(tsc,1:2:24)
tsc1 = resample(tsc,1:0.5:24)
tsc1 = resample(tsc1,tsc1.Time)...
Modifica dei contenuti degli elementi della collezione
tsc1 = addsampletocollection(tsc1,’time’,3.25,...
       ’intersecti...
Modifica dei contenuti degli elementi della collezione
plot(tsc1.intersection1); hold on;
plot(tsc1.intersection2)




    ...
E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   18/96
L’oggetto fints


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank of Ita...
Creazione fints
dates = (datenum(’05/11/99’):datenum(’05/11/99’)+100)’;
data_series1 = exp(randn(1, 101))’;
data_series2 =...
Trasformazione
srs2 = myfts.series2

srs2_vec = fts2mat(myfts.series2)

format long g

srs2_mtx = fts2mat(myfts.series2, 1...
Indicizzazione elementi
format short
myfts(’05/11/99’)
myfts.series2(’05/11/99’)
myfts.series2({’05/11/99’, ’05/21/99’, ’0...
Operazioni
addup        =   myfts1       +   newfts
subout       =   myfts1       -   newfts
addscalar    =   myfts1      ...
Operazioni
newfts2   = fints(myfts1.dates, fts2mat(myfts1/10000),...
            {’Rat1’,’Rat2’, ’Rat3’,’Rat4’}, 1, ’New F...
BITS - Bank of Italy Time Series


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   B...
L’oggetto tsmat


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank of Ita...
Costruzione tsmat
TSMAT = tsmat(1980,1,12,count)
tsmat( macro index (year), micro index (period), frequency, d

Parametri
...
Esempio
 A = tsmat(1980,1,12,rand(20,1))
 Tsmat object
     Size: [20   1]
Frequency: 12
    Start: 1980     1
      End: ...
Caricamento dati
load count.dat
TSC = tsmat(1980,1,365,count)
Tsmat object
      Size: [24   3]
 Frequency: 365
     Start...
Struttura
struct(TSC)
ans =
         matdata:            [24x3 double]
      start_year:            1980
    start_period:...
I Valori
TSC.matdata
ans =
    11    11            9
     7    13           11
    14    17           20
    11    13     ...
I metadati di base
    .freq                      frequenza delle osservazioni
    .start                     indice dell’...
I metadati ’estesi’
    .meta              metadati della collezione
    .meta cols         metadati delle colonne

I meta...
Visualizzare una serie con tstab
tstab(S1 [, S2 ...]) dove S1,...,S2 sono oggetti tsmat
A=tsmat(1980,1,12,rand(5,1))
B=tsm...
Creazione della tsmat


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank ...
tsmat: Come si usa
>>




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   36/96
tsmat: Come si usa
>> ts = tsmat(1980,1,12,rand(3,4))




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   36/96
tsmat: Come si usa
>> ts = tsmat(1980,1,12,rand(3,4))
Tsmat object
      Size: [3 4]
     Start: 1980     1
       End: 19...
tsmat: Come si usa
>> ts = tsmat(1980,1,12,rand(3,4))
Tsmat object
      Size: [3 4]
     Start: 1980     1
       End: 19...
tsmat: Come si usa
>> ts = tsmat(1980,1,12,rand(3,4))
Tsmat object
      Size: [3 4]
     Start: 1980     1
       End: 19...
tsmat: Come si usa
>>




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   37/96
tsmat: Come si usa
>> tstab(ts)




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   37/96
tsmat: Come si usa
>> tstab(ts)
tsStart: 1980     1
tsRelease: 17-Jul-2007
Frequency: 12 (monthly)
Date
                  ...
tsmat: Come si usa
>> tstab(ts)
tsStart: 1980     1
tsRelease: 17-Jul-2007
Frequency: 12 (monthly)
Date                   ...
tsmat: Come si usa
>> tstab(ts)
tsStart: 1980     1
tsRelease: 17-Jul-2007                    RELEASES
Frequency: 12 (mont...
tsmat Etichette di colonna
ts = tsmat(1980,1,12,rand(3,4), ...
             {’PRICE’, ’STOCK’, ’EXCHANGE’, ’UNIT’});

tsta...
tsmat Etichette di colonna automatiche
ts = tsmat(1980,1,12,rand(3,4),’PRICE’);


tstab(ts)
tsStart: 1980     1
tsRelease:...
tsmat Rilasci di colonna
ts = tsmat(1980,1,12,rand(3,4),’PRICE’, ...
       { ’01-Jan-2007’ ’02-Jan-2007’ ’07-Jan-2007’ ’0...
tsmat Distribuzione dei rilasci su tutte le colonne
ts = tsmat(1980,1,12,rand(3,4), ...
          {’PRICE’, ’STOCK’, ’EXCH...
Indicizzazione per l’accesso


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS ...
Indicizzazione
    Metadati fondamentali tramite ’.’ (es. TSC.start)
    Osservazione tramite ’()’ (es. TSC([2:5, [1:end])...
Accesso ai metadati: ’.’
     .freq                    frequenza delle osservazioni
     .start                   indice d...
Accesso alle osservazioni: ’()’
   Doppio vettore di interi (2 elementi)
           righe        colonne
       osservazio...
Esempio: Una osservazione di tutte le serie nella collezione
                righe            colonne
             osserva...
Esempio: Tutte le osservazioni di una serie della collezione
                  righe           colonne
               osse...
Accesso alle osservazioni: ’()’
   Quattro Interi e un indice (5 elementi)
        anno periodo anno periodo              ...
Operazione di Lead e Lag: ’{}’
TSC = tsmat(1980,1,365,count(:,1))
tstab(TSC1,TSC1{-1},TSC1{1})
   % == tstab(TSC,tslag(TSC...
Riorganizzazione


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank of It...
Concatenazione orizzontale
aa=tsmat(1980,1,4,reshape(-1:-1:-16,4,4))
Tsmat object
       Size: [4 4]
 Frequency: 4
      S...
Concatenazione orizzontale
bb=tsmat(1979,1,4,reshape(1:16,4,4))
Tsmat object
       Size: [4 4]
 Frequency: 4
      Start:...
Concatenazione orizzontale
cc=[aa,bb]
Tsmat object
       Size: [8 8]
 Frequency: 4
      Start: 1979     1
        End: 1...
Concatenazione verticale
cc=[aa;bb]
Tsmat object
       Size: [8 4]
 Frequency: 4
      Start: 1979      1
        End: 19...
Concatenazione verticale
cc=[aa{-2};bb]
Tsmat object
       Size: [8 4]
 Frequency: 4
      Start: 1979      1
        End...
Concatenazione verticale non adiacente
cc=[aa;bb{-1}]
??? Error using ==> tsmat.extend
"FillDateBeforeLastDate"

Error in ...
extend Unione delle serie cn il controllo della sovrapposizione
>> ts1 = tsmat(1980,1,12,rand(7,1));
>> ts2 = tsmat(1980,6...
extend Unione delle serie cn il controllo della sovrapposizione
>> ts=extend(ts1,ts2,[1980 7])
>> tstab(ts,ts1,ts2)
[...] ...
extend Unione di serie non contigue
>> ts1=tsmat(1980,1,12,rand(5,1))
>> ts2=tsmat(1980,7,12,rand(5,1));
[...]            ...
extend Unione di serie non contigue
>> ts1=tsmat(1980,1,12,rand(5,1))
>> ts2=tsmat(1980,7,12,rand(5,1));
[...]            ...
extend Unione serie non contigue
>> ts=extend(ts1,ts2,nan,true)
                       T1          T1             T1
     ...
Operazioni tra le tsmat


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Ban...
La differenza tra struttura e oggetto
    Struttura                 Oggetto
    s = struct()              o = class()      ...
Operazioni sulle serie (senza esclusione dei nan)
   max(A)
   min(A)
   mean(A)
   median(A)
   std(A)
   sum(A)
   var(A...
Operazioni sulle serie con esclusione dei nan
   nanmax(A)
   nanmin(A)
   nanmean(A)
   nanmedian(A)
   nanstd(A)
   nans...
Operazioni tra le serie
 tstab(A,B,     A*10)
 tstab(A,B,     A+B)
 tstab(A,B,     A-B)
 tstab(A,B,     A*B)
 tstab(A,B,  ...
Altre operazioni
corr(TSC)
corr(TSC.matdata)
corr(count(:,1),count(:,2))
ans =
    0.9331
corr(TSC(:,1),TSC(:,2))
??? Erro...
Altre operazioni
cov(TSC)
cov(TSC.matdata)
ans =
  1.0e+003 *
    0.6437    0.9802           1.6567
    0.9802    1.7144  ...
Altre operazioni
tstab(TSC,cumsum(TSC))
tstab(cumprod(TSC))




          E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   68...
Operazioni logiche
tstab(TSC==TSC)
tsStart: 1980     1
tsRelease: 18-Jan-2008
Frequency: 365 (daily)
Date
                ...
Operazioni logiche
TSC1 = tsmat(1980,1,365,rand(24,3)*10*)
tstab(TSC>TSC1) (tstab(ge(TSC,TSC1))
tsStart: 1980     1
tsRele...
Operazioni e Funzioni
    Operazione        F unzione
    gt(A,B)           A>B
    ge(A,B)           A≥B
    lt(A,B)     ...
Determinazione dei valori
    Operazione         F unzione
    isnan              = NaN
    isfinite           =∞




    ...
Introduciamo dei missing in testa e in coda
TSC([1:3],[1:3])=NaN; tstab(TSC)
TSC([24],[1:3])=NaN; tstab(TSC)

Stringiamo l...
Lag e Lead
TSC = tsmat(1980,1,365,count(:,1))
tstab(TSC,tslag(TSC,1),tslag(TSC,-1))
tsStart: 1979   365
tsRelease: 18-Jan-...
Gestione dei Metadati


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank ...
Metadati della collezione
ts.meta.<campo>
getmeta(ts,’<campo>’)
getmeta(ts,’<campo>’,<default>)

rel = getmeta(ts,’release...
Metadati della collezione
A.meta.pippo=’pluto1’;
pluto=A.meta.pippo;
A.meta
ans =
    release: 733426
      pippo: ’pluto1...
Un metadato notevole: release
   Il metadato release indica la data in cui la serie `  e
   presa in considerazione (?!?)
...
Esempio
A.meta.release
ans =
      733426
>> datestr(A.meta.release)
ans =
19-Jan-2008




          E. Somma (SIA-BdI)   ...
Cancellare un metadato
rmfield(A.meta,’pippo’)                   % NON HA EFFETTO

A.meta = rmfield(A.meta,’pippo’) % CORR...
Metadati di colonna
TSC.meta_cols
ans =
    label: {’T1’           ’T2’   ’T3’}

Metadati di colonna
    I metadati di col...
Metadati di colonna
TSC.meta_cols.release(2) # NON FUNZIONA

M = TSC.meta_cols                     # BISOGNA FARE COSI’
la...
Metadati di colonna
getcolmeta(TSC,2,’label’)
ans =
    ’T2’
getcolmeta(TSC,2,’release’,today)
ans =
      733426




    ...
Metadati di colonna
getcolmeta(TSC,2,’label’)
ans =
    ’T2’
getcolmeta(TSC,2,’release’,today)
ans =
      733426
FCM = ge...
Metadati di colonna
getcolmeta(TSC,2,’label’)
ans =
    ’T2’
getcolmeta(TSC,2,’release’,today)
ans =
      733426
FCM = ge...
Metadati di colonna
getcolmeta(TSC,2,’label’)
ans =
    ’T2’
getcolmeta(TSC,2,’release’,today)
ans =
      733426
FCM = ge...
Metadati di colonna
TSC=addmeta_cols(TSC, 3, ’release’, {today })




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008...
Plot


1   Le serie storiche in MATLAB
      L’oggetto timeseries
      L’oggetto fints

2   BITS - Bank of Italy Time Ser...
Esempio di plot
aa=tsmat(1980,1,12,randn(120,1));
bb=filter(1,[1 -0.9],aa);
h=plot([aa,bb]);
legend(’aa tsmat’,’filtered t...
Esempio di plot




         E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   90/96
Grazie dell’attenzione




E. Somma (SIA-BdI)   WMBB 2008   21/01/2008   91/96
Upcoming SlideShare
Loading in …5
×

Workshop Matlab BITS Base

886 views

Published on

Workshop Matlab Bank of Italy Time Series Toolbox
Workshop c/o Area Ricerca Banca d'Italia
Villa Huffer
21 Gennaio 2008

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Workshop Matlab BITS Base

  1. 1. BITS: Serie Storiche in Matlab Emmanuele Somma Supporto Informatico per l’Area Ricerche Banca d’Italia 21 Gennaio 2008 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 1/96
  2. 2. Piano della presentazione 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 2/96
  3. 3. Le serie storiche in MATLAB 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 3/96
  4. 4. Serie storica Insieme di informazioni omogenee riferite a momenti diversi in successione temporale. t1 v1 t2 v2 . . . . . . tn vn E. Somma (SIA-BdI) WMBB 2008 21/01/2008 4/96
  5. 5. Serie storica Insieme di osservazioni numeriche riferite a momenti diversi in successione temporale periodica. tp v1 t2p v2 . . . . . . tnp vn E. Somma (SIA-BdI) WMBB 2008 21/01/2008 5/96
  6. 6. L’oggetto timeseries 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 6/96
  7. 7. Un array dei dati Un array di dati x = [-0.2 -0.3 13; -0.1 -0.4 15; NaN 2.8 17; 0.5 0.3 NaN; -0.3 -0.1 15] Un array casuale di dati x = rand(4,4); E. Somma (SIA-BdI) WMBB 2008 21/01/2008 7/96
  8. 8. Un paio di timeseries ts_pos = timeseries(x(:,1:2), 1:5, ’name’, ’Position’) getdatasamplesize(ts_pos) ts_vel = timeseries(x(:,3), 1:5, ’name’, ’Velocity’); getdatasamplesize(ts_vel) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 8/96
  9. 9. Altre timeseries %% Import the sample data load count.dat count1 = timeseries(count(:,1), 1:24,’name’, ’intersection1’); count2 = timeseries(count(:,2), 1:24,’name’, ’intersection2’); count3 = timeseries(count(:,3), 1:24,’name’, ’intersection3’); get(count1) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 9/96
  10. 10. Definizione delle unit` di misura a count1.DataInfo.Units = ’cars’; count1.TimeInfo.Units = ’hours’; count2.TimeInfo.Units = ’hours’; count3.TimeInfo.Units = ’hours’; E. Somma (SIA-BdI) WMBB 2008 21/01/2008 10/96
  11. 11. Definizione del metodo d’interpolazione count1.DataInfo.Interpolation = tsdata.interpolation(’zoh’); % zero-order hold E. Somma (SIA-BdI) WMBB 2008 21/01/2008 11/96
  12. 12. Aggiunta di eventi %% Construct and add the first event to all time series e1 = tsdata.event(’AMCommute’,8); % Construct the first event at 8 AM e1.Units = ’hours’; % Specify the time units of the time count1 = addevent(count1,e1); % Add the event to count1 count2 = addevent(count2,e1); % Add the event to count2 count3 = addevent(count3,e1); % Add the event to count3 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 12/96
  13. 13. Aggiunta di eventi %% Construct and add the second event to all time series e2 = tsdata.event(’PMCommute’,18); % Construct the first event at 6 PM e2.Units = ’hours’; % Specify the time units of the time count1 = addevent(count1,e2); % Add the event to count1 count2 = addevent(count2,e2); % Add the event to count2 count3 = addevent(count3,e2); % Add the event to count3 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 13/96
  14. 14. Collezioni di timeseries tsc = tscollection({count1 count2},’name’, ’count_coll’) tsc = addts(tsc, count3) tsc1 = removets(tsc1,’intersection3’) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 14/96
  15. 15. Ricampionamento della collezione tsc1 = resample(tsc,1:2:24) tsc1 = resample(tsc,1:0.5:24) tsc1 = resample(tsc1,tsc1.Time) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 15/96
  16. 16. Modifica dei contenuti degli elementi della collezione tsc1 = addsampletocollection(tsc1,’time’,3.25,... ’intersection1’,5) tsc1 = delsamplefromcollection(tsc1,’index’,... find(isnan(tsc1.intersection2.Data))); tsc1 = addsampletocollection(tsc1,’time’,3.25,... ’intersection1’,5); E. Somma (SIA-BdI) WMBB 2008 21/01/2008 16/96
  17. 17. Modifica dei contenuti degli elementi della collezione plot(tsc1.intersection1); hold on; plot(tsc1.intersection2) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 17/96
  18. 18. E. Somma (SIA-BdI) WMBB 2008 21/01/2008 18/96
  19. 19. L’oggetto fints 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 19/96
  20. 20. Creazione fints dates = (datenum(’05/11/99’):datenum(’05/11/99’)+100)’; data_series1 = exp(randn(1, 101))’; data_series2 = exp(randn(1, 101))’; data = [data_series1 data_series2]; myfts = fints(dates, data); myfts myfts = desc: (none) freq: Unknown (0) ’dates: (101)’ ’series1: (101)’ ’series2: (101)’ ’11-May-1999’ [ 0.6488] [ 0.1105] ’12-May-1999’ [ 0.1891] [ 2.6814] ’13-May-1999’ [ 1.1335] [ 0.5953] [...] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 20/96
  21. 21. Trasformazione srs2 = myfts.series2 srs2_vec = fts2mat(myfts.series2) format long g srs2_mtx = fts2mat(myfts.series2, 1) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 21/96
  22. 22. Indicizzazione elementi format short myfts(’05/11/99’) myfts.series2(’05/11/99’) myfts.series2({’05/11/99’, ’05/21/99’, ’05/31/99’}) myfts (’05/11/99::05/15/99’) myfts.series2(1) myfts.series2([1, 3, 5]) myfts.series2(16:20) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 22/96
  23. 23. Operazioni addup = myfts1 + newfts subout = myfts1 - newfts addscalar = myfts1 + 10000 submtx = myfts1 - randn(20, 4) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 23/96
  24. 24. Operazioni newfts2 = fints(myfts1.dates, fts2mat(myfts1/10000),... {’Rat1’,’Rat2’, ’Rat3’,’Rat4’}, 1, ’New FTS’) addother = myfts1 + fts2mat(newfts2); E. Somma (SIA-BdI) WMBB 2008 21/01/2008 24/96
  25. 25. BITS - Bank of Italy Time Series 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 25/96
  26. 26. L’oggetto tsmat 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 26/96
  27. 27. Costruzione tsmat TSMAT = tsmat(1980,1,12,count) tsmat( macro index (year), micro index (period), frequency, d Parametri macro index double (used as integer) micro index double (used as integer) frequency numero di elementi in una divisione macro 1 Year 2 Semester 4 Quarter 12 Month 52 Week 365 Day data matrix NOBS×NSERIES SERIES colonne OSSERV righe E. Somma (SIA-BdI) WMBB 2008 21/01/2008 27/96
  28. 28. Esempio A = tsmat(1980,1,12,rand(20,1)) Tsmat object Size: [20 1] Frequency: 12 Start: 1980 1 End: 1981 8 Labels: T1 B = tsmat(1980,1,12,rand(20,1)) BG = tsmat(1980,1,365,rand(220,1)) Tsmat object Size: [220 1] Frequency: 365 Start: Tue Jan-01-1980 End: Thu Aug-07-1980 Labels: T1 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 28/96
  29. 29. Caricamento dati load count.dat TSC = tsmat(1980,1,365,count) Tsmat object Size: [24 3] Frequency: 365 Start: Tue Jan-01-1980 End: Thu Jan-24-1980 Labels: T1 T2 T3 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 29/96
  30. 30. Struttura struct(TSC) ans = matdata: [24x3 double] start_year: 1980 start_period: 1 freq: 365 last_year: 1980 last_period: 24 meta: [1x1 struct] meta_cols: [1x1 struct] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 30/96
  31. 31. I Valori TSC.matdata ans = 11 11 9 7 13 11 14 17 20 11 13 9 43 51 69 38 46 76 61 132 186 [...] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 31/96
  32. 32. I metadati di base .freq frequenza delle osservazioni .start indice dell’oss. iniziale (anno,periodo) .start year anno dell’oss. iniziale .start period periodo dell’oss. iniziale .last indice dell’oss. finale (calcolato) .last year anno dell’oss. finale (calcolato) .last period periodo dell’oss. finale (calcolato) .range vettore degli indici iniziale e finale .dates vettore delle date in formato num. Matlab .matdata matrice dei valori della collezione Ad es. datestr(TSC.dates) ans = 01-Jan-1980 02-Jan-1980 03-Jan-1980 [...] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 32/96
  33. 33. I metadati ’estesi’ .meta metadati della collezione .meta cols metadati delle colonne I metadati di colonna obbligatori ’label’ nome della serie Ad es. TSC.meta ans = release: 733425 TSC.meta_cols ans = label: {’T1’ ’T2’ ’T3’} E. Somma (SIA-BdI) WMBB 2008 21/01/2008 33/96
  34. 34. Visualizzare una serie con tstab tstab(S1 [, S2 ...]) dove S1,...,S2 sono oggetti tsmat A=tsmat(1980,1,12,rand(5,1)) B=tsmat(1980,3,12,rand(5,1)) tstab(A,B) tsStart: 1980 1 tsRelease: 18-Jan-2008 Frequency: 12 (monthly) Date T1 T1 18/01/08 18/01/08 1980-M-001 0.0377 NaN 1980-M-002 0.8852 NaN 1980-M-003 0.9133 0.2619 1980-M-004 0.7962 0.3354 1980-M-005 0.0987 0.6797 1980-M-006 NaN 0.1366 1980-M-007 NaN 0.7212 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 34/96
  35. 35. Creazione della tsmat 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 35/96
  36. 36. tsmat: Come si usa >> E. Somma (SIA-BdI) WMBB 2008 21/01/2008 36/96
  37. 37. tsmat: Come si usa >> ts = tsmat(1980,1,12,rand(3,4)) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 36/96
  38. 38. tsmat: Come si usa >> ts = tsmat(1980,1,12,rand(3,4)) Tsmat object Size: [3 4] Start: 1980 1 End: 1980 3 Labels: T1 T2 T3 T4 >> E. Somma (SIA-BdI) WMBB 2008 21/01/2008 36/96
  39. 39. tsmat: Come si usa >> ts = tsmat(1980,1,12,rand(3,4)) Tsmat object Size: [3 4] Start: 1980 1 End: 1980 3 Labels: T1 T2 T3 T4 >> get(ts) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 36/96
  40. 40. tsmat: Come si usa >> ts = tsmat(1980,1,12,rand(3,4)) Tsmat object Size: [3 4] Start: 1980 1 End: 1980 3 Labels: T1 T2 T3 T4 >> get(ts) matdata: [3x4 double] start_year: 1980 start_period: 1 freq: 12 last_year: 1980 last_period: 3 meta: [1x1 struct] meta_cols: [1x1 struct] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 36/96
  41. 41. tsmat: Come si usa >> E. Somma (SIA-BdI) WMBB 2008 21/01/2008 37/96
  42. 42. tsmat: Come si usa >> tstab(ts) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 37/96
  43. 43. tsmat: Come si usa >> tstab(ts) tsStart: 1980 1 tsRelease: 17-Jul-2007 Frequency: 12 (monthly) Date T1 T2 T3 T4 17/07/07 17/07/07 17/07/07 17/07/07 1980-M-001 0.6822 0.1509 0.8600 0.4966 1980-M-002 0.3028 0.6979 0.8537 0.8998 1980-M-003 0.5417 0.3784 0.5936 0.8216 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 37/96
  44. 44. tsmat: Come si usa >> tstab(ts) tsStart: 1980 1 tsRelease: 17-Jul-2007 Frequency: 12 (monthly) Date LABELS T1 T2 T3 T4 17/07/07 17/07/07 17/07/07 17/07/07 1980-M-001 0.6822 0.1509 0.8600 0.4966 1980-M-002 0.3028 0.6979 0.8537 0.8998 1980-M-003 0.5417 0.3784 0.5936 0.8216 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 37/96
  45. 45. tsmat: Come si usa >> tstab(ts) tsStart: 1980 1 tsRelease: 17-Jul-2007 RELEASES Frequency: 12 (monthly) Date T1 T2 T3 T4 17/07/07 17/07/07 17/07/07 17/07/07 1980-M-001 0.6822 0.1509 0.8600 0.4966 1980-M-002 0.3028 0.6979 0.8537 0.8998 1980-M-003 0.5417 0.3784 0.5936 0.8216 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 37/96
  46. 46. tsmat Etichette di colonna ts = tsmat(1980,1,12,rand(3,4), ... {’PRICE’, ’STOCK’, ’EXCHANGE’, ’UNIT’}); tstab(ts) tsStart: 1980 1 tsRelease: 18-Jul-2007 Frequency: 12 (monthly) Date PRICE STOCK EXCHANGE UNIT 18/07/07 18/07/07 18/07/07 18/07/07 1980-M-001 0.0495 0.5221 0.3751 0.5979 1980-M-002 0.5667 0.1171 0.8234 0.9492 1980-M-003 0.1219 0.7699 0.0466 0.2888 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 38/96
  47. 47. tsmat Etichette di colonna automatiche ts = tsmat(1980,1,12,rand(3,4),’PRICE’); tstab(ts) tsStart: 1980 1 tsRelease: 18-Jul-2007 Frequency: 12 (monthly) Date PRICE1 PRICE2 PRICE3 PRICE4 18/07/07 18/07/07 18/07/07 18/07/07 1980-M-001 0.8702 0.1923 0.9339 0.8952 1980-M-002 0.0269 0.7157 0.1372 0.9424 1980-M-003 0.5195 0.2507 0.5216 0.3351 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 39/96
  48. 48. tsmat Rilasci di colonna ts = tsmat(1980,1,12,rand(3,4),’PRICE’, ... { ’01-Jan-2007’ ’02-Jan-2007’ ’07-Jan-2007’ ’09-Jan-2007’ }); tstab(ts) tsStart: 1980 1 Frequency: 12 (monthly) Date PRICE1 PRICE2 PRICE3 PRICE4 01/01/07 02/01/07 07/01/07 09/01/07 1980-M-001 0.5962 0.5972 0.9561 0.8121 1980-M-002 0.3290 0.1614 0.5955 0.6101 1980-M-003 0.4782 0.8295 0.0287 0.7015 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 40/96
  49. 49. tsmat Distribuzione dei rilasci su tutte le colonne ts = tsmat(1980,1,12,rand(3,4), ... {’PRICE’, ’STOCK’, ’EXCHANGE’, ’UNIT’}, ... ’01-Jan-2002’ ); tstab(ts) tsStart: 1980 1 tsRelease: 18-Jul-2007 Frequency: 12 (monthly) Date PRICE STOCK EXCHANGE UNIT 01/01/02 01/01/02 01/01/02 01/01/02 1980-M-001 0.4374 0.1359 0.3987 0.8686 1980-M-002 0.4712 0.5325 0.3584 0.6264 1980-M-003 0.1493 0.7258 0.2853 0.2412 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 41/96
  50. 50. Indicizzazione per l’accesso 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 42/96
  51. 51. Indicizzazione Metadati fondamentali tramite ’.’ (es. TSC.start) Osservazione tramite ’()’ (es. TSC([2:5, [1:end]) Lead/Lag tramite ’{}’ (es. TSC{-1}) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 43/96
  52. 52. Accesso ai metadati: ’.’ .freq frequenza delle osservazioni .start indice dell’oss. iniziale (anno,periodo) .start year anno dell’oss. iniziale .start period periodo dell’oss. iniziale .last indice dell’oss. finale (calcolato) .last year anno dell’oss. finale (calcolato) .last period periodo dell’oss. finale (calcolato) .range vettore degli indici iniziale e finale .dates vettore delle date in formato num. Matlab .matdata matrice dei valori della collezione .meta dizionario dei metadati di collezione .meta cols dizionari dei metadati di colonna Ad es. datestr(TSC.dates) ans = 01-Jan-1980 02-Jan-1980 03-Jan-1980 Somma (SIA-BdI) E. WMBB 2008 21/01/2008 44/96
  53. 53. Accesso alle osservazioni: ’()’ Doppio vettore di interi (2 elementi) righe colonne osservazioni serie TSC( [2:5], [1:end]) tsStart: 1980 2 tsRelease: 19-Jan-2008 Frequency: 365 (daily) Date T1 T2 T3 19/01/08 19/01/08 19/01/08 1980-D-002 02-Jan-1980 7.0000 13.0000 11.0000 1980-D-003 02-Jan-1980 14.0000 17.0000 20.0000 1980-D-004 02-Jan-1980 11.0000 13.0000 9.0000 1980-D-005 02-Jan-1980 43.0000 51.0000 69.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 45/96
  54. 54. Esempio: Una osservazione di tutte le serie nella collezione righe colonne osservazioni serie TSC( 1, [1:end]) tstab(TSC1) tsStart: 1980 1 tsRelease: 19-Jan-2008 Frequency: 365 (daily) Date T1 T2 T3 19/01/08 19/01/08 19/01/08 1980-D-001 01-Jan-1980 11.0000 11.0000 9.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 46/96
  55. 55. Esempio: Tutte le osservazioni di una serie della collezione righe colonne osservazioni serie TSC( [1:end], 2) tstab(TSC1) tsStart: 1980 1 tsRelease: 19-Jan-2008 Frequency: 365 (daily) Date T1 19/01/08 1980-D-001 01-Jan-1980 11.0000 1980-D-002 01-Jan-1980 7.0000 1980-D-003 01-Jan-1980 14.0000 1980-D-004 01-Jan-1980 11.0000 [...] 1980-D-021 01-Jan-1980 35.0000 1980-D-022 01-Jan-1980 11.0000 1980-D-023 01-Jan-1980 13.0000 1980-D-024 01-Jan-1980 10.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 47/96
  56. 56. Accesso alle osservazioni: ’()’ Quattro Interi e un indice (5 elementi) anno periodo anno periodo colonne iniziale finale TSC( 1986, 1, 1996, 1, ’:’) TSC( 1986, 1, 1996, 1, [2 3]) tsStart: 1980 2 tsRelease: 19-Jan-2008 Frequency: 365 (daily) Date T1 T2 T3 19/01/08 19/01/08 19/01/08 1980-D-002 02-Jan-1980 7.0000 13.0000 11.0000 1980-D-003 02-Jan-1980 14.0000 17.0000 20.0000 1980-D-004 02-Jan-1980 11.0000 13.0000 9.0000 1980-D-005 02-Jan-1980 43.0000 51.0000 69.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 48/96
  57. 57. Operazione di Lead e Lag: ’{}’ TSC = tsmat(1980,1,365,count(:,1)) tstab(TSC1,TSC1{-1},TSC1{1}) % == tstab(TSC,tslag(TSC,1),tslag(TSC,-1)) tsStart: 1979 365 tsRelease: 18-Jan-2008 Frequency: 365 (daily) Date T1 T1 T1 18/01/08 18/01/08 18/01/08 1979-D-365 31-Dec-1979 NaN NaN 11.0000 1980-D-001 31-Dec-1979 11.0000 NaN 7.0000 1980-D-002 31-Dec-1979 7.0000 11.0000 14.0000 [...] 1980-D-023 31-Dec-1979 13.0000 11.0000 10.0000 1980-D-024 31-Dec-1979 10.0000 13.0000 NaN 1980-D-025 31-Dec-1979 NaN 10.0000 NaN E. Somma (SIA-BdI) WMBB 2008 21/01/2008 49/96
  58. 58. Riorganizzazione 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 50/96
  59. 59. Concatenazione orizzontale aa=tsmat(1980,1,4,reshape(-1:-1:-16,4,4)) Tsmat object Size: [4 4] Frequency: 4 Start: 1980 1 End: 1980 4 Labels: T1 T2 T3 T4 tstab(aa) tsStart: 1980 1 tsRelease: 19-Jan-2008 Frequency: 4 (quarterly) Date T1 T2 T3 T4 19/01/08 19/01/08 19/01/08 19/01/08 1980-Q-001 -1.0000 -5.0000 -9.0000 -13.0000 1980-Q-002 -2.0000 -6.0000 -10.0000 -14.0000 1980-Q-003 -3.0000 -7.0000 -11.0000 -15.0000 1980-Q-004 -4.0000 -8.0000 -12.0000 -16.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 51/96
  60. 60. Concatenazione orizzontale bb=tsmat(1979,1,4,reshape(1:16,4,4)) Tsmat object Size: [4 4] Frequency: 4 Start: 1979 1 End: 1979 4 Labels: T1 T2 T3 T4 tstab(bb) tsStart: 1979 1 tsRelease: 19-Jan-2008 Frequency: 4 (quarterly) Date T1 T2 T3 T4 19/01/08 19/01/08 19/01/08 19/01/08 1979-Q-001 1.0000 5.0000 9.0000 13.0000 1979-Q-002 2.0000 6.0000 10.0000 14.0000 1979-Q-003 3.0000 7.0000 11.0000 15.0000 1979-Q-004 4.0000 8.0000 12.0000 16.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 52/96
  61. 61. Concatenazione orizzontale cc=[aa,bb] Tsmat object Size: [8 8] Frequency: 4 Start: 1979 1 End: 1980 4 Labels: T1 T2 T3 T4 T1 T2 T3 T4 tstab(cc) tsStart: 1979 1 tsRelease: 19-Jan-2008 Frequency: 4 (quarterly) Date T1 T2 [...] T3 T4 19/01/08 19/01/08 [...] 19/01/08 19/01/08 1979-Q-001 NaN NaN [...] 9.0000 13.0000 1979-Q-002 NaN NaN [...] 10.0000 14.0000 1979-Q-003 NaN NaN [...] 11.0000 15.0000 1979-Q-004 NaN NaN [...] 12.0000 16.0000 1980-Q-001 -1.0000 -5.0000 [...] NaN NaN 1980-Q-002 -2.0000 -6.0000 [...] NaN NaN 1980-Q-003 -3.0000 -7.0000 [...] NaN NaN 1980-Q-004 -4.0000 -8.0000 [...] NaN NaN E. Somma (SIA-BdI) WMBB 2008 21/01/2008 53/96
  62. 62. Concatenazione verticale cc=[aa;bb] Tsmat object Size: [8 4] Frequency: 4 Start: 1979 1 End: 1980 4 Labels: T1 T2 T3 T4 tstab(cc) tsStart: 1979 1 tsRelease: 19-Jan-2008 Frequency: 4 (quarterly) Date T1 T2 T3 T4 19/01/08 19/01/08 19/01/08 19/01/08 1979-Q-001 1.0000 5.0000 9.0000 13.0000 1979-Q-002 2.0000 6.0000 10.0000 14.0000 1979-Q-003 3.0000 7.0000 11.0000 15.0000 1979-Q-004 4.0000 8.0000 12.0000 16.0000 1980-Q-001 -1.0000 -5.0000 -9.0000 -13.0000 1980-Q-002 -2.0000 -6.0000 -10.0000 -14.0000 1980-Q-003 -3.0000 -7.0000 -11.0000 -15.0000 1980-Q-004 -4.0000 -8.0000 -12.0000 -16.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 54/96
  63. 63. Concatenazione verticale cc=[aa{-2};bb] Tsmat object Size: [8 4] Frequency: 4 Start: 1979 1 End: 1980 4 Labels: T1 T2 T3 T4 tstab(cc) tsStart: 1979 1 tsRelease: 19-Jan-2008 Frequency: 4 (quarterly) Date T1 T2 T3 T4 19/01/08 19/01/08 19/01/08 19/01/08 1979-Q-001 1.0000 5.0000 9.0000 13.0000 1979-Q-002 2.0000 6.0000 10.0000 14.0000 1979-Q-003 3.0000 7.0000 11.0000 15.0000 1979-Q-004 4.0000 8.0000 12.0000 16.0000 1980-Q-001 NaN NaN NaN NaN 1980-Q-002 NaN NaN NaN NaN 1980-Q-003 -1.0000 -5.0000 -9.0000 -13.0000 1980-Q-004 -2.0000 -6.0000 -10.0000 -14.0000 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 55/96
  64. 64. Concatenazione verticale non adiacente cc=[aa;bb{-1}] ??? Error using ==> tsmat.extend "FillDateBeforeLastDate" Error in ==> <a href="error:/Users/exedre/Work/Matlab/bi/toolboxes/bits2/@t self = extend(a, self, [ a.start_year a.start_period ], fill_date); Error in ==> <a href="error:/Users/exedre/Work/Matlab/bi/toolboxes/bits2/@t res = extend(res,varargin{i},nan,true); E. Somma (SIA-BdI) WMBB 2008 21/01/2008 56/96
  65. 65. extend Unione delle serie cn il controllo della sovrapposizione >> ts1 = tsmat(1980,1,12,rand(7,1)); >> ts2 = tsmat(1980,6,12,rand(4,1)); >> ts=extend(ts1,ts2) >> tstab(ts,ts1,ts2) [...] T1 T1 T1 05/09/07 05/09/07 05/09/07 1980-M-001 0.4457 0.4457 NaN 1980-M-002 0.9388 0.9388 NaN 1980-M-003 0.6338 0.6338 NaN 1980-M-004 0.9297 0.9297 NaN 1980-M-005 0.0629 0.0629 NaN 1980-M-006 0.0104 0.3069 0.0104 1980-M-007 0.1678 0.9498 0.1678 1980-M-008 0.7553 NaN 0.7553 1980-M-009 0.8338 NaN 0.8338 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 57/96
  66. 66. extend Unione delle serie cn il controllo della sovrapposizione >> ts=extend(ts1,ts2,[1980 7]) >> tstab(ts,ts1,ts2) [...] T1 T1 T1 05/09/07 05/09/07 05/09/07 1980-M-001 0.4457 0.4457 NaN 1980-M-002 0.9388 0.9388 NaN 1980-M-003 0.6338 0.6338 NaN 1980-M-004 0.9297 0.9297 NaN 1980-M-005 0.0629 0.0629 NaN 1980-M-006 0.3069 0.3069 0.0104 1980-M-007 0.1678 0.9498 0.1678 1980-M-008 0.7553 NaN 0.7553 1980-M-009 0.8338 NaN 0.8338 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 58/96
  67. 67. extend Unione di serie non contigue >> ts1=tsmat(1980,1,12,rand(5,1)) >> ts2=tsmat(1980,7,12,rand(5,1)); [...] T1 T1 1980-M-001 0.6059 NaN 1980-M-002 0.5179 NaN 1980-M-003 0.9429 NaN 1980-M-004 0.7412 NaN 1980-M-005 0.7011 NaN 1980-M-006 NaN NaN 1980-M-007 NaN 0.7447 1980-M-008 NaN 0.8738 1980-M-009 NaN 0.9641 1980-M-010 NaN 0.9819 1980-M-011 NaN 0.9186 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 59/96
  68. 68. extend Unione di serie non contigue >> ts1=tsmat(1980,1,12,rand(5,1)) >> ts2=tsmat(1980,7,12,rand(5,1)); [...] T1 T1 1980-M-001 0.6059 NaN 1980-M-002 0.5179 NaN 1980-M-003 0.9429 NaN 1980-M-004 0.7412 NaN 1980-M-005 0.7011 NaN 1980-M-006 NaN NaN 1980-M-007 NaN 0.7447 1980-M-008 NaN 0.8738 1980-M-009 NaN 0.9641 1980-M-010 NaN 0.9819 1980-M-011 NaN 0.9186 >> ts=extend(ts1,ts2) ??? Error using ==> tsmat.extend at 130 "TimeseriesCannotBeLinked" E. Somma (SIA-BdI) WMBB 2008 21/01/2008 59/96
  69. 69. extend Unione serie non contigue >> ts=extend(ts1,ts2,nan,true) T1 T1 T1 05/09/07 05/09/07 05/09/07 1980-M-001 0.6059 0.6059 NaN 1980-M-002 0.5179 0.5179 NaN 1980-M-003 0.9429 0.9429 NaN 1980-M-004 0.7412 0.7412 NaN 1980-M-005 0.7011 0.7011 NaN 1980-M-006 NaN NaN NaN 1980-M-007 0.7447 NaN 0.7447 1980-M-008 0.8738 NaN 0.8738 1980-M-009 0.9641 NaN 0.9641 1980-M-010 0.9819 NaN 0.9819 1980-M-011 0.9186 NaN 0.9186 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 60/96
  70. 70. Operazioni tra le tsmat 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 61/96
  71. 71. La differenza tra struttura e oggetto Struttura Oggetto s = struct() o = class() Creazione s.propriet´ a o.propriet´ a Accesso s.campo = valore o.campo = valore Riempimento funzione(s) metodo(o) Funzione/Metodo s.dati = m.dati + n.dati Operazioni tra strutture s = m + n Operazioni tra oggetti E. Somma (SIA-BdI) WMBB 2008 21/01/2008 62/96
  72. 72. Operazioni sulle serie (senza esclusione dei nan) max(A) min(A) mean(A) median(A) std(A) sum(A) var(A) abs(A) ceil(A) TODO: iqr(A) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 63/96
  73. 73. Operazioni sulle serie con esclusione dei nan nanmax(A) nanmin(A) nanmean(A) nanmedian(A) nanstd(A) nansum(A) nanva(A) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 64/96
  74. 74. Operazioni tra le serie tstab(A,B, A*10) tstab(A,B, A+B) tstab(A,B, A-B) tstab(A,B, A*B) tstab(A,B, A./B) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 65/96
  75. 75. Altre operazioni corr(TSC) corr(TSC.matdata) corr(count(:,1),count(:,2)) ans = 0.9331 corr(TSC(:,1),TSC(:,2)) ??? Error using ==> tsmat.subsref @tsmatsubsref::TS Index exceeds matrix dimensions E. Somma (SIA-BdI) WMBB 2008 21/01/2008 66/96
  76. 76. Altre operazioni cov(TSC) cov(TSC.matdata) ans = 1.0e+003 * 0.6437 0.9802 1.6567 0.9802 1.7144 2.6908 1.6567 2.6908 4.6278 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 67/96
  77. 77. Altre operazioni tstab(TSC,cumsum(TSC)) tstab(cumprod(TSC)) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 68/96
  78. 78. Operazioni logiche tstab(TSC==TSC) tsStart: 1980 1 tsRelease: 18-Jan-2008 Frequency: 365 (daily) Date T1 T2 T3 18/01/08 18/01/08 18/01/08 1980-D-001 01-Jan-1980 1.0000 1.0000 1.0000 1980-D-002 01-Jan-1980 1.0000 1.0000 1.0000 1980-D-003 01-Jan-1980 1.0000 1.0000 1.0000 [...] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 69/96
  79. 79. Operazioni logiche TSC1 = tsmat(1980,1,365,rand(24,3)*10*) tstab(TSC>TSC1) (tstab(ge(TSC,TSC1)) tsStart: 1980 1 tsRelease: 18-Jan-2008 Frequency: 365 (daily) Date T1 T2 T3 18/01/08 18/01/08 18/01/08 1980-D-001 01-Jan-1980 0.0000 0.0000 0.0000 1980-D-002 01-Jan-1980 0.0000 0.0000 0.0000 1980-D-003 01-Jan-1980 0.0000 0.0000 1.0000 1980-D-004 01-Jan-1980 0.0000 0.0000 0.0000 [...] E. Somma (SIA-BdI) WMBB 2008 21/01/2008 70/96
  80. 80. Operazioni e Funzioni Operazione F unzione gt(A,B) A>B ge(A,B) A≥B lt(A,B) A<B le(A,B) A≤B ne(A,B) A=B E. Somma (SIA-BdI) WMBB 2008 21/01/2008 71/96
  81. 81. Determinazione dei valori Operazione F unzione isnan = NaN isfinite =∞ E. Somma (SIA-BdI) WMBB 2008 21/01/2008 72/96
  82. 82. Introduciamo dei missing in testa e in coda TSC([1:3],[1:3])=NaN; tstab(TSC) TSC([24],[1:3])=NaN; tstab(TSC) Stringiamo l’intervallo di definizione della serie ai valori non missing TSCn=notnanrange(TSC) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 73/96
  83. 83. Lag e Lead TSC = tsmat(1980,1,365,count(:,1)) tstab(TSC,tslag(TSC,1),tslag(TSC,-1)) tsStart: 1979 365 tsRelease: 18-Jan-2008 Frequency: 365 (daily) Date T1 T1 T1 18/01/08 18/01/08 18/01/08 1979-D-365 31-Dec-1979 NaN NaN 11.0000 1980-D-001 31-Dec-1979 11.0000 NaN 7.0000 1980-D-002 31-Dec-1979 7.0000 11.0000 14.0000 [...] 1980-D-023 31-Dec-1979 13.0000 11.0000 10.0000 1980-D-024 31-Dec-1979 10.0000 13.0000 NaN 1980-D-025 31-Dec-1979 NaN 10.0000 NaN E. Somma (SIA-BdI) WMBB 2008 21/01/2008 74/96
  84. 84. Gestione dei Metadati 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 75/96
  85. 85. Metadati della collezione ts.meta.<campo> getmeta(ts,’<campo>’) getmeta(ts,’<campo>’,<default>) rel = getmeta(ts,’release’,today) rel = 733426 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 76/96
  86. 86. Metadati della collezione A.meta.pippo=’pluto1’; pluto=A.meta.pippo; A.meta ans = release: 733426 pippo: ’pluto1’ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A=addmeta(A,’pippo’,’pluto2’); A.meta ans = release: 733426 pippo: ’pluto2’ E. Somma (SIA-BdI) WMBB 2008 21/01/2008 77/96
  87. 87. Un metadato notevole: release Il metadato release indica la data in cui la serie ` e presa in considerazione (?!?) Non viene utilizzata in alcun modo nei calcoli ma ` e molto importante nelle operazioni di vintage dei dati La release della singola serie (ovvero ts.meta colsj.release), se presente, verr` a utilizzata per indicare il vintage dei dati, altrimenti si utilizzera la release dell’intera collezione (ts.meta.release), nel caso in cui non sia presente neppure questo (errore) si utilizzer` la data corrente. a E. Somma (SIA-BdI) WMBB 2008 21/01/2008 78/96
  88. 88. Esempio A.meta.release ans = 733426 >> datestr(A.meta.release) ans = 19-Jan-2008 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 79/96
  89. 89. Cancellare un metadato rmfield(A.meta,’pippo’) % NON HA EFFETTO A.meta = rmfield(A.meta,’pippo’) % CORRETTO oppure A=delmeta(A,’pippo’) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 80/96
  90. 90. Metadati di colonna TSC.meta_cols ans = label: {’T1’ ’T2’ ’T3’} Metadati di colonna I metadati di colonna sono ospitati in una struttura i cui campi sono cell-array. ` E uno strumento del linguaggio Matlab un po’ contorto a cui bisogna fare attenzione e che provoca un bel po’ di problemi. E. Somma (SIA-BdI) WMBB 2008 21/01/2008 81/96
  91. 91. Metadati di colonna TSC.meta_cols.release(2) # NON FUNZIONA M = TSC.meta_cols # BISOGNA FARE COSI’ label = M.labels(2) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 82/96
  92. 92. Metadati di colonna getcolmeta(TSC,2,’label’) ans = ’T2’ getcolmeta(TSC,2,’release’,today) ans = 733426 E. Somma (SIA-BdI) WMBB 2008 21/01/2008 83/96
  93. 93. Metadati di colonna getcolmeta(TSC,2,’label’) ans = ’T2’ getcolmeta(TSC,2,’release’,today) ans = 733426 FCM = getfullcolmeta(TSC) 1x3 struct array with fields: label FCM(1).label ans = ’T1’ E. Somma (SIA-BdI) WMBB 2008 21/01/2008 84/96
  94. 94. Metadati di colonna getcolmeta(TSC,2,’label’) ans = ’T2’ getcolmeta(TSC,2,’release’,today) ans = 733426 FCM = getfullcolmeta(TSC) 1x3 struct array with fields: label FCM(1).label ans = ’T1’ E. Somma (SIA-BdI) WMBB 2008 21/01/2008 85/96
  95. 95. Metadati di colonna getcolmeta(TSC,2,’label’) ans = ’T2’ getcolmeta(TSC,2,’release’,today) ans = 733426 FCM = getfullcolmeta(TSC) 1x3 struct array with fields: label FCM(1).label ans = ’T1’ E. Somma (SIA-BdI) WMBB 2008 21/01/2008 86/96
  96. 96. Metadati di colonna TSC=addmeta_cols(TSC, 3, ’release’, {today }) E. Somma (SIA-BdI) WMBB 2008 21/01/2008 87/96
  97. 97. Plot 1 Le serie storiche in MATLAB L’oggetto timeseries L’oggetto fints 2 BITS - Bank of Italy Time Series L’oggetto tsmat Creazione della tsmat Indicizzazione per l’accesso Riorganizzazione Operazioni tra le tsmat Gestione dei Metadati Plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 88/96
  98. 98. Esempio di plot aa=tsmat(1980,1,12,randn(120,1)); bb=filter(1,[1 -0.9],aa); h=plot([aa,bb]); legend(’aa tsmat’,’filtered tsmat bb’); % Let’s add a moving average of the bb tsmat cc=mave(bb,12); plot([aa,bb,cc]); legend(’aa tsmat’,’filtered tsmat bb’,’12 terms moving average E. Somma (SIA-BdI) WMBB 2008 21/01/2008 89/96
  99. 99. Esempio di plot E. Somma (SIA-BdI) WMBB 2008 21/01/2008 90/96
  100. 100. Grazie dell’attenzione E. Somma (SIA-BdI) WMBB 2008 21/01/2008 91/96

×