Log-linearizzazione del modello RBC standard

In questo breve documento ripercorro i passaggi necessari alla log-linearizzazione del modello Real Business Cycle (RBC) standard. Si tratta di un testo scritto nell’ambito della preparazione agli esami che vuole illustrare alcuni passaggi chiave e trucchi di questa tecnica molto utilizzata nell’ambito della macroeconomia “moderna”.

Vale la pena sottolineare che la log-linearizzazione porta anche diverse controindicazioni, in particolare

  • è un’approssimazione valida solo in prossimità dello stato stazionario (steady-state)
  • non considera termini quadratici, eliminando la dimensione del rischio (variazioni) riducendo il ciclo economico ad un sistema di equazioni lineari

Clicca qui per visualizzare

Distribuzione empirica congiunta di 2 variabili. Istogramma in R

Motivazione

Di recente ho avuto la necessità di creare con R un istogramma per rappresentare la distribuzione empirica congiunta di 2 variabili, nella fattispecie i rendimenti di 2 titoli con lo scopo di mostrare lo shape della distribuzione. In Excel è infatti possibile creare l’istogramma per una variabile, ma non per due congiuntamente. Prima di approcciare direttamente il problema, ho googlato un po’ l’argomento senza però trovare una soluzione “pronta all’uso” pienamente soddisfacente (ho trovato diverse soluzioni ma ognuna aveva qualche problema). Di seguito descrivo come ho risolto il problema, mentre il risultato è l’immagine qui sotto:Rplot

Soluzione

Personalmente (non posso certo considerarmi esperto di R), la maggiore difficoltà nel generare un simile grafico in R è stata la creazione della matrice di frequenze congiunte, ossia gli incroci delle frequenze della variabile nelle N classi definite. Tuttavia, andando per ordine:

#1: ho scaricato i dati da Yahoo Finance, nella fattipsecie mensili (ma la frequenza in questo caso non è influente). Vedi qui la procedura. Ovviamente ciò che mi interessa  sono i prezzi di chiusura. Clicca qui per vedere il file che ho utilizzato, dove la prima colonna contiene le date, la seconda i prezzi di chiusura mensili del titolo UBS e la terza colonna i prezzi di chiusura mensili del titolo Novartis.

#2: ho importato i dati (formato csv) dei prezzi scaricati al punto #1 con il semplice comando.

price <- read.csv("~percorso/nomefile.csv",sep=";",header=TRUE)

#3: a partire dai prezzi, genero i rendimenti con questo codice (è un modo di generare i rendimenti, non l’unico possibile)

matriceprezzi=as.matrix(price[,2:3])
differenza=diff(matriceprezzi)
rendi=differenza / price[1:length(price),2:3]

#4: creo le classi, generando una sequenza incrementale dal rendimento minimo in assoluto (tra i rendimenti dei due titoli) a quello massimo in assoluto tra le due serie. L’entità dell’incremento che uso è di 0.05 ma potete impostarlo come preferite, ottenendo di conseguenza classi più o meno ristrette. Il numero di classi che ottenete ovviamente dipende dalla dispersione dei rendimenti e dall’entità dell’incremento. Nel mio caso, il rendimento minimo osservato tra UBS e Novartis è -50.41021%, mentre il rendimento massimo osservato è +44.64475%. La classe 1 perciò comprenderà i rendimenti compresi tra -50.41021% e 49.91021% più vicini al primo valore, la classe 2 quelli compresi tra 49.91021% e 49.41021% più vicino al primo valore, e così via.

min<-min(rendi)
max<-max(rendi)
classi<-seq(min,max, by=0.05)
length(classi)

#5: dopo aver creato le classi al punto #4, dobbiamo assegnare ciascuno dei rendimenti della nostra serie alla rispettiva classe di appartenenza. Denominerò qui le due variabili “var1” e “var2” (nel mio esempio sarebbero UBS e Novartis). Con il seguente comando creo due vettori (“cvar1” e “cvar2”), di lunghezza pari al vettore che contiene i rendimenti (quindi le colonne 1 e 2 della matrice dei rendimenti), che contiene il numero della classe a cui appartiene il rendimento. Nel mio caso, se il primo redimento osservato per UBS è -49.5000%, il primo valore del vettore classe per UBS sarà 2 (vedi classi sopra), e così via. Il codice è

cvar1<-findInterval(rendi[,1],classi)
cvar2<-findInterval(rendi[,2],classi)

#6: creo una matrice quadrata vuota, da riempire (punto #7) con i le frequenze congiunte per ogni classe dei rendimenti dei due titoli. Le dimensioni della matrice dipendono evidentemente dal numero di classi. Chiamo questa matrice “hist” e la genero con questo comando

hist<-matrix(nrow=length(classi),ncol=length(classi))

#7: per riempire la matrice, utilizzo una doppia loop (nested loop). Questo è il vero cuore del codice. Per ogni riga i della matrice “hist” (i è compreso tra 1 e il numero delle classi create), la loop crea colonne (anche j ovviamente è compreso tra 1 ed il numero di classi create, perché la matrice “hist” è quadrata). Ogni colonna j della riga i (quindi stiamo parlando di un valore) è calcolato con la funzione “sum” e rappresenta il numero di casi in cui cvar1=i e simultaneamente cvar2=j (nel codice questa condizione è espressa come “cvar1==i&cvar2==j”). Quindi nel mio caso, se i=1 e j=1, avrò il numero di frequenze dell’abbinamento in cui i rendimenti sia di UBS che di Novartis appartengono alla classe 1. Se i=1 e j=2, avrò il numero di frequenze dell’abbinamento in cui i rendimenti di UBS appartengono alla classe 1 mentre quelli di Novartis sono nella classe 2. E così via… Il codice è

for(i in 1:length(classi)){
for(j in 1:length(classi)){
hist[i,j]<-c(sum(cvar1==i&cvar2==j))
}
}

#8: a questo punto, aggiungo il nome a righe e colonne della matrice “hist”. I nomi saranno di fatto i rendimenti che rappresentano le classi, arrotondati al secondo decimale.Il relativo codice è

colnames(hist)=round(classi,2)
rownames(hist)=round(classi,2)

#9: infine non resta che creare il grafico, nella fattispecie l’istogramma. Ci sono diverse funzioni in R, che a livello grafico è molto versatile. Nel mio esempio uso la funzione “wireframe”. Per utilizzarla dobbiamo caricare il pacchetto “lattice”. Ci sono poi alcune opzioni di visualizzazione con cui potete giocare, tuttavia non entro nei dettagli qui.

library(lattice)
wireframe(main="Istogramma bivariato", hist, screen = list( z=20,x = -85),ylab="var2",xlab="var1",zlab="Freq",scales = list(x=list(arrow=FALSE,rot=-65,distance=1),y=list(arrow=FALSE,rot=55,distance=1),z=list(arrow=FALSE)))

Di seguito, il codice completo per questo istogramma. Ricordate che il codice qui riportato vale per il file di dati strutturato come sopra (colonna 1=data, colonna 2=prezzo 1, colonna 3=prezzo 2). Ho cercato di rendere l’esempio il più generale possibile, nonostante si tratti di un caso applicato alla distribuzione congiunta dei rendimenti di 2 titoli partendo dai prezzi degli stessi.

price <- read.csv("~percorso/nomefile.csv",sep=";",header=TRUE)
matriceprezzi=as.matrix(price[,2:3])
differenza=diff(matriceprezzi)
rendi=differenza / price[1:length(price),2:3]
min<-min(rendi)
max<-max(rendi)
classi<-seq(min,max, by=0.05)
length(classi)
cvar1<-findInterval(rendi[,1],classi)
cvar2<-findInterval(rendi[,2],classi)
hist<-matrix(nrow=length(classi),ncol=length(classi))
for(i in 1:length(classi)){
for(j in 1:length(classi)){
hist[i,j]<-c(sum(cvar1==i&cvar2==j))
}
}
colnames(hist)=round(classi,2)
rownames(hist)=round(classi,2)
library(lattice)
wireframe(main="Istogramma bivariato", hist, screen = list( z=20,x = -85),ylab="var2",xlab="var1",zlab="Freq",scales = list(x=list(arrow=FALSE,rot=-65,distance=1),y=list(arrow=FALSE,rot=55,distance=1),z=list(arrow=FALSE)))

Simboli in LaTeX: una raccolta completa

Chi usa LaTeX sa che conoscere a memoria tutta la gamma di simboli disponibili è pressoché impossibile. Anche a chi utilizza con grande frequenza LaTeX ed ha vasta conoscenza anche di simboli meno comuni può accadere di trovarsi senza il giusto simbolo. Bene, per ovviare a questi problemi sono incappato in un’interessante documento. Sul sito del RPI (NY, USA) è disponibile una completissima lista di simboli. Gli interessati potranno trovarla cliccando sotto:

Lista simboli LaTeX

La mia recensione di “The Theory of Capitalist Development” (P. M. Sweezy)

Paul Marlor Sweezy è senza dubbio tra gli economisti più interessanti ed allo stesso tempo più negletti dell’ultimo secolo. Compagno di studi di Paul Samuelson (uno dei padri della moderna scienza economica nonché Premio Nobel), istruttore di Bob Solow (altro Nobel) e allievo di Joseph A. Schumpeter, si forma ad Harvard dove ottiene il Phd. Avviato ad una brillante carriera accademica, decide di approfondire la dottrina marxista, intesa come particolare approccio scientifico alla scienza economica (in altre parole, non sotto l’aspetto “politico” che oggi caratterizza il termine “marxista”). Anche per questo (ma non solo), rinuncia ai fasti dell’accademia preferendo un percorso di ricerca autonomo. Alcuni anni più tardi fonderà il “Monthly Review” e produrrà alcuni saggi di grande valore tra cui “Monopoly Capital” e il volume qui recensito, ossia “The Theory of Capitalist Development”. Ultima nota curiosa, Sweezy è tra i più profondi conoscitori dell’approccio marxista all’economia ed allo stesso tempo proviene da una delle nazioni in assoluto più sgombre da contaminazioni marxiste o socialiste (con accezione politica in questo caso).

A questo punto, è opportuno entrare nel merito dei contenuti di “The Theory of Capitalist Development”. Inizio chiarendo che la validità e la potenza dell’approccio scientifico marxista non hanno nulla a che spartire con le implicazioni politiche della sua dottrina. Con ciò intendo semplicemente affermare che il metodo analitico di Marx per rapporto al funzionamento di un’economia capitalistica è oggettivamente riconosciuto come valido, anche da chi non sposa tale approccio e soprattutto ha più legittimità di chi scrive questa recensione nell’affermarlo. Del Marx economista (comunemente definito l’ultimo dei “Classici”) spesso si legge che, nonostante un’analisi impeccabile, ha tratto conclusioni sbagliate. Tuttavia, siccome qui scrivo di Sweezy e non di Marx, non mi soffermerò oltre su questo punto che era tuttavia importante menzionare in quanto centrale nei lavori di Sweezy.

Negli anni di Harvard, Sweezy si occupò di alcuni seminari incentrati sull’economia del socialismo nell’ambito del suo lavoro di assistenza a Schumpeter. “The Theory of Capitalist Development” ha radici proprio in questi seminari; questa opera fornisce gli elementi centrali, rivisitati ed aggiornati alla realtà post Grande Depressione, della teoria economica marxista.

“Il Capitale”, opera centrale di Karl Marx, è un testo che data 200 anni, estremamente dettagliato ed oggettivamente molto pesante alla lettura (parlo per esperienza diretta!). Al contrario, con l’opera di Sweezy il lettore interessato può acquisire il metodo e gli elementi centrali della teoria marxista rivisti in chiave moderna senza le infinite digressioni tipiche del “Capitale”. Infatti, e proprio in questo Sweezy si dimostra grande, egli è stato capace di applicare alla storia più recente le intuizioni di Marx. In “The Theory of Capitalist Development” si ritrovano numerosi tratti distintivi delle economie capitaliste evolute, che ritroviamo ancora oggi. La modernità di questa opera (del 1942 la prima edizione) risulta a tratti sconvolgente, contribuendo alla piacevolezza del testo che rimane pur sempre di stampo teorico. Sweezy, attingendo a piene mani dal metodo di Marx, applica un approccio misto tra storia e teoria in cui è facile trovare appigli reali e comprendere i passaggi logici. Sweezy evita inoltre di utilizzare il linguaggio matematico che ha letteralmente invaso i testi di teoria economica dopo i “Classici” a partire dalla cosiddetta rivoluzione marginalista; ciò evidentemente favorisce l’intelligibilità.

In conclusione, come già accennato da altri, “The Theory of Capitalist Development” è il testo ideale quale primo approccio al metodo di analisi economica di stampo marxista. Non è forse il libro da leggere in spiaggia durante le vacanze ma chi seriamente è interessato all’argomento troverà la lettura molto piacevole.

Trasformare tabelle Excel o Calc (LibreOffice/OpenOffice) in codice latex

Se ti piace redigere documenti con LaTeX ed hai bisogno di inserirvi delle tabelle, sarai sicuramente incappato in un problema.

A meno che non si lavori con software statistici complessi per applicazione essenzialmente scientifica (questi sono muniti di pacchetti come Outreg di R ad esempio), dove perciò le tabelle rappresentano output analitici di vario tipo, creare tabelle in LaTeX non è la cosa più triviale e intuitiva di questo mondo.

Nemmeno dei sistemi misti che si appoggiano su LaTeX ma che offrono interfacce WYSIWYG come ad esempio Lyx, permettono in modo facile ed intuitivo di creare tabelle.

Per questo scopo, MS Excel o il sostituto opensource Calc di LibreOffice (eventualmente il fratellastro OpenOffice), sono indubbiamente più funzionali e semplici. Per scelta, mi focalizzo qui sull’alternativa opensource.

Perciò la domanda è: esiste un modo per costruire tabelle usando Calc e poi riportarle in LaTeX senza scrivere codice LaTeX? Fortunatamente, la risposta è SI.

Con OpenOffice e LibreOffice (qui qualche cenno sulla differenza tra i due) avete la possibilità di installare una extension, denominata Calc2LaTeX, che vi permette di raggiungere proprio questo scopo. Vediamo come funziona:

# 1: scaricate Calc2LaTeX da questo sito: http://extensions.services.openoffice.org/en/project/calc2latex-macro-converting-openofficeorg-calc-spreadsheets-latex-tables e salvate il relativo file “.oxt” dove preferite. Perché è una pagina di OpenOffice? Semplice, perché a quel tempo LibreOffice non esisteva! Non preoccupatevi, funziona allo stesso modo.

#2: aprite LibreOffice Calc (oppure OpenOffice Calc), e seguite questo percorso sul menu a finestre: Strumenti > Gestione estensioni.

# 3: cliccate ora su “Aggiungi” (in basso) e tramite la finestra che si apre cercate il file “.oxt” che avete scaricato al passo #1.

Ora avete installato l’estensione, che risulterà attiva. La vedrete nella finestra aperta con il passo #2. Cliccandovi (una volta) sopra potrete verificare se è abilitata semplicemente assicurandovi che vi appaia la possibilità di disattivarla (un truismo forse).

Per utilizzarla, sarà sufficiente selezionare le celle che vorrete trasformare in codice LaTeX e seguire i seguenti semplici passi:

#1: aprire il seguente menu: Strumenti > Macro > Esegui macro

#2: nella finestra aperta, espandete la voce “Macro personali”, dove troverete la cartella “Calc2LaTeX”.

#3: espandete anche la cartella “Calc2LaTeX” e scegliete la macro denominata “Main”. Cliccate infine su “Esegui”.

#4: selezionate le opzioni desiderate. In particolare, consiglio di mantenere l’opzione “Result Window” nell’ultimo riquadro in basso (Result Output). Questa opzione genera una finestra che contiene il codice LaTeX, che voi potete poi copiare ed incollare.

#5: cliccate su convert e attendete l’apparizione dell’output.

Nella speranza di essere stato utile, segnalo un’analoga extension per LibreOffice, che riguarda però l’applicazione Writer (analoga a MS Word). La trovate cliccando qui. Questa permette di trasformare delle pagine di testo scritte con Writer in codice LaTeX.