RExcel: istruzioni per l'uso (e l'abuso)

Cren

Nuovo Utente
Registrato
6/10/09
Messaggi
10.618
Punti reazioni
641
Vi guiderò passo a passo nell'installazione, la configurazione e l'utilizzo di R interfacciato con Excel. Mi prenderò parecchio tempo, quindi non aspettatevi decine di messaggi alla settimana (lo dico ai frequentatori più assidui). Prima una piccola introduzione.

Cosa ci faccio con R?

Parliamo di analisi dei dati. Che questa si tramuti in una pessima occasione per fare selvaggiamente overfitting sui vostri back test con equity a pene d'asino o, al contrario, si traduca in un ambiente operativo più rigoroso dove corroborare le vostre intuizioni e le vostre idee sul passato... è un problema vostro. Io qui mi limito a fornirvi gli strumenti.

Perchè RExcel?

Da quando mi è venuto il pallino della statistica e dell'econometria ho provato diversi programmi e ambienti di lavoro: Excel, Matlab, gretl, EViews (pochissimo) ed R. Nel complesso ho trovato che la combinazione di Excel con R è quella un gradino sopra tutti per i seguenti motivi:
  • consente di gestire in un ambiente visivo "facile" e "amichevole" come quello di Excel tutti i dati che volete;
  • permette di importare ed esportare matrici, vettori etc. in meno di due secondi senza dover salvare nemmeno un .xls;
  • la libreria di pacchetti e funzioni disponibili gratuitamente con R è più che immensa: è sterminata. Se c'è qualcosa che volete fare, sicuramente c'è almeno un pacchetto gratuitamente scaricabile direttamente da R che la fa.
Quanto sarò costretto a dover imparare codice di programmazione di R?

Poco, e comunque ci penso io. E comunque dopo un po' ci si fa l'abitudine. In linea di massima dovete pensare che vi muoverete tra due estremi: fare tutto, fin dove potete, in ambiente Excel e lasciare a R solo i compiti cui proprio non riuscite a venire a capo; tenere solo i dati di partenza in Excel e fare tutto con la console di R (e qui vedrete che un simpatico oggettino chiamato «RCommander» verrà in vostro aiuto). Dopo poco troverete il vostro equilibrio :D

Ci sarà un punto in cui dovrò comprare qualcosa?

No. Dall'inizio alla fine è tutto gratuito.

Cominciamo con l'installazione.
 
Ultima modifica:
Installazione

Recatevi al seguente indirizzo: http://rcom.univie.ac.at/download.html.

In cima alla pagina troverete RAndFriends, che è un comodo pacchetto autoinstallante e che ha bisogno di davvero poche spiegazioni: vi mette su PC tutto ciò di cui avete bisogno per iniziare, ovvero:
  • R 2.14.1
  • rscproxy 1.3-1
  • rcom 2.2-1
Sarà installato anche RExcel. Durante l'installazione, se non ricordo male, salterà fuori una serie di messaggi di avviso: molto prolissi, ma niente paura... va tutto bene :D
 

Allegati

  • Immagine.png
    Immagine.png
    22,4 KB · Visite: 106
OO ........Ottimo Oscar

Il linguaggio di R me lo imparo lo stesso però......

OK!:)
 
Bellissima iniziativa, è una cosa che proprio mi serviva, grazie. Seguirò con interesse anche se interverrò pochissimo per ignoranza.
 
Come far partire il baraccone

Una volta che l'installazione sarà completata, vi ritroverete nella solita barra di Excel una voce addizionale (non fate caso al fatto che probabilmente vi mancherà anche la voce «Bloomberg», quella non si usa mai :asd:), cioè «RExcel».

In alternativa è probabile che la procedura di installazione vi metta da qualche parte il collegamento «RExcel with RCommander». Se decidete, d'ora in avanti, di aprire RExcel con quel collegamento non avrete bisogno di seguire la procedura che riporto nei prossimi messaggi.
 

Allegati

  • img.png
    img.png
    22,8 KB · Visite: 1.136
  • Immagine.GIF
    Immagine.GIF
    18,1 KB · Visite: 1.132
Cosa vedo quando faccio partire RExcel da icona?

Individuata una delle due simpatiche icone qua sotto,

28-0fd7f27bdb.jpg
,​

a seconda della versione di Excel che avete sulla macchina, seguite le istruzioni per la vostra versione di Excel.

Excel 2007 (o superiore)

Troverete quello che cercate alla voce «Add-Ins».

Nel frattempo si sarà aperto anche un oggettino misterioso, una schermata simile a una console chiamata «RCommander».

Excel 2003

Come vi ho mostrato, in Excel 2003 troverete la voce «RExcel» direttamente nella barra in alto, e al solito si aprirà anche «RCommander».

Una rapida panoramica, un po' disordinata, nell'immagine qui sotto:

29-7f730a4988.jpg
 
E se voglio far partire RExcel mentre mi trovo già in Excel?

Niente paura. Anche qui è tutto molto semplice.

Excel 2007 (o superiore)

Troverete quello che cercate alla voce «Add-Ins».

30-b9ad7d3d67.jpg

Ora è il momento di connettersi a R. Cliccate su «R Start» per far partire la console di R, e successivamente «RCommander» → «with Excel menus».

31-5b08f031ad.jpg

Excel 2003

Come vi ho mostrato, in Excel 2003 troverete la voce «RExcel» direttamente nella barra in alto. Ora è il momento di connettersi a R. Cliccate su «R Start» per far partire la console di R.

32-5ffa3a841b.jpg

Successivamente «RCommander» → «with Excel menus».

33-18dc39b640.jpg
 
Ok, abbiamo preparato il tavolo da lavoro

Se tutto è andato liscio come l'olio, vi ritroverete davanti il vostro nuovo ambiente di lavoro; questo è composto da tre finestre, cui eventualmente se ne aggiungeranno altre in seguito (per esempio, quando deciderete di fare un grafico mediante R e non attraverso Excel, si aprirà un'altra finestrella. Oppure quando userete la funzione di aiuto etc.).

Procediamo a descrivere brevemente cosa avete davanti, cosa che fondamentalmente si riduce a spiegare a cosa serve R Commander.

Microsoft Excel

C'è poco da dire, è il solito vecchio Excel. Noterete tuttavia una piccola novità, che vi ho cerchiato in rosso: una nuova barra degli strumenti che racchiude un piccolo universo di funzioni statistiche di base; illustrarle singolarmente una per una esula dagli scopi di questa guida, diciamo che potrete masturbare un po' i dati che avete in Excel attraverso delle comode GUI. Per adesso non siete ancora in grado di farlo perchè R non legge alcun set di dati da Excel, ma dopo risolviamo questo problema e vedrete che è facilissimo.

R Console

Tirate un sospiro di sollievo, questa non serve a niente. Infatti ve l'ho messa solo per completezza, ma appena comincerete a lavorarci la terrete minimizzata. Serve solo per una cosa: scaricare pacchetti che non si trovano già nella versione di R che avete sul PC, perchè da lì potete interfacciarvi ad uno dei tantissimi "mirror" da cui tirare giù i pacchetti con le funzioni autoinstallanti. Vedremo in futuro come si fa quando ne avremo bisogno.

R Commander

Ecco a voi il vostro miglior amico! Questo oggettino è quanto di più comodo mi è capitato di incontrare in quei programmi che richiedono l'uso di console. In pratica R Commander si divide in tre parti:
  1. Script Window
  2. Output Window
  3. Messages
le quali non sono altro che una differente suddivisione di ciò che di norma si fa con la console di R. Perchè è comodo? E' comodo perchè, se in R sbagliate un codice, avete bisogno di riscriverlo, fate uscire un risultato che occupa sei pagine etc. avrete da bestemmiare per diversi motivi: riscrivere il codice nuovamente, scorrere in su e in giù i risultati per ritrovare l'input che avete scritto etc.

R Commander invece vi dà questo:
  • nella Script Window voi fate tutte le prove coi codici che volete, tagliate, modificate, copiate, incollate etc. Lì tutto resta e può essere modificato a piacimento. Potete anche scrivere «Ciao, mamma!», il programma non fa una piega;
  • quando pensate di avere un codice che secondo voi funziona, o se volete provare un codice che avete messo perchè non siete sicuri che vi piace, vi ci posizionate sopra con il puntatore e cliccate su «Submit» (ve l'ho cerchiato parzialmente a destra in rosso, perchè non ci stava nella schermata);
  • quando avete un listato che vi piace, ve lo salvate e ce l'avrete a disposizione quando volete;
  • tutto quello che c'è nella Script Window non viene mai "contagiato" dagli output che producete, quindi avrete la possibilità di scrivere oppure copiare & incollare interi listati senza dovervi districare tra un'infinità di vettori di risultati (quando avete a che fare con serie storiche questa evenienza è drammaticamente frequente).
Ovviamente nell'Output Window vedrete invece i risultati dei vostri codici... e in Messages quel che il programma vi dice, che 9 volte su 10 sono messaggi di errore che vi dicono cosa avete scritto che non andava nel vostro listato.

Per oggi ci fermiamo qui, se ho tempo e voglia magari andiamo avanti nel fine settimana altrimenti continuo lunedì.
 

Allegati

  • Immagine.GIF
    Immagine.GIF
    56,3 KB · Visite: 159
Ottima iniziativa questa di pubblicare un tutorial il giorno della Befana, uno dei pochi giorni in cui non lavoro :D

Ho scaricato il prg. ma mi compare - gia' per ben due volte - il seguente mex che impedisce poi l'installazione. Il download finisce regolarmente, ma il prg. di installazione e' corrotto.
 

Allegati

  • Test.JPG
    Test.JPG
    16 KB · Visite: 774
TIP : Prelevare dati dagli appunti


Piccola tip: voglio caricare su R una tabella prelevandola da un programma (non necessariamente Excel) usando gli appunti (Copia - Incolla per intenderci). In questo caso alcune barre del NZQ di stasera :

Codice:
> v <- read.delim('clipboard', header = FALSE, dec =',')         #read data from the clipboard, no header, decimal sep. is comma
> prezzi <- c(v$V4)                                              #convert fourth column of the table in array
> n <- c(1:length(prezzi))
> plot(n, prezzi, type='l')
La prima riga carica la tabella, la seconda converte in un vettore la quarta colonna (i prezzi Close), la terza e la quarta permettono di plottare i dati.

 
Ultima modifica:
Ho scaricato il prg. ma mi compare - gia' per ben due volte - il seguente mex che impedisce poi l'installazione. Il download finisce regolarmente, ma il prg. di installazione e' corrotto.
Non saprei, P.A.T., un mio collega l'ha scaricato e installato da lì l'altro ieri e non ha dato problemi. Forse potresti provare a scaricare singolarmente le componenti, le trovi scorrendo verso il basso la pagina di cui ho pubblicato il collegamento.

Piccola tip: voglio caricare su R una tabella prelevandola da un programma (non necessariamente Excel) usando gli appunti (Copia - Incolla per intenderci). In questo caso alcune barre del NZQ di stasera:

Codice:
> v <- read.delim('clipboard', header = FALSE, dec =',')
> prezzi <- c(v$V4)
> n <- c(1:length(prezzi))
> plot(n, prezzi, type='l')
La prima riga carica la tabella, la seconda converte in un vettore la quarta colonna, la terza e la quarta permettono di plottare i dati.


NZQ sarebbe l'indice Nasdaq Composite (^IXIC) ?
Se sei connesso a internet, perché non lo scarichi direttamente da yahoo?
Codice:
IXIC <- read.csv("http://ichart.finance.yahoo.com/table.csv?s=[color=blue]^IXIC[/color]&ignore=.csv", stringsAsFactors=F)
head(IXIC)              # vediamo le prime sei righe dei dati
y <- IXIC[,5]           # peschiamo la colonna dei Close
x <- c(length(y):1)     # i dati di yahoo sono rovesciati
plot(x,y,"l")
title(main="Indice Nasdaq Composite")  # titolo del grafico

sostituisci la parte in blue nella prima riga con uno qualsiasi dei 170000 ticker di yahoo per scaricare lo storico che vuoi, EOD dalla nascita del file.
Con poca complicazione puoi fissare, nella prima istruzione, la frequenza (daily, weekly, monthly) e le date di partenza e fine, ma tutto sommato sarebbe un lavoro inutile: meglio installare il package quantmod che fa il tutto (e parecchio di più) molto meglio :-)

Bye, non ho più l'età per mangiare la pizza alle 2 di notte...
Paolo e surcontre, vi vedo carichi e la cosa mi piace molto :cool:

Però mi azzarderei a chiedervi la cortesia di organizzare i vostri messaggi in modo leggermente più organico, ovvero con un bel titoletto in grassetto e un paio di righe che riassumono cosa fa il listato che pubblicate. In questo modo questa discussione potrebbe diventare un'ottima e funzionale raccolta di listati utili, anche perchè siamo d'accordo che R può fare talmente tante cose che sicuramente nessuno di noi le conosce tutte e condividerle qui è il modo più veloce per scoprire che qualcosa che si è sempre fatto in quattro passaggi si può fare in uno solo :)
 
Esportare dati da Excel in R

Come ho scritto precedentemente, non è compito di questa piccola guida quello di insegnarvi come utilizzare tutti gli strumenti che trovate nella barra degli strumenti in Excel.

Se volete approfondire il tema, potete consultare il manuale che vi segnalo (che tra l'altro è quello da cui pesco alcune immagini), il quale spiega in dettaglio come usare la tool bar e altre particolarità:


Per esportare un vettore o una matrice di dati in R da Excel dovete selezionare le celle che vi interessano, aprire il solito menu col destro e selezionare «Put R Var». Notate che, rispetto a Excel tradizionale, RExcel ha aggiunto un'ampia lista di voci al solito menu.

Una volta che avrete scelto di esportare i dati, dovrete dare un nome alla matrice o al vettore in modo da poterlo facilmente richiamare in R Commander. Potete scegliere o meno di includere i nomi di righe e colonne presi da Excel qualora la matrice selezionata non fosse interamente composta da numeri. Questi appariranno in R esattamente come li vedreste in Excel quando visualizzate l'oggetto importato.
 

Allegati

  • Immagine.png
    Immagine.png
    26,6 KB · Visite: 732
  • Immagine1.png
    Immagine1.png
    4,4 KB · Visite: 717
Un primo contatto con R Commander

Posizionatevi in R Commander e digitate il nome del vettore o della matrice nella Script Window, poi premete «Submit».

Nella Output Window vedrete il risultato. Notate che questo non è organizzato, ad esempio, come una serie temporale o altri oggetti particolari: infatti se il vettore che avete caricato è ad esempio costituito da una serie di prezzi di uno strumento finanziario, R non è ancora in grado (per il momento) di interpretarlo come tale.

Per mostrarvi il funzionamento della Script Window, vi faccio vedere che lì dentro potete fare un po' quel che vi pare. Io, ad esempio, ho scelto di duplicare tutti i valori del vettore: ho scritto nome_vettore * 2, ho selezionato «Submit» e R mi ha dato il risultato.

Talmente facile da essere quasi noioso, no? :D
 

Allegati

  • Immagine.png
    Immagine.png
    26 KB · Visite: 736
Nel caso interessasse, l'installazione qui descritta è quella ottimale anche per Amibroker, che richiede, in più, solamente l'installazione del proprio plugin (DLL) per R.
:)
 
Tre comandi essenziali

Indipendentemente dal listato che avete intenzione di mettere in piedi, esistono tre comandi che rappresentano un percorso obbligato in fase di progettazione e che è bene evidenziare fin da ora.

Ogni volta che vi sedete al vostro "tavolo da lavoro", cioè la tela bianca su cui mettere codice, vi conviene ritagliarvi un piccolo spazio per questi tre comandi:
  1. library(..., pos=4)
  2. ??...
  3. help(...)
Vediamo in dettaglio:
  1. Questo comando serve a caricare i pacchetti che R utilizza per fare tantissime cose senza richiedervi di mettere giù ogni volta papiri di codice. Quando aprite R sono caricate solo le funzioni di base, ma è sufficiente porre al posto dei puntini il nome del pacchetto che volete caricare per vedere rapidamente ampliata la libreria di funzioni a disposizione. Nell'esempio in immagine io ho scelto di caricare il pacchetto forecast. Notate bene che potete caricare i pacchetti che preferite anche dalla barra degli strumenti di RExcel in «Tools» → «Load package(s)», comando che non fa altro che aggiungere al vostro listato la riga di codice come illustrato poc'anzi. Se dovete caricare più di un pacchetto (molto probabile) è sufficiente separare i comandi library(..., pos=4) con un punto e virgola e R Commander, trovandoli sulla stessa riga così separati, li eseguirà uno dietro l'altro. Nota bene: se andate sul sito di R (http://cran.r-project.org/web/packages/available_packages_by_name.html) vedete che la quantità di pacchetti è impressionante; non tutti sono immediatamente disponibili per R Commander. Se c'è qualche pacchetto non incluso che volete caricare, potete usare la console di R seguendo il percorso «Packages» → «Load package...», che vi permetterà di collegarvi a qualche mirror e installare il tutto.
  2. Questo comando utilizza la logica fuzzy per cercare nell'elenco di tutti i pacchetti di R quelli che contengono la parola oggetto di ricerca specificata al posto dei puntini. Supponiamo quindi che stiate cercando un pacchetto che fa quello che cercate ma non ne conosciate il nome: nell'esempio il forecast di serie storiche. Inserite «forecast» al posto dei puntini e, dopo qualche secondo, si aprirà una schermata come quella allegata «R Information». Qui trovate il nome del pacchetto che potrebbe contenere funzioni simili a quella che cercate, e anche una breve descrizione per orientarvi nella scelta.
  3. Questo comando costituisce il vostro libretto di istruzioni per tutte le funzioni più complesse che volete inserire nel vostro listato: al posto dei puntini, mettere il nome della funzione (questa volta dovete essere precisi!) di cui volete capire il funzionamento, ovvero dati in ingresso, argomenti e risultato. Si aprirà un HTML come quello che vedete allegato e voi potrete leggere istruzioni esaustive per ogni funzione che richiamate. Ovviamente la funzione di aiuto va benissimo anche con comandi specifici di R, si trattasse anche solo di capire come funziona una radice quadrata... non siete limitati ai pacchetti di funzioni, insomma. Nell'esempio vediamo che sto visualizzando le istruzioni per costruire un modello autoregressivo a media mobile integrato (eventualmente integrato di ordine parziale).
 

Allegati

  • img.png
    img.png
    19,3 KB · Visite: 688
  • Immagine.PNG
    Immagine.PNG
    17,9 KB · Visite: 698
  • img1.PNG
    img1.PNG
    59,6 KB · Visite: 724
Il primo listato: dai prezzi ai rendimenti

Oggi scriviamo il nostro primo listato.

L'obiettivo sarà quello di caricare una serie storica di prezzi (io ho scelto la serie storica giornaliera dello S&P 500 dal 4 maggio 1998 ad oggi), visualizzarla, calcolarne i rendimenti logaritmici, visualizzarli e mettere il tutto in una matrice.

Io ho caricato il vettore di prezzi con il nome SPX.Index direttamente da Excel come vi ho mostrato.

Copiate & incollate il listato nella Script Window di R Commander, posizionatevi sulla riga che volete eseguire di volta in volta e premete «Submit».
Codice:
[COLOR="Red"]# --- Esempio di listato R per FOL by Cren --- #
# --- Carico il pacchetto "timeSeries" --- #
[/COLOR]
library(timeSeries, pos=4)

[COLOR="red"]# --- Faccio capire a R che "SPX.Index" è una serie storica e la visualizzo --- #[/COLOR]

SPX.Index <- as.timeSeries(SPX.Index) ; plot(SPX.Index, main = "Indice S&P 500 giornaliero", ylab = "Prezzo", xlab = "Osservazione")

[COLOR="red"]# --- Calcolo i rendimenti logaritmici e li visualizzo --- #[/COLOR]

r <- returns(SPX.Index, method = "continuous") ; plot(r, main = "Indice S&P 500 giornaliero", ylab = "Rendimento logaritmico", xlab = "Osservazione")

[COLOR="red"]# --- Creo una matrice con dentro prezzo e rendimento --- #[/COLOR]

M <- matrix(c(SPX.Index, r), length(r), 2) ; M
 

Allegati

  • img.png
    img.png
    7,5 KB · Visite: 661
  • img1.PNG
    img1.PNG
    8,1 KB · Visite: 659
Torniamo in Excel

Niente di più facile, adesso, che rimettere tutto in Excel: è sufficiente posizionarsi in una cella vuota, col destro richiamare il menu contestuale, selezionare «Get R Value» e mettere il nome della matrice nella casella che appare: istantaneamente in Excel sarà caricata la vostra matrice occupando tutto lo spazio necessario.

Se dovessero esserci sovrascritture con qualcosa che era già presente in quelle celle, RExcel chiederà conferma per la sovrascrittura.

(Vedo adesso che nell'immagine c'è un piccolo errore, perchè mi ha accodato la chiusura di ieri in cima alla matrice... Niente paura, è solo perchè passando ai rendimenti la lunghezza del vettore è pari a quella dei prezzi - 1 e io ho usato quella lunghezza per costruire la matrice... Una piccola svista :D).
 

Allegati

  • img.png
    img.png
    17,1 KB · Visite: 639
  • img1.PNG
    img1.PNG
    4 KB · Visite: 642
  • img2.PNG
    img2.PNG
    15,8 KB · Visite: 649
Sarà installato anche RExcel. Durante l'installazione, se non ricordo male, salterà fuori una serie di messaggi di avviso: molto prolissi, ma niente paura... va tutto bene :D


Ok, niente paura, ma dovresti consigliarci cosa installare o meno.

Flaggo o deflaggo i 4 box ? :confused:
 

Allegati

  • Cattura.JPG
    Cattura.JPG
    37,8 KB · Visite: 640
Indietro