4 Lab 2 - 23/10/2020

In questa lezione vedremo come importare dati disponibili in un file di tipo comma-separated (csv). Vedremo inoltre come analizzare i dati disponibili in un oggetto di tipo data frame.

4.1 Importazione dei dati

Il file Adjcloseprices.csv contiene i prezzi di alcuni titoli. Si noti che il file di tipo csv è di fatto un file di testo che può essere aperto con un editor di testo come TextNote, TextEdit o BloccoNote (si veda la Figura 4.1).

Preview of the Adjcloseprices.csv file

Figure 4.1: Preview of the Adjcloseprices.csv file

Ci sono 3 elementi che caratterizzano un file csv:

  • header (intestazione): la prima riga del file che contiene solitamente i nomi delle variabili;
  • il separatore di campo: il carattere utilizzato per separare le informazioni disponibili nel file (solitamente si utilizza il punto e virgola o la virgola);
  • il separatore decimale: il carattere utilizzato per i decimali (solitamente si usa la virgola o il punto).

Dall’anteprima del file riportata in Figura 4.1 si nota che:

  • le seguenti stringhe riportate nella prima riga rappresentano i nomi delle variabili: “Date”;“N225”;“DJI”;“IXIC”;“BTC.EUR”;“GSPC”;“STOXX50E”
  • “;” è il separatore di campo;
  • “.” è il separatore decimale.

Queste informazioni devono necessariamente essere specificate in R quando si importano dei dati da un file csv. La funzione che si utilizza è read.csv i cui principali argomenti sono riportati di seguito (si veda anche ?read.csv):

  • file: il nome del file (specificato tra virgolette) da importare con eventualmente la specifica del percorso intero che porta alla cartella dove è contenuto il file;
  • header: valore logico (T o F) che indica se la prima riga del file contiene i nomi delle variabili;
  • sep: il carattere che rappresenta il separatore di campo (da specificare dentro le virgolette);
  • dec: il carattere che rappresenta il separatore decimale (da specificare dentro le virgolette).

Il seguente codice può quindi essere utilizzato per importare i dati disponibili in Adjcloseprices.csv. In particolare, il codice crea un oggetto di nome fdata:

fdata = read.csv("Adjcloseprices.csv",header=T,sep=";",dec=".")

In alternativa è possibile utilizzare la funzionalità di RStudio per l’import dei dati: si veda qui per maggiori informazioni.

La funzionalità “Import Dataset” è disponibile nel pannello in alto a destra (environment) (si veda la Figura 4.2). Dopo aver scelto “From text (base)” è possibile specificare tutti i settaggi del file csv nella finestra “Import Dataset” che segue, così come mostrato in Figura 4.3.

The Import Dataset feature of RStudio

Figure 4.2: The Import Dataset feature of RStudio

Specification of the csv file characteristics through the Import Dataset feature

Figure 4.3: Specification of the csv file characteristics through the Import Dataset feature

Dopo aver cliccato su Import un oggeto di nome fdata verrà creato. Si noti che di fatto RStudio utilizza la funzione read.csv i cui argomenti vengono specificati tramite un’interfaccia user-friendly.

L’oggetto fdata è un oggetto di tipo data.frame:

class(fdata)
## [1] "data.frame"

I data frame sono matrici di dati le cui righe si riferiscono ai soggetti (in questo caso ai diversi giorni finanziari) e le righe alle variabile (in questo caso le date e i prezzi dei titoli).

Utilizzando la funzione str si ottengono informazion circa la tipologia delle variabili incluse nel data frame:

str(fdata)
## 'data.frame':	1058 obs. of  7 variables:
##  $ Date    : chr  "2014-09-09" "2014-09-10" "2014-09-11" "2014-09-12" ...
##  $ N225    : num  366 368 369 367 360 ...
##  $ DJI     : num  17014 17069 17049 16988 17132 ...
##  $ IXIC    : num  15749 15789 15909 15948 15912 ...
##  $ BTC.EUR : num  1988 1996 1997 1986 1999 ...
##  $ GSPC    : num  4552 4587 4592 4568 4553 ...
##  $ STOXX50E: num  3245 3244 3238 3235 3222 ...

In questo caso la variabile Date è di tipo qualitativo (chr è l’abbreviazione di character, è quindi un vettore di stringhe di testo) mentre le altre variabili sono di tipo numerico (num).

Utilizzando le funzioni head e tail è possibile ottenere visualizzare la parte superiore e inferiore del data frame:

head(fdata) #prime 6 righe in alto (date più remote)
##         Date   N225      DJI     IXIC BTC.EUR    GSPC STOXX50E
## 1 2014-09-09 366.01 17013.87 15749.15 1988.44 4552.29  3245.43
## 2 2014-09-10 368.35 17068.71 15788.78 1995.69 4586.52  3244.16
## 3 2014-09-11 369.29 17049.00 15909.20 1997.45 4591.81  3237.76
## 4 2014-09-12 367.49 16987.51 15948.29 1985.54 4567.60  3235.07
## 5 2014-09-16 359.56 17131.97 15911.53 1998.98 4552.76  3221.73
## 6 2014-09-17 353.98 17156.85 15888.67 2001.57 4562.19  3237.44
tail(fdata) #ultime 6 righe in basso (date più recenti)
##            Date    N225      DJI     IXIC BTC.EUR    GSPC STOXX50E
## 1053 2019-05-08 5314.32 25967.33 21602.59 2879.42 7943.32  3417.26
## 1054 2019-05-09 5487.23 25828.36 21402.13 2870.72 7910.59  3350.71
## 1055 2019-05-10 5661.72 25942.37 21344.92 2881.40 7916.94  3361.05
## 1056 2019-05-13 6949.45 25324.99 21191.28 2811.87 7647.02  3320.78
## 1057 2019-05-14 7128.11 25532.05 21067.23 2834.41 7734.49  3364.38
## 1058 2019-05-15 7316.63 25648.02 21188.56 2850.96 7822.15  3385.78

Per ottenere informazioni circa le dimensioni del data frame (numero di righe e colonne) si possono utilizzare le seguenti funzioni alternative:

nrow(fdata) #n. di righe
## [1] 1058
ncol(fdata) #n. di colonne
## [1] 7
dim(fdata) #n. di righe e di colonne
## [1] 1058    7

4.2 Selezione di dati da un data frame

La selezione di dati da un data frame si effettua utilizzando le parentesi quadre, in maniera simile a quanto visto durante il Lab 1 per i vettori. Nel caso di data base però all’interno delle parentesi quadre dovranno essere specificati due indici, uno per le righe e uno per le colonne, separati da virgola. Per esempio il codice

fdata[4,4] 
## [1] 15948.29

seleziona l’elemento presente nella quarta riga e quarta colonna, corrispondente al prezzo del titolo IXIC (Nasdaq Composite index) per il giorno 2014-09-12.

Per selezionare più elementi è possibile utilizzare un vettore di indici:

fdata[ c(100,101,102) , 4] #righe 100, 101, 102, quarta colonna 
## [1] 18199.17 18264.79 18332.30

Si noti che il vettore c(100,101,102) rappresenta una sequenza regolare di passo 1 da 100 a 102 il cui codice può essere semplificato con 100:102:

fdata[ 100:102 , 4] #righe 100, 101, 102, quarta colonna 
## [1] 18199.17 18264.79 18332.30

Per selezionare un’intera riga (contentente i prezzi di tutti i titoli per un particolare giorno) è necessario specificare solo l’indice di riga:

fdata[4, ] #tutti i dati disponibili sulla quarta riga
##         Date   N225      DJI     IXIC BTC.EUR   GSPC STOXX50E
## 4 2014-09-12 367.49 16987.51 15948.29 1985.54 4567.6  3235.07

In maniera simile, per estrarre i dati di un’intera colonna (corrispondenti in questo caso all’intera serie storica di prezzi per il titolo selezionato), si specifica solamente l’indice di colonna:

fdata[,4] #tutti i valori in quarta colonna (prezzi di IXIC)
##    [1] 15749.15 15788.78 15909.20 15948.29 15911.53 15888.67 16067.57 16321.17
##    [9] 16205.90 16167.45 16374.14 16229.86 16310.64 16173.52 16082.25 15661.99
##   [17] 15708.65 15890.95 15783.83 15595.98 15478.93 15300.55 14936.51 15073.52
##   [25] 14738.38 14532.51 15111.23 14804.28 15195.77 15138.96 15291.64 15388.72
##   [33] 15329.91 15553.91 15658.20 16413.76 16862.47 16937.32 16792.48 16880.38
##   [41] 16780.53 17124.11 17197.05 17392.79 17490.83 16973.80 17344.06 17288.75
##   [49] 17300.86 17357.51 17407.62 17383.58 17459.85 17590.10 17663.22 17720.43
##   [57] 17887.21 17920.45 17935.64 17813.38 17412.58 17257.40 17371.58 17099.40
##   [65] 16755.32 16819.73 17210.05 17621.40 17635.14 17729.84 17450.77 17408.71
##   [73] 16883.19 16885.33 17167.10 17197.73 17087.71 16795.96 17108.70 16864.16
##   [81] 17366.30 17280.48 17329.02 17511.75 17468.52 17768.30 17795.73 17606.22
##   [89] 17674.39 17558.04 17335.85 17678.74 17504.62 17648.50 17711.93 17652.68
##   [97] 17979.72 17913.36 17987.09 18199.17 18264.79 18332.30 18466.92 18603.48
##  [105] 18585.20 18785.79 18797.94 18826.88 18815.16 18703.60 18751.84 18971.00
##  [113] 18790.55 18665.11 18723.52 18991.11 19254.25 19246.06 19437.00 19544.48
##  [121] 19476.56 19560.22 19754.36 19713.45 19746.20 19471.12 19285.63 19411.40
##  [129] 19206.99 19034.84 19312.79 19640.54 19789.81 19937.72 19907.63 19905.46
##  [137] 19908.68 19869.76 19885.77 19652.88 19634.49 19909.09 20133.90 20187.65
##  [145] 20020.04 19983.32 20058.95 19520.01 19291.99 19379.19 19620.91 19624.84
##  [153] 19764.72 19732.92 19890.27 20026.38 20196.56 20202.87 20264.41 20437.48
##  [161] 20472.58 20551.46 20563.15 20569.87 20543.19 20473.51 20488.19 20460.90
##  [169] 20457.19 20096.30 20046.36 20382.97 20407.08 20387.79 20257.94 20219.27
##  [177] 19990.82 20174.24 20428.19 20809.42 20868.03 20771.40 20706.15 20109.95
##  [185] 20235.73 20329.32 20522.50 20112.12 20376.59 19737.64 19855.50 19779.83
##  [193] 20089.77 20385.33 20463.33 20600.12 20650.92 20841.97 20593.67 20683.95
##  [201] 20544.53 20350.10 20328.89 20302.91 20522.83 20585.24 20548.11 20520.36
##  [209] 20614.06 20664.44 20724.56 20808.69 20392.77 20595.55 20519.45 20620.26
##  [217] 20554.47 20222.63 20033.52 19435.83 18540.68 17806.70 18376.83 18574.44
##  [225] 19136.32 18890.48 18165.69 18095.40 18182.39 17792.16 17427.08 18770.51
##  [233] 18299.62 18264.22 17965.70 18026.48 18171.60 18432.27 18070.21 17571.83
##  [241] 17880.51 17645.11 16930.84 17388.15 17722.42 17725.13 18005.49 18186.10
##  [249] 18322.98 18141.17 18438.67 18234.74 17891.00 18096.90 18291.80 18131.23
##  [257] 18207.15 18554.28 18435.87 18825.30 18947.12 18777.04 18903.02 18935.71
##  [265] 19083.10 18683.24 18926.91 19116.41 19265.60 19642.74 19671.26 19691.39
##  [273] 19697.77 19596.91 19393.69 19630.63 19649.18 19859.81 19879.81 19924.89
##  [281] 19847.58 19883.94 19747.47 20012.40 19938.13 19939.90 19504.48 19698.15
##  [289] 19492.60 19301.07 19046.55 19230.48 18883.42 18565.90 19049.91 19353.56
##  [297] 18986.80 18916.02 18886.70 18873.35 18982.23 19033.71 18450.98 18374.00
##  [305] 18191.32 17767.34 17697.96 17218.96 17715.63 17240.95 17147.11 17048.37
##  [313] 16416.19 16017.26 16958.53 17110.91 16708.90 17163.92 17041.45 17518.30
##  [321] 17865.23 17750.68 17191.25 17044.99 16819.59 17004.30 16085.44 15713.39
##  [329] 14952.61 16054.43 15836.36 16196.80 15967.17 16111.05 16052.05 15915.79
##  [337] 16140.34 16188.41 16026.76 16085.51 16746.55 16960.16 17014.78 16911.32
##  [345] 16783.15 16642.20 16852.35 16938.87 17233.75 17117.07 16974.45 16936.38
##  [353] 16724.81 17000.98 16892.33 17103.53 16878.96 16758.67 16164.16 16123.27
##  [361] 15732.82 15715.36 15749.84 15821.52 15751.13 15928.79 16381.22 16911.05
##  [369] 16848.03 16275.95 16874.44 16906.54 17363.62 17572.49 17439.30 17290.49
##  [377] 16666.05 16147.38 16106.72 16216.03 16579.01 16646.34 16652.80 16644.69
##  [385] 16646.66 16736.35 16654.60 16498.76 16757.35 16772.46 16834.84 17234.98
##  [393] 16955.73 16562.55 16642.23 16580.03 16675.45 16830.92 16668.41 16601.36
##  [401] 16019.18 15859.00 15919.58 15434.14 15599.66 15965.30 16169.11 16065.72
##  [409] 16238.35 14952.02 15309.21 15323.14 15566.83 15575.92 15682.48 15669.33
##  [417] 15378.99 15276.24 15106.98 15708.82 16095.65 16231.43 16385.89 16497.85
##  [425] 16723.31 16681.89 16810.22 16627.25 16620.29 16383.04 16664.82 16476.84
##  [433] 16569.27 16391.45 16083.11 16254.89 16254.45 16650.57 16764.97 16735.12
##  [441] 16919.92 16869.56 16596.51 16745.64 16486.01 16545.82 16598.19 16497.36
##  [449] 16597.30 16555.95 16360.71 16737.49 16725.36 16887.40 16926.84 16925.68
##  [457] 17081.98 17012.44 16958.77 16965.76 16672.92 16729.04 16614.24 16405.01
##  [465] 16519.29 16492.15 16807.62 16754.02 16544.56 16683.93 16465.40 16693.71
##  [473] 16449.84 16598.67 16735.65 16819.24 16899.10 16860.09 17024.76 16840.00
##  [481] 16774.24 16856.37 16900.12 16963.61 16998.91 17235.50 17184.59 17234.42
##  [489] 17365.25 17391.84 17336.42 17446.41 17425.02 17442.40 17134.68 16905.36
##  [497] 17177.21 17171.38 16251.54 17344.42 17374.79 17672.62 17668.15 17862.21
##  [505] 17862.63 17967.41 18106.02 18162.94 18381.22 18356.89 18307.04 18308.48
##  [513] 18513.12 18426.08 18274.99 18360.54 18496.69 18765.47 18996.37 19155.03
##  [521] 19250.52 19253.61 19273.79 19401.15 19391.60 19494.53 19444.49 19427.67
##  [529] 19403.06 19401.72 19145.14 19114.37 19594.16 19520.69 19454.33 19301.44
##  [537] 19364.67 19134.70 19287.28 18813.53 18894.37 19072.25 19137.91 18891.03
##  [545] 18787.99 19057.50 19402.39 19467.40 19368.85 19041.34 19148.08 18914.58
##  [553] 18918.20 18976.71 18910.78 19007.60 18907.67 19378.93 19459.15 19238.98
##  [561] 19437.98 19347.53 19234.62 19381.44 19379.87 19371.46 19283.54 19107.47
##  [569] 19118.99 19393.54 19564.80 19469.17 19379.14 19344.15 19254.03 19318.58
##  [577] 19604.61 19633.75 19609.50 19577.38 19590.14 19521.59 19455.88 19041.38
##  [585] 19085.31 19262.53 18985.59 19202.87 19217.48 19063.22 18909.26 18983.23
##  [593] 18810.25 18861.27 18597.06 18664.63 18797.88 18747.87 18552.61 18426.84
##  [601] 18418.59 18432.20 18430.49 18620.75 18875.88 19079.33 19289.43 19251.87
##  [609] 19196.74 19445.70 19895.70 19843.00 19900.09 19961.55 19883.90 19869.85
##  [617] 19919.82 19814.88 19553.86 19590.76 19678.28 19613.28 19742.98 19686.84
##  [625] 19677.85 19650.57 19860.03 20177.28 19979.90 19984.62 19909.26 20013.26
##  [633] 19908.58 19898.75 19883.52 19831.82 19943.26 20067.75 20230.41 20138.79
##  [641] 20110.51 20132.67 20153.35 20225.09 20130.41 20220.30 20033.43 20055.80
##  [649] 20081.63 19994.06 19929.09 20080.98 20195.48 20098.38 20099.81 20118.86
##  [657] 19999.91 20020.86 20144.59 20099.75 19975.67 19955.20 20050.16 20079.64
##  [665] 19959.84 19925.18 20080.04 20029.26 19952.33 20055.89 19996.01 19738.71
##  [673] 19729.74 19537.10 19753.31 19729.28 19702.63 19470.41 19393.13 19383.84
##  [681] 19434.64 19353.77 19452.61 19449.90 19362.55 19506.54 19646.24 19691.47
##  [689] 19385.81 19357.97 19396.52 19274.82 19545.77 19776.62 19865.82 19807.44
##  [697] 19909.50 20299.38 20310.46 20347.48 20296.45 20397.58 20330.19 20267.05
##  [705] 20363.11 20356.28 20400.78 20614.07 20626.66 20690.71 20823.51 20881.27
##  [713] 20954.72 21155.18 21255.56 21336.12 21363.05 21448.52 21457.64 21696.65
##  [721] 21805.17 21707.62 21739.78 22008.45 22011.67 22011.61 22420.08 22539.12
##  [729] 22539.12 22548.35 22937.60 22913.82 22868.71 22681.42 22380.99 22380.01
##  [737] 22028.32 22351.12 22396.80 22261.76 22416.48 22523.15 22550.85 22495.99
##  [745] 22486.24 22597.20 22724.96 22819.03 22707.16 22622.38 22177.04 22498.03
##  [753] 22811.08 22938.73 22866.17 22758.07 22694.45 22553.22 22901.77 22868.00
##  [761] 22891.72 22866.10 22902.76 22911.21 22783.98 22764.94 23506.33 23714.53
##  [769] 23849.99 23788.20 23710.43 23653.82 23951.81 23868.34 23763.37 23808.06
##  [777] 23816.33 24124.15 23940.78 23669.49 23631.88 23629.34 23291.97 23098.29
##  [785] 23486.11 23274.53 22682.08 21610.24 21645.37 21890.86 21382.62 21244.68
##  [793] 21154.17 21464.98 21720.25 21925.10 21970.81 21736.44 21892.78 22153.63
##  [801] 22389.86 22068.24 21724.47 21181.64 21042.09 21417.76 21252.72 21368.07
##  [809] 21469.20 21824.03 21968.10 21777.29 21803.95 21676.51 21480.90 21380.97
##  [817] 21591.99 20617.86 20766.10 21317.32 21031.31 21159.08 21292.29 21319.55
##  [825] 21645.42 21567.52 21678.26 21794.32 21687.10 21660.28 21778.74 21835.53
##  [833] 21847.59 22158.20 22191.18 22162.24 22088.04 22278.12 22215.32 22319.61
##  [841] 22467.87 22472.78 22467.16 22508.69 22408.88 22758.48 22865.86 22818.02
##  [849] 22717.23 22838.37 22930.36 22960.34 22689.74 22437.01 22450.79 22358.43
##  [857] 22018.52 22201.82 22171.35 22475.94 22539.54 22625.73 22823.26 22694.50
##  [865] 22804.04 22878.35 22966.38 22738.61 22851.75 22680.33 22278.48 22555.43
##  [873] 22693.04 22516.83 22338.15 22342.00 22271.77 22270.39 22304.51 21811.93
##  [881] 21785.54 21546.99 21788.14 22052.18 22196.89 21932.21 22187.96 22597.35
##  [889] 22597.35 22697.36 22794.19 22764.68 22697.88 22396.99 22510.48 22614.25
##  [897] 22586.87 22712.75 22544.84 22553.72 22512.53 22525.18 22507.32 22662.74
##  [905] 22644.31 22598.39 22298.08 21857.43 22356.08 22204.22 22192.04 22270.38
##  [913] 22199.00 22219.73 22362.55 22410.82 22601.77 22799.64 22813.47 22848.22
##  [921] 22869.50 22865.15 22696.90 22580.83 22487.94 22307.06 22373.09 22664.69
##  [929] 22604.61 22821.32 23094.67 23420.54 23672.52 23674.93 23869.93 23940.26
##  [937] 24033.79 23796.74 24120.04 24245.76 24270.62 24110.96 23975.62 23783.72
##  [945] 23469.39 23506.04 22590.86 22694.66 22271.30 22549.24 22841.12 22658.16
##  [953] 22532.08 22614.82 22010.78 22091.18 21268.73 21184.60 21149.80 21457.29
##  [961] 21920.46 21687.65 22243.66 21898.99 22085.80 22486.92 21810.52 21803.62
##  [969] 21821.16 21583.12 21507.54 21812.00 21952.40 22262.60 22351.06 22036.05
##  [977] 21501.62 21678.68 21219.50 21148.02 21602.75 21816.19 21374.83 21506.88
##  [985] 21115.45 20987.92 20166.19 20077.62 19561.96 20038.97 20204.04 20427.06
##  [993] 20163.80 20359.70 20442.75 20402.27 20666.07 20593.72 20574.63 20773.56
## [1001] 20649.00 20664.64 20556.54 20773.49 20788.39 20883.77 20844.45 20333.17
## [1009] 20864.21 21139.71 20900.63 21302.65 21431.49 21464.23 21425.51 21528.23
## [1017] 21449.39 21556.51 21385.16 21602.69 21822.04 21726.28 21596.81 21456.01
## [1025] 21125.09 21290.24 21287.02 21450.85 21566.85 21627.34 21428.39 21378.73
## [1033] 21205.81 21509.03 21505.31 21713.21 21724.95 21807.50 21761.65 21802.59
## [1041] 21687.57 21711.38 21870.56 22169.11 22221.66 22277.97 22090.12 22259.74
## [1049] 22200.00 22307.58 22258.73 21923.72 21602.59 21402.13 21344.92 21191.28
## [1057] 21067.23 21188.56

Alternativamente è possibile selezionare una colonna utilizzando il nome di colonna preceduto dal simbolo di dollaro. Il seguente codice seleziona la colonna di nome IXIC e ne salva i valori in un nuovo oggetto (di tipo vettore) denominato x:

x = fdata$IXIC
length(x)
## [1] 1058

4.3 Analisi esplorativa

Dato un vettore di dati la funzione summary restituisce i valori dei principali indici statistici di posizione:

x = fdata$DJI
summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15666   17763   19839   20670   24357   26828

Per calcolare misure di variabilità è possibile utilizzare la funzione var (varianza campionaria) o sd (standard deviation, data dalla radice della varianza):

var(x)
## [1] 11308571
sd(x) 
## [1] 3362.822

4.4 Grafico di serie storiche

Si intende rappresentare graficamente le serie storiche dei prezzi per i titoli disponibili. Il grafico finale avrà le date sull’asse delle x e i prezzi sull’asse delle y. Iniziamo rappresentando la serie storica di DJI:

plot(fdata$DJI) 

Ogni punto nel grafico rappresenta un giorno finanziario e la sua posizione nel grafico è data dal prezzo del titolo. Si noti che per il momento sull’asse delle x viene rappresentata, in maniera automatica, la variabile Index data da una sequenza regolare da 1 al numero totale di dati disponibili per la serie storica (in questo caso 1058). L’utilizzo dei punti non è la scelta migliore per rappresentare una serie storica perchè l’andamento temporale della serie non viene rappresentato chiaramente. Il codice che segue utilizza l’argomento type="l" (“l” sta per linea) al fine di avere una rappresentazione di tipo “linea” della serie storica:

plot(fdata$DJI,type="l") 

Per includere le date nell’asse delle x si va a specificare due vettori all’interno della funzione plot (il primo vettore verrà utilizzato per l’asse delle x, il secondo per l’asse delle y). Si noti che, essendo il vettore delle date di tipo chr (come visto precedentemente con str) è necessario trasformarlo in un vettore di tipo Date. A tal fine si applica la funzione as.Date a fdata$Date (si veda anche ?as.Date):

plot(as.Date(fdata$Date), fdata$DJI,
     type="l") 

Il passo successivo consiste nel rappresentare più serie storiche nello stesso grafico (ad esempio DJI e N225). La prima serie storica si rappresenta utilizzando la funzione plot mentre la seconda la funzione lines che va ad aggiungere una nuova linea ad un grafico esistente:

plot(as.Date(fdata$Date) , fdata$DJI,
     type="l")
#aggiungere una nuova serie storica
lines(as.Date(fdata$Date) , fdata$N225,
      col = "red") #colore linea

Si noti che la serie del titolo N225 non è visibile perchè ha un range di valori completamente diverso (controllare usando summary) e non incluso nell’intervallo di valori utilizzato per l’asse delle y e scelto in automatico da R. Per specificare in maniera diversa il range di valori dell’asse delle y si utilzza l’argomento ylim della funzione plot (andranno specificati il valore minimo e massimo per l’asse delle y):

plot(as.Date(fdata$Date) , fdata$DJI,
     type="l" , ylim = c(0,27000))
lines(as.Date(fdata$Date) , fdata$N225,
      col = "red")

Utilizzando lo stesso approccio è quindi possibile rappresentare graficamente tutte le serie storiche dei prezzi:

plot(as.Date(fdata$Date) , fdata$DJI,
     type="l" , ylim = c(0,27000), 
     xlab="Date", ylab="Prezzi",
     main="Serie storiche")
lines(as.Date(fdata$Date) , fdata$N225,
      col = "red")
lines(as.Date(fdata$Date) , fdata$IXIC,
      col = "green")
lines(as.Date(fdata$Date) , fdata$BTC.EUR,
      col = "orange")
lines(as.Date(fdata$Date) , fdata$GSPC,
      col = "blue")
lines(as.Date(fdata$Date) , fdata$STOXX50E,
      col = "purple")

Si noti che gli argomenti xlab, ylab e main della funzione plot vengono utilizzati per specificare, rispettivamente, le etichette dell’asse delle x, dell’asse delle y e il titolo del grafico.

E’ anche possibile aggiungere una legenda al grafico utilizzando il seguente codice (non richiesto per l’esame!):

plot(as.Date(fdata$Date) , fdata$DJI,
     type="l" , ylim = c(0,30000), 
     xlab="Financial dates", ylab="Prices",
     main="Time series plot")
lines(as.Date(fdata$Date) , fdata$N225,
      col = "red")
lines(as.Date(fdata$Date) , fdata$IXIC,
      col = "green")
lines(as.Date(fdata$Date) , fdata$BTC.EUR,
      col = "orange")
lines(as.Date(fdata$Date) , fdata$GSPC,
      col = "blue")
lines(as.Date(fdata$Date) , fdata$STOXX50E,
      col = "purple")
legend("topleft", 
       lty=rep(1,6), #stile linea (1=linea continua)
       col=c("black","red","green","orange","blue","purple"),
       legend = colnames(fdata)[2:ncol(fdata)],
       cex=0.5) #per ridurre il font size

4.5 Esercizi lab 2

4.5.1 Esercizio 1

Scaricare dall’e-learning i tre file CSV JNJ.csv, PFE.csv e NVS.csv (fonte dei dati: https://finance.yahoo.com/). Essi si riferiscono alle serie storiche dei prezzi dei seguenti titoli per il periodo 3/10/2013 - 3/10/2018: Johnson & Johnson (JNJ), Pfizer Inc. (PFE) e Novartis AG (NVS). Ogni file contiene le seguenti variabili:

  • Date: data
  • Open: prezzo di apertura
  • High: prezzo massimo registrato dal titolo nella giornata di negoziazione
  • Low: prezzo minimo registrato dal titolo nella giornata di negoziazione
  • Close: prezzo di chiusura
  • Adj.Close: prezzo di chiusura aggiustato per dividendi e frazionamenti
  • Volume: quantita’ complessiva di titoli scambiati nella giornata

Importare i 3 file in R creando 3 oggetti diversi con nomi JNJ, PFE e NVS. Fate attenzione al separatore di campo!

  1. Visualizzare le prime righe dei 3 dataframe. Verificare inoltre la dimensione dei 3 dataframe e la loro struttura. Si riferiscono i dati alle stesse date?

  2. Considerare solamente per i 3 dataframe la variabile Adj.Close. Calcolare per i tre titoli delle statistiche descrittive. Quale titolo presenta maggiore variabilità?

  3. Utilizzando la funzione quantile (vedere ?quantile) calcolare il quantile-0.99 per i prezzi Adj.Close di JNJ. Commentare il valore.

  4. Per i prezzi Adj.Close di JNJ si considerano estremi i valori inferiori al quantile-0.1 o superiori al quantile-0.99.

  • Calcolare quanti sono in valore assoluto i valori estremi. Suggerimento: in questo caso la condizione e’ doppia e di tipo OR che in R si traduce con l’operatore |.
  • Quanto vale la media dei prezzi estremi?
  • In quali date si verificano i valori estremi?
  1. Rappresentare sullo stesso grafico le tre serie storiche dei prezzi Adj.Close

  2. Per ogni titolo calcolare la percentuale di prezzi superiori alla media. Per quale titolo si osserva una percentuale maggiore di prezzi maggiori della media?

4.5.2 Esercizio 2

Importare i dati del file worldbankdata.csv che contiene per 25 paesi europei i dati relativi alle seguenti variabili: Population density (people per sq. km of land area) 2016, Electric power consumption (kWh per capita) 2014, Proportion of seats held by women in national parliaments (%) 2016, Mobile cellular subscriptions 2016, Rail lines (total route-km) 2014

  1. Estrarre tutti i valori disponibili per la variabile pop_density.

  2. Calcolare la mediana e la media per la variabile pop_density.

  3. Selezionare tutti i dati disponibili per il paese in 3a riga.

  4. Selezionare tutti i dati disponibili per il paese il cui nome Country e’ Croatia (in questo caso sarà necessario vedere quale nome di paese è esattamente uguale (==) a "Croatia").

  5. Trovare il paese con la maggiore densità di popolazione utilizzando all’interno del proprio codice la funzione max.