Comandi Rstudio X Project
Comandi generali
Innanzitutto, quando inseriamo una funzione occorre mettere il nome della funzione che si vuole usare e aprire la parentesi tonda. Dentro la parentesi andranno messi gli input che dovranno essere separati con la virgola.
Per effettuare un campionamento semplice si utilizza il comando sample: Questo comando può essere effettuato con re immissione (“replace = T o TRUE”) o senza re immissione (“replace = F o FALSE”) attraverso l’input. Inoltre, con questo comando si assegnano a x1 100 numeri (1:100) con ripetizioni (“replace = TRUE”).
Il comando class ci permette di identificare e verificare la natura di una determinata variabile. Il comando which permette di identificare i valori di una determinata serie di dati (in questo caso x1) che soddisfano una certa condizione o che assumono un determinato valore. Nell’immagine si identificano tutti quei valori che superano il valore di 50 e l’output di quel comando in foto indicherà le posizioni all’interno dell’oggetto x1 che assumono valore superiore a 50. Per verificare se effettivamente i valori ottenuti con il comando which siano maggiori di 50 occorre fare in questo modo: “x1[2]” cioè si scrive la serie o l’oggetto che contiene i dati e si identifica il valore contenuto nella posizione 2 all’interno dell’oggetto x1 e si vede se il valore della posizione 2 risulta essere maggiore di 50. E cosi via.
Per quanto riguarda il comando sort creiamo prima un vettore (con “c(...)”) nella prima riga assegnandolo a x (in questo caso è un vettore di 5 elementi). Il comando sort permette di ordinare il vettore infatti nel nostro caso si inserisce all’interno della funzione l’input riguardante il criterio per ordinare i valori all’interno del vettore. Nel nostro caso abbiamo inserito “decreasing = F” (cioè NON in ordine DECRESCENTE).
È probabile che in Rstudio possano esserci dei valori mancanti all’interno di un oggetto o serie di dati. Questi valori vengono identificati con il simbolo NA. Possiamo creare un vettore con valori mancanti tipo: Nel momento in cui si volesse calcolare la media di x facendo “mean(x)” si ha un problema in quanto vi è un valore mancante ed R non riesce a determinare il valore dell’operazione.
Si ha, però, una soluzione che è: Per verificare la presenza di valori mancanti all’interno di un oggetto o di una serie di dati si può fare questo: Un'ulteriore soluzione per ovviare al problema dei valori mancanti è quello di sostituire all’interno dell’oggetto o serie di dati (in questo caso x) questi ultimi con dei valori. Con la prima riga si va a sostituire all’interno di x il valore is.na(x) con 300. In caso, invece, volessimo sostituire a tutti i valori maggiori di 5 il valore 300, allora scriveremmo (x, is.na(x>5), 300). Nel momento in cui volessimo sostituire un valore all’interno dell’oggetto x, per esempio vogliamo sostituire 7 con 3000 allora si userà il comando della seconda riga. Questo va a trovare all’interno dell’oggetto x i valori 7 (il doppio uguale “==”) e li sostituisce con 3000. Un’altra soluzione per sostituire un determinato valore con un altro è: identificare la posizione del valore all’interno dell’oggetto o della serie di dati e sostituirlo come nella riga 3.
Per effettuare un salvataggio degli oggetti creati ed importati, occorre utilizzare il comando sopra indicato; oppure andare nell’environment e cliccare sul dischetto per salvare.
Come fare per richiamare un determinato salvataggio?
Occorre utilizzare questo comando: Si inserirà in setwd la cartella in cui abbiamo salvato il file di R; mentre con load inseriamo il nome con cui abbiamo salvato il file. Un’ulteriore possibilità per richiamare file R salvati precedentemente è quella di andare sul menu a tendina → in File successivamente fare Open Project.
Comandi progetto R
Si inizia con l’impostare la working directory attraverso il comando getwd(). Successivamente si va a settare la working directory attraverso il comando setwd(), all’interno delle parentesi quadre andremo a copiare il percorso della cartella in cui vogliamo salvare il progetto. Successivamente si va a caricare alcuni pacchetti con il comando library().
Per importare dati riguardanti i prezzi storici di un titolo finanziario occorre innanzitutto trasformare i dati excel in csv. Lo si può fare andando su file esporta csv ecc. Poi aprire questo file trasformato in csv e → selezionare l’intera tabella dei dati, fare home generali e selezionare nessun formato specifico. Poi ancora → andare sulla colonna delle date, selezionare tutte le date, cliccare tasto destro del mouse e andare su date e cliccare il formato o italiano %d-%m-%Y oppure quello estero %Y-%m-%d. Una volta trasformato il file excel in csv bisogna importarlo su R utilizzando il comando read.csv(). All’interno di questo comando andremo ad inserire il nome del file che si vuole importare (che deve essere nella cartella che abbiamo settato), tramite “file=”. L’input sep indica il separatore, ovvero da cosa sono separati i diversi valori presenti all’interno dei dati importati; oppure può anche rappresentare da quale separatore sono, appunto, separate le variabili presenti all’interno dei dati (Date, Open, High, Low, Close, Adj. Close ecc.). Nel momento in cui sono separati dalla virgola allora si mette come nello screen cioè: “,” altrimenti se vi è il punto e virgola si mette “;”. Se invece ci fosse il tab, come separatore, bisogna scrivere /t. Per quanto riguarda il decimale dec a volte può essere usato il punto “.”, altre volte la virgola “,”. Infine, l’input “head = TRUE” indica che le colonne all’inizio hanno un titolo.
I dati possono essere importati anche andando su Envoironment Import dataset: Successivamente cliccare From Text (base): Dopo aver cliccato viene fuori un’altra finestra: La voce encoding la lasciamo come sta; heading fa riferimento al titolo delle colonne, ed essendoci lasciamo YES; row names lo lasciamo automatico; separator lasciamo virgola (cioè comma) in quanto le variabili sono separate dalla virgola. Successivamente si lascia tutto invariato e si fa import.
Dopo l’importazione dei dati si va a trasformare questi ultimi in serie storiche, attraverso il seguente comando: Dato che importiamo un titolo finanziario, abbiamo diverse colonne che fanno riferimento a: Open, Close ecc. Ognuna di queste colonne è una serie storica in quanto i valori sono indicizzati al tempo. Detto ciò, dobbiamo far capire ad R che bisogna trasformare tutti i dati, riferiti alle colonne, importati in serie storiche e lo facciamo con il comando nella prima riga strptime(). Ora, dentro questa funzione strptime() si inseriscono gli input. Uno di questi è il file di dati che abbiamo importato nel caso dello screen è sp500. Quest’ultimo è un oggetto indicizzato a 2 dimensioni, nel senso che è caratterizzato dal fatto di presentare righe e colonne. Si scrive, quindi, sp500[,1] per indicare che l’oggetto sp500 è composto da righe (che sono a sinistra della virgola) e le colonne che sono rappresentate dall’1 quindi a destra della virgola. Nel caso dello screen stiamo selezionando solo la prima colonna dell’oggetto sp500. Se volessimo selezionare dalla 1° alla 7° riga mettiamo sp500[,1:7] ovviamente lo stesso si può fare con le righe. In questo caso selezioniamo solo la prima colonna perché abbiamo informazioni relative al tempo e mettiamo %Y-%m-%d se il formato data dei dati è anno-mese-giorno; altrimenti si usa %d-%m-%Y se il formato data è giorno-mese-anno. Il formato della data può essere anche così anno/mese/giorno oppure giorno/mese/anno. In questi casi il comando è %Y/%m/%d (del primo) e %d/%m/%Y (del secondo). In conclusione, con il comando strptime() diciamo ad R che vogliamo la prima colonna dell’oggetto (in quanto rappresenta le date cioè il tempo), che la prima colonna è composta da date con il formato detto sopra è che il time-zone è GMT “tz=GMT” permette di uniformare tutti i fusi orari.
Con il comando della seconda riga as.xts(), selezioniamo sempre l’oggetto che si è importato di questo si seleziona dalla 2° all’ultima colonna cioè: sp500[,2:ncol(sp500)]. L’input ncol identifica il numero di colonne. Infine, inserendo successivamente .., Date_sp500 si vuole dire ad R che le colonne selezionate sono indicizzate a serie storica sulla base di queste Date_sp500.
Il comando head(x) mostra le prime 6 righe dell’oggetto importato ad esempio di x. Dentro le parentesi deve essere messo l’oggetto di cui vogliamo vedere le prime 6 righe. Il comando tail(x) fa vedere le ultime 6 righe dell’oggetto che abbiamo importato “x”. Con il comando class() diciamo ad R di mostrarci la natura dell’oggetto inserito all’interno di class. Con il comando sp500$ si va a scegliere all’interno di sp500 quale colonna prendere in considerazione per l’analisi e per effettuare il grafico. L’assegniamo ad una variabile p_t e successivamente con length(p_t) individuiamo la lunghezza di p_t (cioè da quanti dati/osservazioni è formato p_t).
Per effettuare il grafico di p_t, eseguiamo i seguenti comandi: Con il primo comando si ha un semplice grafico dell’sp500. Con il secondo andiamo ad inserire il titolo del grafico inserendo come input in plot main ed infine possiamo selezionare il colore dell’andamento del grafico della serie storica con col. Inoltre se volessi fare il grafico di sp500 però solo del 2008 metterei questo comando: “plot(p_t[‘2008’])”. Se mentre volessi il grafico di date precise allora inserirei le date precise: plot(p_t[‘2008-01/2009-06’]) (con questo comando R farà il grafico da gennaio 2008 a giugno 2006 dell’sp500).
N.B. ALL’INIZIO DEL PROGETTO DI R BISOGNA PARLARE UN PO’ DELLA STORIA E DELLA COMPOSIZIONE DELL’INDICE (TITOLO FINANZIARIO).
Per rappresentare il correlogramma globale ACF occorre inserire questo comando: L’input coredata permette di trasformare p_t in modo da non essere più associato alle date, quindi viene omessa la parte delle date. Nel momento in cui l’andiamo a lanciare questo comando si ottiene (con riguardo alla serie sp500): Questo ACF ci dice che vi è una fortissima componente di autocorrelazione, cioè il prezzo di oggi (al lag 0) dipende in modo molto forte dal prezzo di ieri, dal prezzo di due giorni fa e così via. Si vede come il prezzo di oggi (la lag 0) dipende in modo forte dal prezzo di 36 giorni fa (lag 36). Tutte quelle barre rappresentano una stima dell’autocorrelazione globale ai diversi lag. Per quanto riguarda le linee tratteggiate blu, queste identificano la significatività o meno delle autocorrelazioni globali. Se la barra sta al di fuori delle linee tratteggiate vuol dire che è statisticamente (significativamente) diversa da 0, mentre se la barra si trova all’interno delle linee tratteggiate allora significa che la barra è statisticamente (significativamente) uguale a 0.
Per effettuare la deviazione standard
(standard deviation) utilizziamo il seguente comando: Si inserisce quindi sd(p_t) dove p_t rappresenta l’oggetto di cui vogliamo sapere la deviazione standard. Ora p_t rappresenta la serie dei prezzi storici di chiusura aggiustati. Quindi p_t non è stazionario, sappiamo dalla teoria che dobbiamo avere dei processi stazionari. Per rendere stazionario p_t, applicheremo le differenze prime.
Nel caso si serie storiche finanziarie si effettua una differenza prima (di ordine 1), in caso di serie storiche con andamento esponenziale si effettuerà una differenza seconda. Se ci dovesse essere la componente di stagionalità allora dovranno essere applicate le differenze stagionali. Nelle serie storiche finanziarie non si ha presenza di stagionalità perché queste sono delle serie che hanno cadenza giornaliera. Quindi facendo la deviazione standard di una serie non stazionaria si ha che il valore è pari a: Per effettuare le differenze si esegue il seguente comando: Il comando è quello della prima riga. Applicando la differenza prima si va a perdere la prima osservazione e si ottiene ad esempio: Infatti, come si può vedere il 31-12-1999 non si ha più il valore numerico, ma si ha NA. Ora per determinare la deviazione standard occorre eliminare questo valore mancante e lo si toglie con il comando della terza riga cioè diff_p_t[1]<-0 (cioè si assegna a quella prima osservazione del 31-12-99 il valore 0).
Ora se si va a calcolare la deviazione standard della differenza di primo ordine su p_t si ha: Quindi come si vede la deviazione standard della serie differenziata risulta essere molto più bassa. Tra la serie p_t e la serie diff_p_t, andrò a scegliere la seconda in quanto è caratterizzata da una deviazione standard molto più bassa. Infatti, andando a fare l’ACF di diff_p_t (acf(coredata(diff_p_t))) si ha che le barre risultano essere diverse: Da questo si nota come la forte autocorrelazione ora non vi è, vi sono alcune barre dentro le bande di oscillazione ed altre al di fuori di queste; ma non vi è più forte dipendenza come in precedenza.
Ora, si va a plottare il grafico di diff_p_t con il seguente comando: Da questo grafico si può notare che la serie si muove intorno al valore alla stessa media (ed intorno allo 0), risultando essere stazionaria in media. Per quanto riguarda la variabilità della stessa risulta essere NON omogenea infatti si notano intervalli temporali in cui la variabilità è maggiore ed altri in cui è minore. Questa diversa variabilità è dovuta al fatto che vi sono periodi ad elevata variabilità e periodi a bassa variabilità.
Sulle serie storiche finanziarie non si effettua mai solo la differenza prima, bensì si effettua la differenza di primo ordine sui logaritmi in modo da ottenere i rendimenti. I rendimenti sono i valori sui quali opereremo. Quindi inseriremo il seguente comando: Si effettua prima il logaritmo del prezzo e poi si applica la differenza prima ottenendo quindi i rendimenti. Procediamo, ora, a calcolare la deviazione standard dei rendimenti, ottenendo: Quindi tra la differenza prima e la differenza logaritmica andrò a scegliere la differenza logaritmica perché permette di ottenere i rendimenti e presenta la deviazione standard più bassa.
N.B. PER IL PROGETTO DI R SI PRENDONO I PREZZI DI CHIUSURA.
Passiamo, ora, a calcolare l’ACF dei rendimenti con il seguente comando: Da cui otteniamo il seguente correlogramma: Per effettuare la differenza seconda si utilizza il seguente comando: Per calcolare le statistiche descrittive si utilizza il seguente comando: Da qui vediamo che l’oggetto tab contiene tutta una serie di statistiche descrittive: media, deviazione standard, minimo, max, la simmetria e la curtosi. Dato che questi valori saranno molto piccoli possiamo moltiplicare la serie dei rendimenti per 100 in modo da rendere più visibili le variazioni ed i dati espressi in percentuale, con il comando r_t<- r_t*100. Per dare il nome ad ogni singola statistica descrittiva contenuta in tab, si utilizza il comando colnames(tab)<-c(...). Andando a lanciare il comando per le statistiche descrittive si ottengono i seguenti risultati: L’asimmmetria negativa ci permette di dire che le variazioni negative che ci sono state in r_t (cioè nei rendimenti) sono molto più pronunciate (evidenti) delle variazioni positive.
Nel momento in cui importiamo una serie e non vogliamo una colonna di quest’ultima allora eseguiamo il seguente comando: Dove s1 rappresenta la serie importata e x1 è il valore assegnato alla serie s1 priva della colonna 1. Quando importiamo la serie 1 facciamone il grafico e andiamo a studiare i correlogrammi ACF e PACF con i seguenti comandi: Il comando par(mfrow=c(2,1)) ci permette di dire R che si vuole dividere lo spazio del plot (cioè dove escono i grafici plottati) in due parti una sopra l’altra. Si ottengono i seguenti risultati: Da questi correlogrammi, si nota come a parte il lag 0 che per definizione è sempre uguale ad 1, tutti gli altri valori ricadono all’interno delle bande quindi la serie importata può essere la realizzazione di un WN. Quest’ultimo, infatti, presenta incorrelazione tra le variabili. Inoltre, il WN ha i correlogrammi delle ACF e PACF uguali. Quindi la serie 1 importata è un WN. Nel caso in cui andassimo a fare la differenza prima di una serie che è un WN si avrebbe un aumento della deviazione standard quindi sbaglieremmo. Non si fa la differenza prima su un WN, in quanto questo è già un processo STAZIONARIO.
Lezione R – 26/03
Vediamo come stimare i modelli MA. Innanzitutto, per stimare questi modelli occorre che la serie storica sulla quale vogliamo stimarli, sia stazionaria. Se dal time series plot che abbiamo realizzato ci accorgiamo che la serie presa in considerazione è stazionaria allora possiamo stimarli. Ovviamente noi effettuiamo le differenze di primo ordine sui logaritmi (cioè i rendimenti) quindi la serie risulta essere stazionaria in media. Come detto nella teoria, le ACF di un MA(1) si troncano dal lag 2 quindi h≥2. Andiamo ora ad inserire il comando che ci permette di importare in Rstudio, la serie storica simulata per i modelli MA(q). Successivamente si va a plottare la serie s1. Dal comando per l’analisi grafica si ottiene il seguente plot della serie s1. Da cui si può notare come la serie risulti essere stazionaria in media, infatti oscilla intorno al valore 10. Di seguito, andando a fare le autocorrelazioni globali e parziali (ACF e PACF) otteniamo:
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.