← Tutti i manuali di Economics

Economics · Econometrics Economics

Econometrics Economics

Dalla probabilità e dai minimi quadrati all’identificazione causale, alle serie storiche e alla previsione: un percorso di studio con spiegazioni, esempi svolti, formule, tabelle e grafici.

Leggi in inglese
19capitoli
202sezioni
Come studiareCerca un argomento oppure apri un capitolo dall’indice. I titoli ti portano direttamente alla spiegazione corretta.

18. Econometria applicata con R

Un flusso di lavoro riproducibile dai dati grezzi a tabelle di regressione difendibili

Riproducibilità e percorso di analisi

L’econometria applicata è una disciplina computazionale. Risultati affidabili richiedono più di un singolo comando di regressione eseguito correttamente: devono essere documentate le origini dei dati, le trasformazioni, le decisioni sui valori mancanti, la costruzione del campione, le formule dei modelli e lo stimatore degli errori standard scelto. Uno script riproducibile deve partire dagli stessi file di dati grezzi, eseguire esplicitamente tutte le trasformazioni di pulizia e ricreare stime, grafici diagnostici e tabelle finali senza modifiche manuali.

R è un ambiente di programmazione open source per l’analisi dei dati. Il flusso di lavoro consueto utilizza un editor di script come RStudio, importazioni di file CSV o di altri dati, oggetti contenenti data frame e modelli, e pacchetti per l’inferenza o la visualizzazione. Il comando di modellazione di base lm stima OLS. La formula y ~ x1 + x2 include un’intercetta per impostazione predefinita; y ~ x1 + x2 - 1 la rimuove. La sintassi non deve mai essere confusa con l’identificazione: la formula del modello codifica le variabili, non stabilisce se i loro coefficienti ammettano interpretazioni causali.

Un progetto riproducibile minimo

Lo script seguente utilizza un campione esplicitamente sintetico. Serve a mostrare il funzionamento del software, non a riprodurre i coefficienti di uno specifico insieme di dati empirici di un manuale. Poiché il seme casuale è fissato, l’esecuzione del codice su un’installazione compatibile dovrebbe riprodurre le stesse osservazioni generate.

set.seed(2026)
n <- 500
education <- round(pmin(20, pmax(8, rnorm(n, 13, 2))))
experience <- runif(n, 0, 30)
ability <- rnorm(n)
logwage <- 1.6 + 0.07 * education + 0.02 * experience +
           0.12 * ability + rnorm(n, sd = 0.30)
dat <- data.frame(education, experience, ability, logwage)
summary(dat)
plot(dat$education, dat$logwage, pch = 19, cex = .5,
     xlab = "Years of education", ylab = "Log wages")

In questo processo generatore dei dati, il coefficiente strutturale condizionato dell’istruzione è 0.07 quando si includono abilità ed esperienza. Modificare la simulazione in modo che l’abilità influenzi anche l’istruzione genererebbe una distorsione da variabile omessa in una regressione basata soltanto sull’istruzione. Gli esempi simulati sono utili perché il ricercatore conosce la verità e può valutare il comportamento della stima, invece di cercare di dedurlo dai risultati del modello stimato.

Regressione semplice e regressione multipla

m1 <- lm(logwage ~ education, data = dat)
m2 <- lm(logwage ~ education + experience + ability, data = dat)
summary(m1)
summary(m2)
confint(m2)

Confronta i coefficienti dell’istruzione, la scala stimata dei residui e gli intervalli di confidenza. La discrepanza tra i coefficienti semplici e multipli mostra come l’aggiustamento modifichi i confronti condizionati; non dimostra automaticamente la direzione o l’entità del confondimento omesso in un altro insieme di dati osservazionali. Modifica poi la simulazione in modo che l’istruzione dipenda dall’abilità e valuta come cambiano le stime su campioni ripetuti.

Trasformazioni e interazioni

m3 <- lm(logwage ~ education + experience + I(experience^2), data = dat)
m4 <- lm(logwage ~ education * ability + experience, data = dat)
summary(m3)
summary(m4)
# Marginal effect of experience at a selected experience level:
b <- coef(m3)
me_exp_10 <- b["experience"] + 2 * b["I(experience^2)"] * 10
print(me_exp_10)

L’operatore I() di R tratta un’espressione matematica come un unico predittore trasformato, mentre x1 * x2 si espande negli effetti principali e nell’interazione (x1 + x2 + x1:x2). Una stima dell’effetto marginale è una funzione di più coefficienti; calcolane l’incertezza con la matrice di covarianza del modello, anziché trattare le componenti come indipendenti.

Inferenza robusta e per cluster

library(lmtest)
library(sandwich)
coeftest(m2, vcov. = vcovHC(m2, type = "HC3"))
# For genuine clustered data with independent clusters:
# coeftest(m2, vcov. = vcovCL(m2, cluster = dat$cluster_id))

La stima HC3 modifica gli errori standard stimati e le statistiche dei test, non i coefficienti OLS. I metodi basati su cluster richiedono un identificativo di raggruppamento effettivo e una struttura campionaria che giustifichi l’inferenza asintotica per cluster. Inventare un identificativo di cluster soltanto per ottenere errori standard diversi non avrebbe alcuna giustificazione statistica.

Restrizioni lineari generali

Il pacchetto car offre comodi test di Wald basati sulla matrice di covarianza fornita. Quando si verificano congiuntamente più restrizioni in presenza di eteroschedasticità, è importante richiedere una matrice di covarianza robusta, anziché affidarsi implicitamente alla tabella ANOVA classica della regressione.

library(car)
linearHypothesis(m2, c("education = 0", "experience = 0"),
                 vcov. = vcovHC(m2, type = "HC3"))

Variabili strumentali

Per un’analisi IV effettiva, esplicita perché lo strumento escluso influenza il regressore endogeno e perché non può influenzare l’esito attraverso altri canali. La notazione delle formule R in ivreg() separa la regressione strutturale dall’insieme degli strumenti mediante |. L’insieme degli strumenti contiene gli strumenti esclusi e tutti i controlli esogeni inclusi.

library(AER)
# Illustrative schema: z is an externally justified instrument for d
iv_fit <- ivreg(y ~ d + income + age | z + income + age,
                data = empirical_data)
summary(iv_fit, diagnostics = TRUE)
coeftest(iv_fit, vcov. = vcovHC(iv_fit, type = "HC1"))

Questo secondo schema è intenzionalmente non eseguibile finché l’analista non fornisce un vero data frame con definizioni motivate delle variabili. Eseguire una regressione senza uno strumento credibile non produce una stima causale significativa.

Modelli panel

Il pacchetto fixest consente una stima concisa degli effetti fissi delle unità e del tempo. Una barra verticale all’interno di feols separa i regressori dalle dimensioni degli effetti fissi. Raggruppare per unità permette una dipendenza flessibile dei residui all’interno di ciascuna unità, sotto le corrispondenti ipotesi.

library(fixest)
model_fe <- feols(outcome ~ policy + control1 | region + year,
                  vcov = ~ region, data = panel_dat)
etable(model_fe)

Se il trattamento varia per regione e anno, interpreta il coefficiente alla luce del meccanismo di assegnazione e verifica se un normale parametro FE rappresenta il parametro causale desiderato. Quando la domanda di ricerca riguarda DID con trattamento scaglionato, possono servire stimatori dedicati, anziché aggiungere semplicemente altri effetti fissi.

Diagnostica dei modelli e grafici

par(mfrow = c(2, 2))
plot(m2)
par(mfrow = c(1, 1))
# Save a reproducible data summary:
capture.output(summary(dat), file = "descriptive_summary.txt")

La suite diagnostica di base di R include grafici dei residui rispetto ai valori stimati, Q–Q, di scala-posizione e relativi alla leva statistica. Un grafico residui-valori stimati può rivelare non linearità ed eteroschedasticità. Gli scostamenti dal grafico Q–Q normale meritano attenzione per l’inferenza esatta nei piccoli campioni, ma non invalidano automaticamente una regressione robusta su un grande campione. Le osservazioni influenti richiedono un esame sostanziale, anziché un’eliminazione automatica.

Presentare i risultati numerici senza affermazioni eccessive

Una buona tabella empirica indica la variabile dipendente, il metodo di stima, gli errori standard, compreso il loro livello di raggruppamento, il numero di osservazioni, gli effetti fissi, i controlli importanti e il campione di stima. Accompagna ciascun coefficiente principale con un’interpretazione che specifichi correttamente le unità di misura e con una discussione dell’identificazione causale. Per i modelli con interazioni e logaritmi, converti i coefficienti in effetti marginali su scale significative. Specifica la popolazione e il periodo temporale e indica dove dati o metodi limitano la generalizzabilità.

FaseAzione essenzialeDomanda diagnostica
DatiEsaminare, pulire, trasformareLe unità di misura e i valori mancanti sono compresi?
DisegnoDefinire il parametro di interesse e i controlliLa variazione è plausibilmente esogena?
StimaScegliere OLS, IV, FE o un altro metodoIl metodo mira al parametro dichiarato?
InferenzaScegliere una covarianza robusta o per clusterLe osservazioni sono statisticamente indipendenti?
ValidazioneVerificare specificazione e sensibilitàLe ipotesi potrebbero essere violate?
ComunicazionePresentare coefficiente, incertezza e ambito di validitàChe cosa può effettivamente dimostrare il risultato?

Un campione di stima coerente e un processo di previsione riproducibile

Prima di confrontare specificazioni, si definisce la chiave identificativa delle osservazioni e se ne verifica l’univocità. Un panel impresa-anno dovrebbe avere un solo record previsto per ciascuna coppia impresa-anno; un’unione molti-a-molti può moltiplicare silenziosamente le osservazioni, distorcendo sia i coefficienti sia gli errori standard. Vanno documentati le unità, l’intervallo temporale, la definizione dell’esito, i valori mancanti per variabile e tutte le restrizioni del campione. Un coefficiente può cambiare dopo l’aggiunta di un controllo perché il modello usa ora un campione diverso: per isolare il ruolo dell’aggiustamento, si confrontano le specificazioni annidate sullo stesso campione.

Per la previsione, i dati si suddividono in campioni di addestramento, validazione e test coerenti con il contesto di impiego. Le regole di imputazione, il ridimensionamento, la selezione delle caratteristiche e le trasformazioni apprese si stimano soltanto sui dati di addestramento, applicando poi le regole stimate ai dati tenuti separati. Si preservano i livelli dei fattori, i contrasti, i nomi e l’ordine delle colonne definiti nell’addestramento. Le osservazioni ripetute della stessa unità devono restare insieme quando l’obiettivo è prevedere unità mai osservate, e le date future devono restare escluse dalle partizioni usate per previsioni anteriori. Si salvano il seme casuale, le versioni dei pacchetti, la formula del modello, gli oggetti di preparazione dei dati e la numerosità finale del campione. Queste informazioni rendono il risultato riproducibile; non sostituiscono un’argomentazione difendibile di identificazione.

ControlloPerché conta
Chiavi univoche delle osservazioniEvita la moltiplicazione accidentale delle righe dopo le unioni
Campione di stima comuneDistingue le variazioni dei controlli dalle variazioni delle osservazioni
Preparazione stimata soltanto sui dati di addestramentoEvita che informazioni degli esiti o delle covariate tenuti separati entrino nella stima
Colonne corrispondenti della matrice del modelloPreserva il significato e l’ordine dei coefficienti stimati
Seme casuale e versioni dei pacchetti salvatiRende tracciabili i passaggi stocastici e dipendenti dal software
Torna all’inizio ↑

Ripetizioni personalizzate · Da 15€/h

Un dubbio da chiarire?
Studiamolo insieme.

Offro lezioni personalizzate per studenti delle superiori e dell’università: spiegazioni chiare, esercizi guidati e un metodo costruito sulle tue esigenze. Scopri le materie e le tariffe, oppure prenota una lezione per lavorare sul tuo programma.