You are on page 1of 11

COMANDI STATA

(MACROECONOMIA APPLICATA AA. 2010-11)

OPZIONE INIZIALE NEL CASO SI UTILIZZI UN DATASET MOLTO AMPIO

Se il dataset che si vuole far leggere al programma è molto ampio, STATA ha bisogno di espandere
la sua memoria. In questo caso, il primo comando da inserire è il seguente:

set memory 30m

questa impostazione permette di far leggere al programma file molto ampi.

Come salvare e stampare il programma che si e’ effettuato su STATA: il file


LOG

STATA puo’ salvare la sessione di lavoro su un file. Il file che ne risulta, chiamato “file log”
contiene tutto cio’ che si e’ effettuato. In questo modo il lavoro che si e’ svolto puo’ essere rieditato
o incorporato in un file di word.
Per salvare la sessione di lavoro su STATA, bisogna scrivere su stata-command:

log using “nome del file.log”

Quindi se voglio salvare il mio file di risultati nella directory c:\econometria e gli voglio dare il
nome di pippo1 scrivero’su stata-command:

log using “c:\econometria\pippo1.log”

Durante la sessione posso anche voler interrompere la registrazione del file. Ad esempio, posso
voler fare prima alcune prove e solo dopo, una volta che sono sicuro delle procedure, salvarle nel
mio log-file. Per interrompere temporaneamente la registrazione della sessione scrivere:

log off

Per ripristinarla:

log on

Invece, per chiudere la registrazione definitivamente scrivere:

log close

CHIUDERE IL FILE E’ IMPORTANTE PER SALVARE CIO’ CHE SI E’ FATTO!

Dopo che ho chiuso il log-file posso andare su Word, aprire il file c:\econometria\pippo1.log.
Apparira’ tutta la mia sessione di lavoro che potra’ essere modificata, e inclusa in un qualsiasi file di
testo.
Commenti da aggiungere al file .log

Nota: Stata legge qualsiasi comando che inizia con * come un commento e non come un comando.
Se voglio quindi scrivere un commento che venga salvato sul log-file basta quindi che inizi la frase
con *. Esempio:

*questo e’ il test Goldfeld-Quandt

COME LEGGERE I DATI SU STATA: USO DI STAT-TRANSFER

Il modo piu’ semplice per leggere un file excel su STATA e’ quello di utlizzare il programma Stat-
Transfer.
Questo programma consente di salvare un file in formato nomefile.xls (formato excel) in un file in
formato nomefile.dta (formato stata).
L’IMPORTANTE E’ CHE IL FILE DI EXCEL CONTENGA NELLA PRIMA RIGA I NOMI
DELLE VARIABILI E NELLA PRIMA COLONNA IL NOME DELLE REGIONI/INDIVIDUI
(nel caso di campione cross-section) OPPURE GLI ANNI (nel caso di serie temporali). In altre
parole, sistemate le variabili per colonne.
Una volta sistemato il file in formato excel:
1. aprite STAT-TRANSFER
2. Vi apparira’ una pagina (transfer) in cui vi si chiede “input file type”. Specificare “EXCEL”.
3. Su “file specification” scrivere il nome completo del file EXCEL che volete salvare in formato
STATA.
4. Su “output file type” specificare invece “STATA VERSION 6 (o 7 o 8)”
5. Sotto, su “file specification” dovrebbe gia’ apparirvi il nome del file in formato .dta.
6. Adesso cliccate il pulsante “Transfer”
7. Potete aprire il nuovo file in formato dta su STATA.

COMANDI UTILI PER ANALISI DESCRITTIVE

LIST nome variabili = visualizza i valori delle variabili che si vogliono controllare. Dopo il
comando specificare le variabili che si vogliono visualizzare.
ESEMPIO il comando:

list anno pil

visualizza le variabili anno e pil.

SUMMARIZE nome variabili = fornisce un breve riassunto statistico delle variabili specificate.
Es.
summarize anno pil
visualizza un breve riassunto statistico delle variabili anno e pil.

DESCRIBE nome variabili = lista brevemente le variabili


CORRELATE nome variabili = fornisce la matrice di correlazione delle variabili. Questo
comando e’ indispensabile per analizzare la correlazione esistente tra le diverse variabili esplicative
introdotte in una regressione e fare quindi una valutazione approssimata di eventuali problemi di
multicollinearita’.

NOMI DELLE VARIABILI

LABEL DATA/VARIABLE = e’ un comando che serve a definire meglio le variabili che possono
avere nomi criptici. Si possono utilizzare fino ad 80 caratteri. Ad es. il comando:

label data “dataset crenos regioni italiane”

fornisce il titolo posto tra virgolette all’intero dataset, mentre il comando

label variable pil “prodotto interno lordo regionale”

permette di etichettare la singola variabile pil con il nome piu’ completo.

___________________________________

GRAFICI

VAI nel menù a tendina GRAPHICS. Qui troverai numerose opzioni. In classe abbiamo visto
TWOWAY GRAPHS (tipo scatter).

OPPURE:

SCATTER nome variabili = permette di fare lo scatter delle variabili indicate


PLOT nome variabili = permette di fare il plot delle variabili indicate
GRAPH nome variabili = permette di fare il grafico delle variabili indicate

Una opzione molto utile è: MLABEL

Esempio. Il comando
scatter gr6085 pil60

in cui gr6085=tasso di crescita del PIL pro capite tra il 1960-85 e pil60=logaritmo del PIL pro
capite del 1960, mostra il classico grafico (scatter-plot) di analisi della convergenza. Ma per
identificare a quale paese corrisponde ciascun puntino della figura devo dire al programma di
mostrare le etichette, ovvero dare l’opzione MLABEL:

scatter gr6085 pil60, mlabel(nome variabile che identifica le etichette)

Attento alla virgola. Identifica che stai includendo una opzione a quel comando.

GRAFICI E DATI PANEL


Con dati cross section o con un panel per effettuare un analisi della distribuzione del Pil pro capite
dei paesi del campione per un dato anno un comando utile è:

kdensity nome variabile Pil per una cross-section

kdensity nome variabile Pil if nome variabile anno==19? Per un panel

Se quindi si ha un panel in cui la variabile che indica il logaritmo del Pil pro capite è chiamata lnpil
e la variabile che indica gli anni è chiamata year e si vuole ottenere la distribuzione del 1960, il
comando diventa:

kdensity lnpil if year==1960

Quando si usano i dati panel può essere utile analizzare l’andamento nel tempo di una determinata
variabile per ciascun paese. Esempio. Se la variabile che mi indica i diversi paesi/regioni si chiama
regions, allora devo dire al programma:

sort regions

A questo punto posso visualizzare i grafici delle variabili uno per ogni regione con il comando:

by regions: plot nome variabili

oppure,

by regions: graph nome variabili

Per visualizzare l’andamento del PIL nel tempo per diversi paesi, un commando utilizzabile è:

twoway (line nome delle variabili che indicano il PIL e gli anni), by(nome della variabile che
indica i paesi)

MA
Su Stata 9 tutto ciò può essere fatto con il comando xtline:

xtline nome della variabile che indica il PIL

COME SALVARE I GRAFICI


I grafici vanno salvati di volta in volta. Si deve aprire la tendina “FILE” e aprire l’opzione “save
graph”. Nota che se si vuole introdurre un bel grafico in un file di word, esso deve essere salvato in
un formato particolare, formato windows metafile (estensione .wmf). Una volta salvato in
questo formato infatti, si può inserire il grafico nel file di testo utilizzando il path “inserisci
immagine da file”.

CONSIGLIO: Create una directory apposita dove salvare i grafici


_____________________________________

COME MODIFICARE LE VARIABILI

PER GENERARE NUOVE VARIABILI SI USA IL COMANDO:

GENERATE = crea nuove variabili, trasformando quelle esistenti. Se voglio che la mia serie X gia’
inserita nel programma venga trasformata in logaritmi naturali scrivo:

generate lnX=ln(X)

lnX e’ il nome arbitrario che ho deciso di dare alla nuova serie creata. Quindi, in generale il
comando e’

generate nome nuova variabile= qualche funzione di X

Altre funzioni comuni sono:

generate X2=sqrt(X) genera una serie che e’ la radice quadra della serie X

Gli operatori matematici che Stata legge sono:

+(addizione), -(sottrazione/negazione), *(moltiplicazione), /(divisione), ^(elevazione a potenza)

COME TRASFORMARE UNA VARIABILE “ETICHETTA” IN UNA VARIABILE


NUMERICA

Un altro comando utile è il comando EGEN.

E’ FONDAMENTALE PER RIUSCIRE A CREARE UNA VARIABILE NUMERICA DA


ETICHETTE. Es. Se ho variabili per paese e ho una variabile non numerica che definisce per nome
i diversi paesi questo può creare problemi quando ad esempio voglio che il programma mi legga il
dataset come panel (vedi comando tsset). In questo caso infatti ho bisogno di passare dalle etichette
(nomi completi di paesi) e numeri (paesi identificati da un numero) e lo posso fare con il comando
egen+group. Se la vraibile etichetta che voglio trasformare in numerica si chiama paesi scrivo:

egen paesi2=group(paesi)

E mi crea la variabile paesi2 che identifica ciascun paese del mio campione con un numero

Altri due comandi che possono consentire di fare la stessa trasformazione sono GENERATE e
ENCODE:

Il comando GENERATE (+ l’opzione real) serve a trasformare i dati che il programma legge come
“string” (non in formato numerico) in formato numerico.

Generate nuova variabile = real (vecchia variabile)


Un altro modo per fare la stessa cosa utilizza il comando ENCODE

Encode nome della variabile da trasformare, generate nuovo nome

SE SI VUOLE MODIFICARE IL CAMPIONE ANALIZZATO CON STATA: COMANDI IF,


DROP, KEEP

IF Comando per definire esattamente il campione

Regress Y X1 X2 if tin(1965, 1989)

Definisce che voglio effettuare una regressione OLS utilizzando solo i dati del campione compreso
tra gli anni 1965-1989 anche se il mio campione copre, ad esempio il periodo 1963-1992.

Oppure posso eliminare le osservazioni 1963, 1964, 1990, 1991, 1992 dal campione con il comando
DROP(elimina):

drop if year<1965
drop if year>1989

Per eliminare un anno preciso indicare:

drop if year= =1977

Per eliminare invece un individuo/nazione:


drop if paesi2= =30
Così elimino il paese che nel dataset è identificato dal numero 30 (vedi anche comando egen) .

Oppure, se voglio eliminare dalla regressione una regione/individuo definita, ad es., dalla variabile
reg posso scrivere:

xi: regress yitpop lagyitpop laglnhk2 i.reg if reg>2 | reg<2;

Qui sto eliminando la regione 2. Il segno “|” significa “or”.

Infine, posso dire al programma cosa considerare anziche’ quello che deve eliminare con il
comando KEEP.

keep varlist
keep if expression
keep in range [if expression]

ANALISI DI REGRESSIONE
REGRESS = comando per la regressione OLS. Dopo REGRESS mettere in ordine la variabile
dipendente e poi la lista di variabili esplicative . La costante e’ messa automaticamente dal
programma, non va specificata. Esempio:

Regress Y X1 X2

Se si vuole invece escludere la costante dalla regressione bisogna specificarlo nel comando. Es.:

Regress Y X1 X2, noconstant

dopo una virgola.

ANALISI DI REGRESSIONE DATI PANEL

Per specificare al programma che i dati che sta leggendo sono dati longitudinali o panel usare il
comando TSSET. Esempio:

tsset nome-variabile-individui nome-variabile-temporale

Se quindi la variabile che indica gli individui del mio campione si chiama “paesi” e quella che
indica il tempo si chiama “anni” devo scrivere:

tsset paesi anni.

Se poi uso dati annuali devo specificarglielo come opzione dopo una virgola (opzione “yearly”):

tsset paesi anni, yearly

In seguito all’immissione di alcuni comandi, il programma può dimenticare che ha in memoria un


dataset panel. Può essere quindi necessario dover ridare il comando tsset paesi anni, yearly di tanto
in tanto

Ricorda che se stai lavorando con dati panel ed effettui una regressione con il comando regress tipo:

Regress Y X1 X2

stai effettuando una analisi di tipo POOLING (vedi il Wooldridge)

STIMATORE EFFETTI FISSI: XTREG (fe)

Se invece si vuole effettuare una regressione panel con effetti fissi, il comando giusto è xtreg a cui
va aggiunta l’opzione fe:

xtreg Y X1 X2, fe

l’opzione fe dice al programma che lo stimatore che si vuole utilizzare è proprio quello fixed effects
(o within groups). Altrimenti il programma utilizza in automatico uno stimatore panel con effetti
random. (vedi il Wooldridge)
STIMATORE EFFETTI RANDOM: XTREG (re)
Se invece si vuole effettuare una regressione panel con effetti random, il comando giusto è xtreg a
cui va aggiunta l’opzione re:

xtreg Y X1 X2, re

TEST DI HAUSMAN
Si costruisce in cinque passaggi:

1) Si effettua stimando per primo il modello con effetti fissi:

xtreg Y X1 X2, fe

2)Poi si dice al programma di salvare le stime con il seguente comando:

estimates store consistent

3)Poi si stima il modello con effetti random:

xtreg Y X1 X2, re

2)E si dice al programma di salvare le stime con il seguente comando:

estimates store efficient

5) Infine il risultato del test si ottiene con il seguente comando:

hausman consistent efficient

COME COSTRUIRE DELLE DUMMIES: COMANDI “xi” e “TABULATE”

xi: i.nomedellavariabile

mi costruisce delle variabili dummy secondo l’ordine definito dalla variabile che ci interessa. Ad
es.: supponiamo di avere un panel regionale e di voler costruire delle dummies regionali. La
variabile chiamata “regioni” definisce le singole regioni. Il comando utile e' quindi:

xi: i.regioni

Tuttavia il comando “xi” non mi crea delle variabili dummies definitive, non le salva in modo
permanente.
Per costruire delle variabili dummies in modo permanente il comando da utilizzare è “tabulate”. Se
si vogliono costruire delle dummies per individui in un panel (Ovvero, tante dummies quanti sono
gli individui/paesi/imprese del mio panel) e la variabile che identifica i miei individui si chiama
paesi posso scrivere:

tabulate paesi, generate(nomenuovo)

Se ho quindi 20 paesi e voglio 20 dummies che si chiamino country1, country2,…, country20


scriverò:
tabulate paesi, generate(country)

STIMATORE LEAST SQUARES WITH DUMMY VARIABLES (LSDV)


Una volta che il mio set di variabili dummies per individuo/paese/regione posso calcolare I miei
stimatore con il metodo LSDV utilizzando il comando regress e introducendo tra i repressori anche
le mie dummies:

regress Y X1 X2 country2,…, country20

Ricorda che se introduce nella regressione la costante devi eliminare un dummy dal set di variabili
esplicative per evitare problemi di perfetta multicollinearità. (vedi il Wooldridge)

VARIABILI RITARDATE

In molti casi i modelli da stimare introducono variabili riferite a periodi/anni precedenti. Facciamo
l’esempio di un dataset annuale.

NOTA BENE: Prima di generare nuove variabili ritardate può essere necessario dover ridare il
comando tsset paesi anni, yearly. Bisogna cioè ricordare al programma che sta analizzando un panel
annuale.

Per prendere il valore ritardato di un anno della variabile “prezzi” bisogna utilizzare il comando
GENERATE e scrivere

generate lag1p=L.prezzi

Quindi L.nomedellavariabile specifica che voglio prendere la variabile specificata ritardata di un


periodo.
Per creare la serie prezzi ritardata di due anni scrivere:

Generate lag2p=L2.prezzi

E cosi’ via per i successivi lags. (quindi il comando “generate lag7p=L7.prezzi” formera’ la serie
prezzi ritardata di 7 periodi)
In generale serie ritardate (laggate) di una variabile vengono create con il comando L.nome della
variabile

DAL PANEL ALLA CROSS SECTION

Il comando collapse mi consente di trasformare un dataset in formato panel in un dataset cross


section. Devo però sapere esattamente quali variabili voglio selezionare e in quale formato. Nel
caso dei modelli di crescita e convergenza è molto probabile che io voglia selezionare per ciascun
paese alcune variabili:
1) nell’anno iniziale, opzione (first)
2) nell’anno finale, opzione (last)
3) In media su tutto il periodo, opzione (mean)

Per costruire il tasso di crescita del pil dai dati delle penn world tables ad esempio mi servono sia il
dato iniziale (ipotesi: 1960) che finale (es. 2000) del pil. In questo caso ho bisogno di creare due
variabili identiche ma di nome diverso prima di fare il collapse che sono:

gen pil60=rgdpl
gen pil2000=rgdpl

gen ki_mean=ki
gen ki1960=ki

……….

Se quindi devo prendere più valori di una stessa variabile del panel devo prima generare le variabili
necessarie. Se voglio prendere del panel pwt i dati per costruire il modello di base di Mankiw
Romer e Weil devo scrivere il seguente comando:

collapse (first) country country_isocode year1960 pil1960 pop1960 ki1960 (mean) ki_mean
(last) year2000 pil2000 pop2000, by (countryno)

by(countryno) mi dice di fare il collapse paese per paese del panel.

con (first) sto dicendo al programma di selezionare quelle variabili indicate dopo l’opzione nella
prima riga (che nel mio esempio corrisponde al 1960).
Con (mean) sto dicendo al programma di prendere ki_mean in media su tutto il periodo 1960-2000.
Con (last) gli sto dicendo di prendere l’ultima riga di quelle variabili (che nel mio esempio è il
2000).

________________________________________

USO DELLA CALCOLATRICE IN STATA

Se si vogliono effettuare calcoli direttamente sul programma STATA il comando giusto è “display”.
Dopo il comando si può direttamente impostare il calcolo che si vuole fare.

TEST DI SPECIFICAZIONE DEL MODELLO FORNITI DA STATA

Sono da effettuare subito dopo la regressione che si vuole analizzare


Dopo la regressione posso quindi dare i seguenti comandi:

test : effettua test delle ipotesi lineari sui parametri.


RVFPLOT, border yline(0) = mi fornisce il plot dei residui versus I valori stimati. Utilissimo
perché se il modello è ben specificato non dovrei osservare alcun pattern nel grafico. Se invece vi è
ad es. varianza crescente/decrescente nei residui sospetto eteroschedasticità. In generale, qualsiasi
pattern indica una violazione delle assunzioni OLS.

DWSTAT = questo comando dato dopo una regressione OLS mi fornisce il valore del test di
Durbin-Watson per l’autocorrelazione del primo ordine.

OVTEST= Calcola il test RESET

HETTEST=Test di eteroschedasticita’

SKTEST=Test di normalita’. Per un test di normalita’ sui residui bisogna prima salvare i residui
della regressione come specificato in precedenza e poi (se ho salvato i residui con il nome residui1)
DARGLI IL COMANDO,

SKTEST RESIDUI1

REGRESSIONI IN PRESENZA DI ETEROSCHEDATSTICITA’


Se i test mostrano la presenza di eteroschedasticita’ dei residui bisogna controllare per questo
problema. I comandi utili sono:

ROBUST = costruisce standard error di beta-cappello corretti per la presenza di eteroschedasticita’


(correzione di White). Es:

regress Y X1 X2 X3, robust

l’opzione robust si scrive dopo la virgola

Oppure:

(WLS) = Per effettuare Weighted Least Squares bisogna aggiungere dopo aver specificato la
regressione tra parentesi quadre quale variabile va utilizzata per la ponderazione [w=variabile]
Es.
Regress Y X1 X2 X3 [w=X2]

INFINE

RICORDA CHE SE HAI DUBBI SU SPECIFICI COMANDI PUOI SEMPRE UTILIZZARE


L’HELP DI STATA. SCRIVENDO INFATTI:

HELP NOMECOMANDO

STATA TI DA’ MOLTE INFORMAZIONI SUL FUNZIONAMENTO DEL COMANDO.

Oppure (ultima ratio) scrivi a diliberto@unica.it