Spero che qualcuno possa aiutarmi poiché sono bloccato con questo problema per un bel po di tempo.
Ho un panel di società S & P500 dal 2010 al 2014 e desidero eseguire una regressione che includa effetti fissi per settore e anno.
Sono un principiante nellanalisi dei dati del panel e anche in Stata, e non riesco a trovare la risposta da nessuna parte. Sono così confuso perché non sono sicuro che gli effetti fissi di settore e anno siano equivalenti agli effetti fissi di sezione e periodo.
Commenti
- Ci ‘ sa carino articolo in SJ sugli effetti fissi ad alta dimensione, inclusa una revisione di altri comandi.
Risposta
Supponiamo che tu abbia una variabile di categoria $ c_i $ (es. C potrebbe essere lazienda del settore in cui si trova $ i $). Un importante punto matematico da tenere a mente è che eseguire una regressione a effetti fissi con effetti fissi per $ c $ equivale a eseguire una regressione regolare con variabili indicatore per ogni possibile valore di $ c $.
Una strategia di base potrebbe essere:
- utilizzare
xtset industryvar
in Stata per indicare che desideri effetti fissi per ogni valore univoco di industryvar. - Genera variabili fittizie per ogni anno.
- Chiama
xtreg
con lopzionefe
per indicare gli effetti fissi, comprese le variabili fittizie dellanno come variabili a destra.
Altro ex esplicitamente, potresti fare qualcosa del tipo:
xtset industry xtreg y x1 x2 i.year, fe
Questo presuppone che year
sia una variabile che contiene lanno, industry
è una variabile che detiene il settore ecc …
Commenti
- Caro Matthew, grazie tanto per la tua risposta utile. Ho provato come mi hai consigliato in Stata e sono contento del risultato che ottengo. Ti dispiacerebbe se controllo ancora una volta con te – Ho 418 società dallindice S & P 500, in 5 anni 2020 – 2014, e ho scaricato codici SIC per ciascuna società su controllo per gli effetti del settore. Così ho fatto: xtset sic; xtreg y x1 x2 x3 … i.year, fe Chiedo scusa in anticipo se la mia domanda ti sembra sciocca, ma sono un principiante assoluto e non ho nessuno alla mia Uni che possa aiutarmi con Panel. Cordiali saluti, Milica
- sì, ‘ è come lo faresti. Un altro pensiero casuale, potresti usare codici SIC a 4 cifre o potresti anche provare codici sic a 3 cifre (es. Generare una nuova variabile SIC3 prendendo il codice a 4 cifre, dividendo per 10 e tagliando il resto con la funzione floor () cioè
gen sic3 = floor(sic4/10)
). - Grazie per la tua gentile e utile risposta. Cordiali saluti, Milica
Risposta
In questo contesto, una regressione a effetto fisso (o allinterno dello stimatore) è una metodo di modellazione con dati panel o longitudinali. Questo stimatore differenzia la media delle variabili dellunità di osservazione da ciascuna variabile:
Per gli individui $ i \ in 1 \ dots N $, osservati nei periodi $ 1 \ dots T $ e covariate $ X_k $ e la variabile dipendente $ Y $, lo stimatore delleffetto fisso esegue la seguente trasformazione:
$ \ breve {Y} _ {it} = Y_ {it } – \ bar {Y} _i $ e
$ \ breve {X} _ {kit} = X_ {kit} – \ bar {X} _ {ki} $ per $ k = 1 \ dots K $
La regressione viene eseguita sulle variabili trasformate. In stata, questa viene implementata utilizzando il comando xtreg
con il fe
opzione.
Questo comando probabilmente non funzionerà nella tua situazione, poiché è progettato per differenziare le medie per ciascuna unità di osservazione. È probabile che avrai più aziende che operano in un particolare settore e si desidera distinguere la media del settore. Questo è un semplice caso di un modello lineare gerarchico.
In questo situazione, desideri utilizzare loperatore i.
in Stata:
reg y i.industry i.year
Puoi anche utilizzare areg
comando per ottenere risultati identici:
areg y i.year, absorb(industry)
Il comando areg
può essere utile quando il numero di livelli della variabile assorbita (il numero di settori in questo esempio) è elevato.
Se è vero che ci sono più aziende allinterno dello stesso settore come sospetto sia il caso, quindi è una pratica comune, che è sensata e supportata in modo asintotico, raggruppare gli errori standard a livello di settore. In stata, questo è tipicamente ottenuto con lopzione vce(cluster varname)
.Quindi, ad esempio, il tuo comando regress
diventerebbe
reg y i.industry i.year, vce(cluster industry)
In una nota simile, uno sviluppo abbastanza recente ha stato fatto nella costruzione di errori standard robusti di cluster a due e più vie (vedere, ad esempio, il documento di Cameron, Gelbach e Miller del 2011 nel Journal of Business and Economic Statistics ). preoccupato per gli shock che interessano lintero insieme di azioni in un dato periodo di tempo, potrebbe valere la pena implementarlo. Doug Miller ha scritto un file .ado chiamato cgm.ado che implementa un metodo di clustering a più vie.
Commenti
- Suggerirei anche di raggruppare gli errori se si segue questo approccio.
- Questo ‘ è vero. Ho pensato di aggiungere questo suggerimento, ma mi sono astenuto in quanto forse al di fuori dellambito. ‘ lo aggiungerò.
- I ‘ sto faticando a vedere come xtreg, fe sia del tutto inappropriato poiché
reg y x i.industry i.year, vce(cluster industry)
genererà stime identiche per x comextset industry
seguito daxtreg y x i.year, vce(robust)
. Includere i manichini o umiliarli basati sullid è esattamente la stessa cosa dal punto di vista dellalgebra matematica e lineare. Infatti, per un gran numero di variabili fittizie, xtreg verrà calcolato più velocemente perché 10000 effetti fissi + 2 variabili di interesse implicherebbero la risoluzione di un sistema di 10002 variabili mentre sarebbe solo un sistema a 2 variabili sui dati trasformati. - @MatthewGunn Sono daccordo con te nel caso in cui lindustria sia ununità di osservazione che viene osservata nel tempo. Tuttavia, quando ci sono più unità di osservazione (aziende) per settore, allora la tipica discussione FE e
xtreg .., fe
devono essere aggiustate. Lesecuzione dixtset
in tal caso genera un errore: ” valori di tempo ripetuti allinterno del pannello. ” - puoi avere più aziende per settore. Questo ‘ va bene, basta non ‘ impostare anche tsset.