Content uploaded by Nicola Tommasi
Author content
All content in this area was uploaded by Nicola Tommasi on Oct 29, 2015
Content may be subject to copyright.
C.I.D.E.
Centro Interdipartimentale di Documentazione Economica
Università degli Studi di Verona
Manuale di Stata
...ovvero una informale introduzione a Stata
con l’aggiunta di casi applicati
Autore:
Nicola Tommasi
9 settembre 2014
rev. 0.09
Info
Sito web: http://www.stata.com/
Mailing list: http://www.stata.com/statalist/archive/
dott. Nicola Tommasi
e-mail: nicola.tommasi@gmail.com - nicola.tommasi@univr.it
Tel.: 045 802 80 48 (p.s.: la mail è lo strumento migliore e con probabilità di successo
più elevata per contattarmi).
sito: https://sites.google.com/site/nicolatommasi/
La versione più aggiornata del manuale la potete trovare qui:
http://cide.univr.it/statamanual.pdf
... altrimenti cercate nella sezione download di http://cide.univr.it
... altrimenti cercate qui, nel mio sito, dove troverete anche altre cosette...
Figura 1: II Incontro degli Utenti di Stata, Milano, 10-11 ottobre 2005
iii
Indice
Info iii
Indice v
Ringraziamenti ix
Lista delle modifiche xi
Introduzione xiii
I Manuale 1
1 Descrizione di Stata 3
1.1 La disposizione delle finestre .......................... 3
1.2 Limiti di Stata ................................. 5
2 Convenzioni Tipografiche 9
3 La Filosofia del Programma 11
3.1 Schema di funzionamento ........................... 12
4 Organizzare il Lavoro 15
4.1 Organizzazione per cartelle di lavoro ..................... 15
4.2 Interazione diretta VS files .do ........................ 19
4.3 Registrazione dell'output ............................ 20
4.4 Aggiornare il programma ........................... 21
4.5 Aggiungere comandi .............................. 21
4.6 Fare ricerche .................................. 23
4.7 Cura dei dati .................................. 24
4.8 Intestazione file .do ............................... 26
5 Alcuni Concetti di Base 29
5.1 L’input dei dati ................................. 29
v
INDICE INDICE
5.1.1 Caricamento dei dati in formato proprietario ............ 29
5.1.2 Caricamento dei dati in formato testo ................ 29
5.1.3 Caricamento dei dati in altri formati proprietari (StatTransfer) . . 30
5.2 Regole per denominare le variabili ...................... 30
5.3 Il qualificatore in ................................ 31
5.4 Il qualificatore if ................................ 32
5.5 Operatori di relazione ............................. 33
5.6 Operatori logici ................................. 34
5.7 Caratteri jolly e sequenze ........................... 34
5.8 L’espressione by ................................. 35
5.9 Dati missing ................................... 36
6 Il Caricamento dei Dati 39
6.1 Dati in formato proprietario (.dta) ...................... 39
6.2 Dati in formato testo .............................. 43
6.2.1 Formato testo delimitato ....................... 43
6.2.2 Formato testo non delimitato ..................... 44
6.3 Altri tipi di formati ............................... 47
6.4 Esportazione dei dati .............................. 48
6.5 Cambiare temporaneamente dataset ..................... 49
7 Gestione delle Variabili 53
7.1 Descrizione di variabili e di valori ....................... 53
7.2 Controllo delle variabili chiave ......................... 62
7.3 Rinominare variabili .............................. 63
7.4 Ordinare variabili ................................ 65
7.5 Prendere o scartare osservazioni o variabili .................. 66
7.6 Gestire il formato delle variabili ........................ 67
8 Creare Variabili 71
8.1 Il comando generate .............................. 71
8.1.1 Funzioni matematiche ......................... 71
8.1.2 Funzioni di distribuzione di probabilità e funzioni di densità . . . . 73
8.1.3 Funzioni di generazione di numeri random .............. 75
8.1.4 Funzioni stringa ............................ 75
8.1.5 Funzioni di programmazione ..................... 78
8.1.6 Funzioni data .............................. 79
8.1.7 Funzioni per serie temporali ...................... 80
8.1.8 Funzioni matriciali ........................... 80
8.2 Lavorare con osservazioni indicizzate ..................... 83
8.3 Estensione del comando generate ...................... 85
8.4 Sostituire valori in una variabile ........................ 88
8.5 Creare variabili dummy ............................ 92
vi Nicola Tommasi
INDICE INDICE
9 Analisi Quantitativa 95
9.1 summarize etabulate ............................. 95
9.1.1 Qualcosa di più avanzato .......................106
9.2 Analisi della correlazione ............................109
9.3 Analisi outliers .................................111
10 Trasformare Dataset 117
10.1 Aggiungere osservazioni ............................117
10.2 Aggiungere variabili ..............................118
10.3 Collassare un dataset ..............................126
10.4 reshape di un dataset .............................127
10.5 Contrarre un dataset ..............................131
11 Lavorare con Date e Orari 135
11.1 La teoria .....................................135
11.2 Visualizzazione delle date e delle ore .....................138
11.3 Ricavare date da variabili stringa .......................140
11.4 Visualizzazione delle ore ............................141
11.5 Operazioni con date e ore ...........................141
12 Macros e Cicli 143
12.1 Macros ......................................143
12.2 I cicli .......................................145
13 Catturare Informazioni dagli Output 151
14 Mappe 155
II Casi Applicati 163
15 Dataset di Grandi Dimensioni 165
16 Da Stringa a Numerica 169
16.1 Fondere variabili stringa con numeriche ...................169
16.2 Da stringa a numerica categorica .......................172
17 Liste di Files e Directory 173
18 Previsioni Multiple 179
18.1 Introduzione ...................................179
18.2 La stima del modello ..............................179
19 reshape su molte Variabili 191
Nicola Tommasi vii
INDICE INDICE
20 Importare dati .xml dal GME 195
20.1 Accesso ai files .zip ...............................195
20.2 Leggere dati in formato .xml .........................198
III Appendici 203
Aspmap: Visualization of spatial data 205
A.1 Syntax ......................................205
A.1.1 basemap_options ............................205
A.1.2 polygon_suboptions ..........................206
A.1.3 line_suboptions ............................207
A.1.4 point_suboptions ............................207
A.1.5 diagram_suboptions ..........................208
A.1.6 arrow_suboptions ...........................209
A.1.7 label_suboptions ............................210
A.1.8 scalebar_suboptions ..........................211
A.1.9 graph_options .............................211
A.2 description ...................................211
A.3 Spatial data format ...............................212
A.4 Color lists ....................................217
A.5 Choropleth maps ................................219
A.6 Options for drawing the base map ......................220
A.7 Option polygon() suboptions .........................223
A.8 Option line() suboptions ............................225
A.9 Option point() suboptions ...........................226
A.10 Option diagram() suboptions .........................228
A.11 Option arrow() suboptions ...........................230
A.12 Option label() suboptions ...........................232
A.13 Option scalebar() suboptions .........................233
A.14 Graph options ..................................234
A.15 Acknowledgments ................................261
B Lista pacchetti aggiuntivi 265
IV Indici 283
Indice Analitico 285
Elenco delle figure 289
Elenco delle tabelle 291
viii Nicola Tommasi
Ringraziamenti
Molto del materiale utilizzato in questo documento proviene da esperienze personali. Pri-
ma e poi nel corso della stesura alcune persone mi hanno aiutato attraverso suggerimenti,
insegnamenti e correzioni; altre hanno contribuito in altre forme. Vorrei ringraziare sin-
ceramente ciascuno di loro. Naturalmente tutti gli errori che troverete in questo libro
sono miei.
Li elenco in ordine rigorosamente sparso
Fede che mi ha fatto scoprire Stata quando ancora non sapevo accendere un PC
Raffa con cui gli scambi di dritte hanno contribuito ad ampliare le mie conoscenze
Piera che mi dato i primissimi rudimenti
ix
Lista delle modifiche
rev. 0.01
- Prima stesura
rev. 0.02
- Aggiunti esempi di output per illustrare meglio i comandi
- Aggiornamenti dei nuovi comandi installati (adoupdate)
- Controllo delle variabili chiave (duplicates report)
rev. 0.03
- Aggiunti esempi di output per illustrare meglio i comandi
- Conversione del testo in L
A
T
EX (così lo imparo)
- Creata la sezione con i casi applicati
rev. 0.04
- Indice analitico
- Mappe (comando spmap, ex tmap
- Ulteriori esempi
rev. 0.06
- Correzioni varie
- Date e ore
- Ulteriori casi applicati
rev. 0.08
- Correzioni varie
- completamento Date e ore
xi
0. Lista delle modifiche
- caso GME
rev. 0.09
- rivista la parte del reshape
- rivista la parte del merge alla luce della nuova versione del comando
- rivista la parte della organizzazione del lavoro
- link ad altri miei materiali
- correzioni varie
xii Nicola Tommasi
Introduzione
Questo è un tentativo di produrre un manuale che integri le mie esperienze nell’uso di
Stata. È un work in progress in cui di volta in volta aggiungo nuovi capitoli, integrazioni
o riscrivo delle parti. In un certo senso è una collezione delle mie esperienze di Stata,
organizzate per assomigliare ad un manuale, con tutti i pro e i contro di una tale genesi.
Non è completo come vorrei ma il tempo è un fattore limitante. Se qualcuno vuole
aggiungere capitoli o pezzi non ha che da contattarmi, sicuramente troveremo il modo di
inglobare i contributi che verranno proposti. Naturalmente siete pregati di segnalarmi
tutti gli errori che troverete (e ce ne saranno).
Questo documento non è protetto in alcun modo contro la duplicazione. La offro gratui-
tamente a chi ne ha bisogno senza restrizioni, eccetto quelle imposte dalla vostra onestà.
Distribuitela e duplicatela liberamente, basta che:
- il documento rimanga intatto
- non lo facciate pagare
Il fatto che sia liberamente distribuibile non altera né indebolisce in alcun modo il diritto
d’autore (copyright), che rimane mio, ai sensi delle leggi vigenti.
xiii
Parte I
Manuale
1
Capitolo 1
Descrizione di Stata
Software statistico per la gestione, l’analisi e la rappresentazione grafica di dati
Piattaforme supportate
- Windows (versioni 32 e 64 bit)
- Linux (versioni 32 e 64 bit)
- Macintosh
- Unix, AIX, Solaris Sparc
Versioni (in senso crescente di capacità e potenza)
- Small Stata
- Stata/IC
- Stata/SE
- Stata/MP
La versione SE è adatta alla gestione di database di grandi dimensioni. La versione
MP è ottimizzata per sfruttare le architetture multiprocessore attraverso l’esecuzione in
parallelo dei comandi di elaborazione (parallelizzazione del codice). Per farsi un’idea si
veda l’ottimo documento reperibile qui:
Stata/MP Performance Report
(http://www.stata.com/statamp/report.pdf)
Questa versione, magari in abbinamento con sistemi operativi a 64bit, è particolarmente
indicata per situazioni in cui si devono elaborare grandi quantità di dati (dataset di
svariati GB) in tempi che non siano geologici.
1.1 La disposizione delle finestre
Stata si compone di diverse finestre che si possono spostare ed ancorare a proprio
piacimento (vedi Figura 1.1). In particolare:
1. Stata Results: finestra in cui Stata presenta l’output dei comandi impartiti
3
1.1. La disposizione delle finestre 1. Descrizione di Stata
2. Review: registra lo storico dei comandi impartiti dalla Stata Command. Cliccan-
do con il mouse su uno di essi, questo viene rinviato alla Stata Command
3. Variables: quando un dataset è caricato qui c’è l’elenco delle variabili che lo
compongono
4. Stata Command: finestra in cui si scrivono i comandi che Stata deve eseguire
A partire dalla versione 8 è possibile eseguire i comandi anche tramite la barra delle
funzioni dove sotto 'Data','Graphics'e'Statistics'sono raggruppati i comandi maggior-
mente usati. Dato che ho imparato ad usare Stata alla vecchia maniera (ovvero da riga di
comando) non tratterò questa possibilità. Però risulta molto utile quando si devono fare
i grafici; prima costruisco il grafico tramite 'Graphics'e poi copio il comando generato
nel file .do.
Figura 1.1: Le finestre di Stata
Come già accennato i riquadri che compongono la schermata del programma si possono
spostare. Quella presentata in figura 1.1 è la disposizione che personalmente ritengo più
efficiente .. .ma naturalmente dipende dai gusti.
Per salvare la disposizione: 'Prefs -> Save Windowing Preferences'
Trucco: Il riquadro 'Variables'prevede 32 caratteri per il nome delle variabili. Se a causa
di questo spazio riservato al nome delle variabili, il label non è visibile si può intervenire
per restringerlo:
set varlabelpos #
4 Nicola Tommasi
1. Descrizione di Stata 1.2. Limiti di Stata
con 8 <= # <= 32, dove #è il numero di caratteri riservati alla visualizzazione del
nome delle variabili. Quelle con nome più lungo di #verranno abbreviate e comparirà
il simbolo ∼nel nome a segnalare che quello visualizzato non è il vero nome ma la sua
abbreviazione.
1.2 Limiti di Stata
Con il comando chelp limits possiamo vedere le potenzialità e le limitazioni della
versione di Stata che stiamo utilizzando:
. chelp limits
help limits
-----------------------------------------------------------------------------
Maximum size limits
Stata/MP and
Small Stata/IC Stata/SE
-----------------------------------------------------------------------------
# of observations (1) about 1,000 2,147,483,647 2,147,483,647
# of variables 99 2,047 32,767
width of a dataset 200 24,564 393,192
value of matsize 40 800 11,000
# characters in a command 8,697 165,216 1,081,527
# options for a command 70 70 70
# of elements in a numlist 1,600 1,600 1,600
# of unique time-series operators in
a command 100 100 100
# seasonal suboperators per time-series
operator 8 8 8
# of dyadic operators in an expression 66 800 800
# of numeric literals in an expression 50 300 300
# of string literals in an expression 256 512 512
length of string in string expression 244 244 244
# of sum functions in an expression 5 5 5
# of characters in a macro 8,681 165,200 1,081,511
# of nested do-files 64 64 64
# of lines in a program 3,500 3,500 3,500
# of characters in a program 135,600 135,600 135,600
length of a variable name 32 32 32
length of ado-command name 32 32 32
length of a global macro name 32 32 32
length of a local macro name 31 31 31
length of a string variable 244 244 244
adjust
# of variables in by() option 7 7 7
anova
Nicola Tommasi 5
1.2. Limiti di Stata 1. Descrizione di Stata
# of variables in one anova term 8 8 8
# of terms in the repeated() option 4 4 4
char
length of one characteristic 8,681 67,784 67,784
constraint
# of constraints 1,999 1,999 1,999
encode and decode
# of unique values 1000 65,536 65,536
_estimates hold
# of stored estimation results 300 300 300
estimates store
# of stored estimation results 300 300 300
grmeanby
# of unique values in varlist _N/2 _N/2 _N/2
graph twoway
# of variables in a plot 100 100 100
# of styles in an option´s stylelist 20 20 20
impute
# of variables in varlist 31 31 31
infile
record length without dictionary none none none
record length with a dictionary 524,275 524,275 524,275
infix
record length with a dictionary 524,275 524,275 524,275
label
length of dataset label 80 80 80
length of variable label 80 80 80
length of value label string 32,000 32,000 32,000
length of name of value label 32 32 32
# of codings within one
value label 1,000 65,536 65,536
label language
# of different languages 100 100 100
manova
# of variables in single manova term 8 8 8
matrix (2)
dimension of single matrix 40 x 40 800 x 800 11,000x11,000
maximize options
iterate() maximum 16,000 16,000 16,000
mlogit
# of outcomes 20 50 50
net (also see usersite)
# of description lines in .pkg file 100 100 100
nlogit and nlogittree
# of levels in model 8 8 8
notes
6 Nicola Tommasi
1. Descrizione di Stata 1.2. Limiti di Stata
length of one note 8,681 67,784 67,784
# of notes attached to _dta 9,999 9,999 9,999
# of notes attached to each
variable 9,999 9,999 9,999
numlist
# of elements in the numeric list 1,600 1,600 1,600
ologit and oprobit
# of outcomes 20 50 50
reg3, sureg, and other system estimators
# of equations 40 800 11,000
set adosize
memory ado-files may consume 500K 500K 500k
set scrollbufsize
memory for Results window buffer 500K 500K 500k
stcox
# of variables in strata() option 5 5 5
stcurve
# of curves plotted on the same graph 10 10 10
table and tabdisp
# of by variables 4 4 4
# of margins, i.e., sum of rows,
columns, supercolumns, and
by groups 3,000 3,000 3,000
tabulate (3)
# of rows in one-way table 500 3,000 12,000
# of rows & cols in two-way table 160x20 300x20 1,200x80
tabulate, summarize (see tabsum)
# of cells (rows X cols) 375 375 375
xt estimation commands (e.g., xtgee,
xtgls, xtpoisson, xtprobit, xtreg
with mle option, and xtpcse when
neither option hetonly nor option
independent are specified)
# of time periods within panel 40 800 11,000
# of integration points accepted 40 800 11,000
by intpoints(#) 195 195 195
-----------------------------------------------------------------------------
Notes
(1) 2,147,483,647 is a theoretical maximum; memory availability will
certainly impose a smaller maximum.
(2) In Mata, matrix is limited by the amount of memory on your computer.
(3) For Stata/IC for the Macintosh, limits are 2,000 for the number of rows
for a one-way table and 180 for number of rows for a two-way table.
Per sapere quale versione del programma stiamo usando:
. about
Stata/SE 10.0 for Windows
Born 25 Jul 2007
Nicola Tommasi 7
1.2. Limiti di Stata 1. Descrizione di Stata
Copyright (C) 1985-2007
Total physical memory: 2096624 KB
Available physical memory: 1447220 KB
Single-user Stata for Windows perpetual license:
Serial number: 81910515957
Licensed to: C.I.D.E.
Univeristy of Verona
8 Nicola Tommasi
Capitolo 2
Convenzioni Tipografiche
Per quanto possibile si cercherà di seguire le seguenti convenzioni tipografiche in ac-
cordo con i manuali stessi di Stata. Quando verranno spiegati i comandi, essi saranno
rappresentati in questo modo:
command varlist =exp if in weight ,options
dove tutto ciò che è racchiuso tra rappresenta parti opzionali del comando e quindi
non indispensabili per la sua esecuzione.
Quindi ad esempio:
- se il comando presenta varname significa che il nome di una variabile è necessario
- se il comando presenta varname significa che il nome di una variabile non è
necessario
- se il comando presenta varlist significa che una lista di variabili è necessaria
- se il comando presenta varlist significa che una lista di variabili non è necessaria
Tra parentesi { } saranno indicati liste di parametri tra i quali è indispensabile scegliere.
Per esempio in
tsset panelvar timevar , format(%fmt) {daily | weekly | monthly | quarterly |
halfyearly | yearly | generic }
la parte {daily | weekly . . . generic } indica una lista di opzioni tra le quali scegliere.
Taluni comandi, se non viene specificata una variabile o una lista di variabili, si applicano
a tutte le variabili del dataset.
Spesso e volentieri le options sono molto numerose, per cui mi limiterò a trattare quelle
che secondo me sono più importanti.
Porzioni di files .do o output di Stata saranno indicati con il seguente layout:
9
2. Convenzioni Tipografiche
. use auto
(1978 Automobile Data)
. summ
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
make | 0
price | 74 6165.257 2949.496 3291 15906
mpg | 74 21.2973 5.785503 12 41
rep78 | 69 3.405797 .9899323 1 5
headroom | 74 2.993243 .8459948 1.5 5
-------------+--------------------------------------------------------
trunk | 74 13.75676 4.277404 5 23
weight | 74 3019.459 777.1936 1760 4840
length | 74 187.9324 22.26634 142 233
turn | 74 39.64865 4.399354 31 51
displacement | 74 197.2973 91.83722 79 425
-------------+--------------------------------------------------------
gear_ratio | 74 3.014865 .4562871 2.19 3.89
foreign | 74 .2972973 .4601885 0 1
10 Nicola Tommasi
Capitolo 3
La Filosofia del Programma
Stata è progettato per gestire efficacemente grandi quantità di dati, perciò tiene tutti i
dati nella memoria RAM (vedi opzione set mem)
Stata considera il trattamento dei dati come un esperimento scientifico, perciò assicura:
a. la riproducibilità tramite l’uso dei files .do
b. la misurabilità tramite l’uso dei files .log o .smcl
Stata si compone di una serie di comandi che sono:
-compilati nell’eseguibile del programma
- presenti in forma di file di testo con estensione .ado
-scritti da terzi con la possibilità di renderli disponibili all’interno del programma
-definiti dall’utente e inseriti direttamente all’interno di files .do
Per vedere dove sono salvati i comandi scritti nei files .ado basta dare il comando.
. sysdir
STATA: C:\eureka\Stata10\
UPDATES: C:\eureka\Stata10\ado\updates\
BASE: C:\eureka\Stata10\ado\base\
SITE: C:\eureka\Stata10\ado\site\
PLUS: c:\ado\stbplus\
PERSONAL: c:\ado\personal\
OLDPLACE: c:\ado\
I comandi scritti da terzi solitamente si installano nella directory indicata in PLUS
Stata si usa essenzialmente da riga di comando
Gli input e gli output vengono dati in forma testuale
Di seguito si farà rifermento a variabili e osservazioni e in particolare
ciò che in Excel viene chiamato -colonna corrisponde a variabile in Stata
-riga corrisponde a osservazione in Stata
11
3.1. Schema di funzionamento 3. La Filosofia del Programma
ciò che in informatica viene chiamato -campo corrisponde a variabile in Stata
-record corrisponde a osservazione in Stata
3.1 Schema di funzionamento
Questo è lo schema di funzionamento del programma. Capitelo bene e sarete più efficienti
e produttivi nel vostro lavoro.
do file
+--------------------------------------+
| #delimit; |
| set more off; |
| clear; |
| set mem 150m; |
| capture log close; |
| ... |
| lista dei comandi da eseguire; |
| ... |
| ... |
| |
| |
| capture log close; |
| exit; |
+--------------------------------------+
|
|
-
-
+--------------------------------------+
| |
| |
| |
| Stata |
| |
| |
|do <do file> |
+--------------------------------------+
|
|
-
- log file
+--------------------------------------+
12 Nicola Tommasi
3. La Filosofia del Programma 3.1. Schema di funzionamento
| |
| |
| |
| Registrazione output comandi |
| del do file |
| |
| |
| |
+--------------------------------------+
Il do file è un semplice file di testo nel quale viene scritta la sequenza dei comandi che
devono essere eseguiti dal programma. Questo file viene passato a Stata per l’esecuzione
tramite il comando do <do_file> da impartire dalla finestra Command. Se ci sono degli
errori l’esecuzione si blocca in corrispondenza dell’errore stesso, altrimenti Stata esegue
il do file e registra gli output dei comandi nel log file.
Nicola Tommasi 13
Capitolo 4
Organizzare il Lavoro
Dato che il metodo migliore di passare i comandi a Stata è la riga di comando, conviene
dotarsi di un buon editor di testo. Quello integrato nel programma non è sufficientemente
potente (si possono creare al massimo file di 32k), per cui consiglio di dotarsi uno dei
seguenti editor gratuiti:
Notepad++ -> http://notepad-plus.sourceforge.net/it/site.htm
NoteTab Light -> http://www.notetab.com/
PSPad -> http://www.pspad.com/
RJ TextEd -> http://www.rj-texted.se
Tra i quatto indicati io preferisco l’ultimo. Sul sito spiegano anche come integrare il
controllo e l’evidenziazione della sintassi dei comandi di Stata.
Utilizzando editor esterni si perde la possibilità di far girare porzioni di codice; c’è però
un tentativo di integrare gli editor esterni; vedi a tal proposito:
http://fmwww.bc.edu/repec/bocode/t/textEditors.html
4.1 Organizzazione per cartelle di lavoro
La maniera più semplice ed efficiente di usare Stata è quella di organizzare il proprio
lavoro in directory e poi far lavorare il programma sempre all’interno di questa directory.
Se si usano i percorsi relativi la posizione di tale directory di lavoro sarà ininfluente e sarà
possibile far girare i propri programmi anche su altri computer senza dover cambiare i
percorsi.
In basso a sinistra, Stata mostra la directory dove attualmente sta’ puntando. In
alternativa è possibile visualizzarla tramite il comando:
pwd
in questo esempio Stata punta alla cartella C:\projects\CorsoStata\esempi e se impartite
il comando di esecuzione di un file .do o di caricamento di un dataset senza specificare
il percorso, questo verrà ricercato in questa cartella:
. pwd
C:\projects\CorsoStata\esempi
15
4.1. Organizzazione per cartelle di lavoro 4. Organizzare il Lavoro
Il principio guida che ispira ogni elaborazione di dati dovrebbe essere la replicazione con
il minimo sforzo di tutti i passaggi di preparazione dei dati, di analisi e di ottenimento
dei risultati riportati nella stesura finale dei lavori. Servono quindi delle regole e de-
gli schemi di lavoro standard che dovrebbero incentivare il senso di responsabilità e di
rendicontazione del proprio lavoro. Da un po’ di tempo cerco di adottare questa orga-
nizzazione per tutti i progetti che direttamente o indirettamente seguo1. Innanzitutto
si crea una cartella con il nome del progetto e questa al suo interno conterrà almeno le
seguenti cartelle e file:
1. una cartella data e la suo interno altre due cartelle
•la cartella raw_data
•la cartella out_dta
2. una cartella metadata
3. una cartella docs
4. una cartella graphs
5. un file di testo readme.txt
6. un file master.do
7. un file import.do
8. un file cleaning.do
9. un file results.do
Ed ecco qual è la funzione di ciascuna cartella e di ciascun file:
•cartella data: Contiene al suo interno la cartella raw_data in cui verranno messi
tutti i file di partenza dei dati nel loro formato originale. Se questi file sono in
un formato direttamente caricabile da Stata (.dta, .xls, .xlsx, .csv, tutti i dati in
formato testo delimitato e non delimitato) si lasciano come sono altrimenti, oltre
al file in formato originale, bisogna inserire anche la sua conversione in un formato
importabile da Stata. La cartella out_dta invece ha la funzione di raccogliere tutti
i file in formato .dta prodotti durante l’elaborazione dei dati. Conterrà anche tutti
i file di dati che eventualmente dovessero essere prodotti in un formato diverso dal
.dta.
1L’ispirazione viene da qui: Ball Richard and Medeiros Norm. 2011. Teaching Students to Document
Their Empirical Research.
16 Nicola Tommasi
4. Organizzare il Lavoro 4.1. Organizzazione per cartelle di lavoro
•cartella metadata: Contiene tutti i file che servono da documentazione per i dati
contenuti nella cartella row_data. Solitamente sono file di documentazione forniti
assieme ai dati come la definizione delle variabili, gli schemi di codifica dei valori
o i metodi di campionamento e di raccolta dei dati. Se il file è unico deve avere lo
stesso nome del relativo raw file, altrimenti si crea una cartella sempre con il nome
del relativo raw file e al suo interno si inseriscono tutti i file di documentazione.
•cartella docs: Contiene tutta la documentazione relativa al progetto come paper
di riferimento o istruzioni su come organizzare l’elaborazione dei dati
•cartella graphs: È una cartella opzionale, nel senso che se non vengono prodotti
grafici che debbano essere salvati si può evitare di crearla. Se invece si producono
grafici e questi devono essere salvati come file (.gph, .eps, .eps ...) questa è la car-
tella che li conterrà. Se i grafici sono molti, si possono organizzare in sottocartelle
della principale.
•file readme.txt: Questo file contiene una panoramica di tutto il materiale che è
stato assemblato nella cartella del progetto. In particolare dovrà contenere:
–la lista di tutti i file contenuti nella cartella data con descrizione della loro
posizione all’interno della cartella , del loro contenuto e del loro formato
–la fonte dei dati ed eventualmente le istruzioni per riottenere gli stessi dati
–la lista in ordine di esecuzione di tutti i .do files contenuti nella cartella e una
breve descrizione della loro funzione
–una referenza (e-mail, numero di telefono...) per contattare l’autore del lavoro
in caso di necessità di ulteriori informazioni
•file master.do: Contiene la sequenza di lancio dei do-file. I tre do-file indicati sono
caldamente consigliati ma non obbligatori, ovvero se le operazioni da compiere non
sono molte il do-file potrebbe essere unico e quindi diventerebbe inutile anche il
master.do. D’altra parte, se il progetto di ricerca fosse particolarmente complesso,
è consigliabile aumentare il numero di do-file in aggiunta a quelli consigliati
•file import.do: Lo scopo di import.do è di importare i dati da ciascun file della
cartella row_data in formato .dta e salvarli nella cartella out_dta. Se tutti i dati
fossero già in formato Stata questo do-file non deve essere creato. Ciascun .dta
file creato avrà lo stesso nome del corrispondente file in row_data. Per esempio
se in row_data c’è il file unaid.txt, il corrispondente file in out_dta si chiamerà
unaid.dta.
•file cleaning.do: Lo scopo di cleaning.do è di processare i dati al fine di arrivare al
dataset finale da usare per le analisi. Quindi carica i dataset presenti in out_dta
e applica procedure di pulizia dei dati, di merge e di append, quindi salva il file
così prodotto sempre in out_dta con il prefisso clean_ o final_. É consigliabile in
questa fase anche condurre delle analisi di esplorazione dei dati e di sperimentazione
per verificare preventivamente le analisi che si intendono effettuare in results.do.
Nicola Tommasi 17
4.1. Organizzazione per cartelle di lavoro 4. Organizzare il Lavoro
•file results.do: Contiene i comandi per generare per generare le variabili necessarie,
per generare tabelle e figure, regressioni e tutti i risultati pubblicati nel report finale
della ricerca.
Utili in questo contesto sono i comandi:
mkdir directoryname
per creare delle cartelle; in directoryname va indicato il percorso e il nome della directory
da creare. Se in tale percorso ci fossero degli spazi bianchi, è necessario racchiudere il
tutto tra virgolette.
Per esempio per creare la cartella pippo all’interno dell’attuale cartella di lavoro:
mkdir pippo
Per creare la cartella pippo nella cartella superiore all’attuale cartella di lavoro
mkdir ..\pippo
o
mkdir../pippo
Per create la cartella pippo nella cartella pluto contenuta nell’attuale cartella di lavoro
mkdir pluto/pippo
Per create la cartella pippo attraverso un percorso assoluto (sistema caldamente sconsi-
gliato!!)
mkdir c:/projects/pippo
Per spostarsi tra le cartelle2
cd ''drive:path''
Per vedere la lista di file e cartelle relativi alla posizione corrente o per vedere il contenuto
di altre cartelle, si usa il comando dir
dir pippo
dir ..\pippo
dir pluto\pippo
Per cancellare files
erase ''filename.ext ''
Attenzione che bisogna specificare anche l’estensione del file da cancellare
Nota1 : Stata è in grado di eseguire anche comandi DOS, purchè siano preceduti dal
simbolo ’!’. Per esempio
!del *.txt
2'cd ..'serve per salire di un livello nella struttura delle directory, cd ../.. di due e così via.
18 Nicola Tommasi
4. Organizzare il Lavoro 4.2. Interazione diretta VS files .do
cancella tutti i files con estensione .txt nella cartella corrente.
Nota2 : già detto, ma meglio ribadirlo; se nel percorso, il nome di un file o di una directory
hanno degli spazi bianchi, l’intero percorso deve essere racchiuso tra virgolette.
Nota3 : Stata è case sensitive per i comandi e per i nomi delle variabili (ma anche per
gli scalar e per le macro), ma non per i nomi dei files e dei percorsi3
4.2 Interazione diretta VS files .do
Stata accetta i comandi in due modi:
a. Interazione diretta tramite l’inserimento dei comandi nella finestra 'Stata Com-
mand'o ricorrendo a 'Statistics'nella barra delle funzioni.
b. Attraverso dei files di semplice testo con estensione .do che contengono la serie di
comandi da passare al programma per l’esecuzione.
Personalmente caldeggio l’adozione del secondo sistema perché consente di ottenere 2
importantissimi requisiti:
I. Si documentano tutti i passaggi che vengono fatti nella elaborazione dei dati
II. Si ha la riproducibilità dei risultati.
Per i files .do sono possibili due soluzioni per delimitare la fine di un comando. Di
default Stata esegue un comando quando trova un invio a capo. Oppure si può scegliere
il carattere ;come delimitatore di fine comando. Data l’impostazione di default, per
utilizzare il ;bisogna dare il comando
#delimit ;
per ritornare alla situazione di default si usa il comando
#delimit cr
È inoltre possibile inserire commenti usando il carattere *se si vuole fare un commento
su una sola riga, con /* all’inizio e */ alla fine per commenti disposti su più righe.
Se state lavorando con il delimitatore cr è possibile suddividere un comando su più righe
usando ///.
Se state lavorando con il delimitatore ;, esso va messo anche alla fine di ciascuna riga
commentata con *. Se invece state usando /* e*/ va messo solo dopo */.
Segue un esempio di quanto appena detto
/**** #delimit cr ****/
gen int y = real(substr(date,1,2))
gen int m = real(substr(date,3,2))
gen int d = real(substr(date,5,2))
summ y m d
3Ciò vale per i SO Windows, non per i sistemi Unix/Linux. Per i Mac e per gli altri sistemi,
semplicemente non lo so’.
Nicola Tommasi 19
4.3. Registrazione dell'output 4. Organizzare il Lavoro
recode y (90=1990) (91=1991) (92=1992) (93=1993) ///
(94=1994) (95=1995) (96=1996) (97=1997) (98=1998) ///
(99=1999) (00=2000) (01=2001) (02=2002) ///
(03=2003) (04=2004) /*serve per usare la funzione mdy*/
gen new_data = mdy(m,d,y)
format new_data %d
#delimit;
gen int y = real(substr(date,1,2));
gen int m = real(substr(date,3,2));
gen int d = real(substr(date,5,2));
summ y m d;
*Commento: le tre righe seguenti hanno l´invio a capo;
recode y (90=1990) (91=1991) (92=1992) (93=1993)
(94=1994) (95=1995) (96=1996) (97=1997)
(98=1998) (99=1999) (00=2000) (01=2001)
(02=2002) (03=2003) (04=2004) /*serve per usare la funzione mdy*/;
gen new_data = mdy(m,d,y);
/******************************************
questo è un commento su + righe
bla bla bla
bla bla bla
*********************************************/;
format new_data %d;
#delimit cr
È possibile dare l’invio a capo senza esecuzione del comando anche in modo cr se si ha
l’accortezza di usare i caratteri /* alla fine della riga e */ all’inizio della successiva come
mostrato nell’esempio seguente
use mydata, clear
regress lnwage educ complete age age2 /*
*/ exp exp2 tenure tenure2 /*
*/ reg1-reg3 female
predict e, resid
summarize e, detail
Attenzione: il comando #delimit non può essere usato nell’interazione diretta e quindi
non si possono inserire comandi nella finestra 'Command'terminando il comando con ;
4.3 Registrazione dell'output
Stata registra gli output dell’esecuzione dei comandi in due tipi di file:
- file .smcl (tipo di default nel programma)
- file .log
I files .smcl sono in formato proprietario di Stata e “abbelliscono” l’output con format-
tazioni di vario tipo (colori, grassetto, corsivo...), ma possono essere visualizzati solo con
l’apposito editor integrato nel programma4.
4Attraverso 'File -> Log -> View'o apposita icona.
20 Nicola Tommasi
4. Organizzare il Lavoro 4.4. Aggiornare il programma
I files .log sono dei semplici file di testo senza nessun tipo di formattazione e possono
essere visualizzati con qualsiasi editor di testo.
Si può scegliere il tipo di log attraverso il comando
set logtype text|smcl , permanently
Si indica al programma di iniziare la registrazione tramite il comando
log using filename , append replace text|smclname(logname)
La registrazione può essere sospesa tramite:
log off logname
ripresa con
log on logname
e infine chiusa con
log close logname
A partire dalla versione 10 è possibile aprire più files di log contemporaneamente.
4.4 Aggiornare il programma
Il corpo principale del programma di aggiorna tramite il comando
update all
. update all
----------------------------------------------------
> update ado
(contacting http://www.stata.com)
ado-files already up to date
----------------------------------------------------
> update executable
(contacting http://www.stata.com)
executable already up to date
in questo modo verranno prima aggiornati i files .ado di base del programma e poi
l’eseguibile .exe. In quest’ultimo caso verrà richiesto il riavvio del programma.
Se non si possiede una connessione ad internet, sul sito di Stata è possibile scaricare gli
archivi compressi degli aggiornamenti da installare all’indirizzo
http://www.stata.com/support/updates/
Sul sito vengono fornite tutte le istruzioni per portare a termine questa procedura
4.5 Aggiungere comandi
Come accennato in precedenza è possibile aggiungere nuovi comandi scritti da terze
parti. Per fare ciò è necessario conoscere il nome del nuovo comando e dare il comando
ssc install pkgname , all replace
Nicola Tommasi 21
4.5. Aggiungere comandi 4. Organizzare il Lavoro
. ssc inst bitobit
checking bitobit consistency and verifying not already installed...
installing into c:\ado\plus\...
installation complete.
Di recente ad ssc è stata aggiunta la possibilità di vedere i comandi aggiuntivi (packages)
più scaricati negli ultimi tre mesi:
ssc whatshot , n(#)
dove #specifica il numero di packages da visualizzare (n(10) è il valore di default).
Specificando n(.) verrà visualizzato l’intero elenco.
. ssc whatshot, n(12)
Top 12 packages at SSC
Oct2007
Rank # hits Package Author(s)
----------------------------------------------------------------------
1 1214.0 outreg John Luke Gallup
2 911.1 estout Ben Jann
3 847.6 xtabond2 David Roodman
4 830.8 outreg2 Roy Wada
5 788.6 ivreg2 Mark E Schaffer, Christopher F Baum,
Steven Stillman
6 667.8 psmatch2 Edwin Leuven, Barbara Sianesi
7 508.2 gllamm Sophia Rabe-Hesketh
8 320.3 xtivreg2 Mark E Schaffer
9 315.3 overid Christopher F Baum, Mark E Schaffer,
Steven Stillman, Vince Wiggins
10 266.0 tabout Ian Watson
11 251.0 ranktest Mark E Schaffer, Frank Kleibergen
12 246.4 metan Mike Bradburn, Ross Harris, Jonathan
Sterne, Doug Altman, Roger Harbord,
Thomas Steichen, Jon Deeks
----------------------------------------------------------------------
(Click on package name for description)
Siete curiosi di vedere tutti i pacchetti disponibili? Andate in Appendice B(pag. 265).
Esiste anche la possibilità di installare i nuovi comandi attraverso la funzione di ricerca.
In questo caso vengono fornite direttamente le indicazioni da seguire5.
Non è raro (anzi) che questi nuovi comandi vengano corretti per dei bugs, oppure miglio-
rati con l’aggiunta di nuove funzioni. Per controllare gli update di tutti i nuovi comandi
installati si usa il comando
adoupdate pkglist, options
. adoupdate, update
(note: adoupdate updates user-written files;
type -update- to check for updates to official Stata)
Checking status of installed packages...
[1] mmerge at http://fmwww.bc.edu/repec/bocode/m:
installed package is up to date
[2] sg12 at http://www.stata.com/stb/stb10:
installed package is up to date
5In pratica la procedura vi dirà cosa cliccare per procedere automaticamente all’installazione.
22 Nicola Tommasi
4. Organizzare il Lavoro 4.6. Fare ricerche
(output omitted )
[96] sjlatex at http://www.stata-journal.com/production:
installed package is up to date
[97] hotdeck at http://fmwww.bc.edu/repec/bocode/h:
installed package is up to date
Packages to be updated are...
[90] examples -- ´EXAMPLES´: module to show examples from on-line help files
Installing updates...
[90] examples
Cleaning up... Done
il quale si occupa del controllo delle nuove versioni e quindi della loro installazione.
4.6 Fare ricerche
Stata dispone di 2 comandi per cercare informazioni e di un comando per ottenere l’help
dei comandi
Per ottenere l’help basta digitare :
help command_or_topic_name, options
Per fare ricerche si possono usare indifferentemente:
search word word ...,search_options
oppure
findit word word ...
Personalmente preferisco il secondo. Entrambi i comandi effettuano una ricerca sui
comandi e sulla documentazione locale e su tutte le risorse di Stata disponibili in rete.
Un esempio (findit fornisce lo stesso risultato):
. search maps, all
Keyword search
Keywords: maps
Search: (1) Official help files, FAQs, Examples, SJs, and STBs
(2) Web resources from Stata and from other users
Search of official help files, FAQs, Examples, SJs, and STBs
Web resources from Stata and other users
(contacting http://www.stata.com)
9 packages found (Stata Journal and STB listed first)
-----------------------------------------------------
Nicola Tommasi 23
4.7. Cura dei dati 4. Organizzare il Lavoro
labutil from http://fmwww.bc.edu/RePEc/bocode/l
´LABUTIL´: modules for managing value and variable labels / labcopy copies
value labels, or swaps them around. labdel deletes / them. lablog defines
value labels for values which are base 10 / logarithms containing the
antilogged values. labcd defines value / labels in which decimal points
mca from http://fmwww.bc.edu/RePEc/bocode/m
´MCA´: module to perform multiple correspondence analysis / The command
mca produces numerical results as well as graphical / representations for
multiple correspondence analyses (MCA). mca / actually conducts an
adjusted simple correspondence analysis on / the Burt matrix constructed
mif2dta from http://fmwww.bc.edu/RePEc/bocode/m
´MIF2DTA´: module convert MapInfo Interchange Format boundary files to
Stata boundary files / This is a program that converts MapInfo Interchange
/ Format boundary files into Stata boundary files to be used / with the
latest release of the -tmap- package. / KW: maps / KW: MapInfo /
shp2dta from http://fmwww.bc.edu/RePEc/bocode/s
´SHP2DTA´: module to converts shape boundary files to Stata datasets /
shp2dta reads a shape (.shp) and dbase (.dbf) file from disk and /
converts them into Stata datasets. The shape and dbase files / must have
the same name and be saved in the same directory. The / user-written
spmap from http://fmwww.bc.edu/RePEc/bocode/s
´SPMAP´: module to visualize spatial data / spmap is aimed at visualizing
several kinds of spatial data, and / is particularly suited for drawing
thematic maps and displaying / the results of spatial data analyses.
Proper specification of / spmap options and suboptions, combined with the
tmap from http://fmwww.bc.edu/RePEc/bocode/t
´TMAP´: module for simple thematic mapping / This is a revised version of
the package published in The / Stata Journal 4(4):361-378 (2004) for
carrying out simple / thematic mapping. This new release should be
considered as a / beta version: comments and problem reports to the author
triplot from http://fmwww.bc.edu/RePEc/bocode/t
´TRIPLOT´: module to generate triangular plots / triplot produces a
triangular plot of the three variables / leftvar, rightvar and botvar,
which are plotted on the left, / right and bottom sides of an equilateral
triangle. Each should / have values between 0 and some maximum value
usmaps from http://fmwww.bc.edu/RePEc/bocode/u
´USMAPS´: module to provide US state map coordinates for tmap / This
package contains several Stata datafiles with US state / geocode
coordinates for use with Pisati´s tmap package (Stata / Journal, 4:4,
2004). A do-file illustrates their usage. / KW: maps / KW: states / KW:
usmaps2 from http://fmwww.bc.edu/RePEc/bocode/u
´USMAPS2´: module to provide US county map coordinates for tmap / This
package contains contains several Stata datafiles with US / county geocode
coordinates for use with Pisati´s tmap package / (Stata Journal, 4:4,
2004). A do-file illustrates their usage. / KW: maps / KW: counties / KW:
(end of search)
4.7 Cura dei dati
Alcune considerazioni riguardanti la cura e la sicurezza dei dati e dei programmi:
1. Adibire una cartella per ciascun progetto e racchiudere tutti i progetti in
una cartella. Personalmente ho una cartella projects all’interno della quale ci sono
24 Nicola Tommasi
4. Organizzare il Lavoro 4.7. Cura dei dati
le cartelle con i vari progetti in corso di svolgimento. Man mano che i progetti
terminano vengono spostati nella cartella ended_progects
G:\projects
. dir
<dir> 8/25/07 8:16 .
<dir> 8/25/07 8:16 ..
<dir> 2/19/04 18:11 ABI
<dir> 6/02/05 8:28 banche
<dir> 5/01/05 11:46 bank_efficiency
<dir> 6/14/07 20:23 BEI
<dir> 5/05/07 9:19 comune
<dir> 6/17/06 16:44 conti_intergenerazionali
<dir> 8/04/07 10:35 coorti
<dir> 3/11/04 22:16 ended_projects
<dir> 5/14/05 9:28 ESEV
<dir> 5/12/07 11:53 gerosa
<dir> 8/13/04 7:55 instrumental_variables
<dir> 3/25/07 10:13 isee
<dir> 8/01/07 17:41 ISMEA
<dir> 5/01/05 10:17 ISTAT
<dir> 6/18/05 8:25 medici
<dir> 5/21/06 8:33 oculisti
<dir> 8/25/07 8:26 popolazione
<dir> 6/20/06 11:50 provincia
<dir> 6/23/07 10:14 scale2000
<dir> 11/20/04 11:41 scale_equivalenza
<dir> 6/02/07 8:54 shape
<dir> 5/01/07 10:25 silc
<dir> 8/11/07 7:55 s_cuore
2. All’interno di ciascuna cartella di progetto stabilire un ordine di cartelle che
rifletta lo svolgimento logico del lavoro. Per esempio la lettura di dati in formato
testo e il salvataggio di questi in formato Stata deve precedere le elaborazioni su
questi dati.
. cd conti_intergenerazionali
G:\projects\conti_intergenerazionali
. dir
<dir> 6/17/06 16:44 .
<dir> 6/17/06 16:44 ..
<dir> 6/24/06 15:52 00_docs
<dir> 4/25/06 8:18 01_original_data
<dir> 6/02/06 9:29 02_final_data
<dir> 6/02/06 9:29 03_source
<dir> 6/02/06 9:29 04_separazioni
<dir> 6/04/06 11:39 05_disoccupazione
<dir> 6/02/06 9:29 06_povertà
<dir> 6/25/06 9:13 99_GA
0.5k 8/30/05 8:50 master.do
3. Ci dovrebbe sempre essere un file master.do che si occupa di lanciare tutti i files
.do nell’ordine corretto.
master.do di conti_intergenerazionali
#delimit;
clear;
set mem 250m;
set more off;
capture log close;
Nicola Tommasi 25
4.8. Intestazione file .do 4. Organizzare il Lavoro
cd 02_final_data;
do read.do /** che lancia, nell´ordine -panel_link.do
-panel_a.do
-panel_h.do
****/;
cd ..;
cd 03_source;
do master.do;
cd ..;
cd 04_separazioni;
do master.do;
cd ..;
cd 05_disoccupazione;
do master.do;
cd ..;
cd 99_GA;
do master.do;
cd ..;
master.do di 03_source
clear
do rela.do
do coppie.do
do rela_by_wave.do
do hids.do
do sons.do
do occupati.do
4. Usare sempre percorsi relativi.
5. I files di dati di partenza devono rimanere inalterati. Se i dati di partenza
vengono in qualsiasi modo modificati vanno salvati con un altro nome. Altrimenti
si inficia il principio di riproducibilità
6. Dare ai files di log lo stesso nome del file do che li genera.
7. Fare un backup giornaliero dei propri progetti (sia files di dati che files .do). Un
backup fatto male (o non fatto) può far piangere anche un uomo grande e grosso.
8. I dati sensibili vanno protetti. Si possono separare gli identificativi personali dal
resto dei dati e poi i files con questi dati andrebbero criptati.
4.8 Intestazione file .do
Naturalmente questa è solo un’indicazione per nulla vincolante; ciascuno faccia come
meglio crede, ma io consiglio di iniziare i files .do così:
#delimit;
version 10;
clear;
set mem 250m;
set more off;
capture log close;
log using panel.log, replace;
26 Nicola Tommasi
4. Organizzare il Lavoro 4.8. Intestazione file .do
Cosa faccio con questo incipit?
version 10; definisco la versione di Stata che sto’ usando e quindi tutti i comandi suc-
cessivi verranno eseguiti secondo quella versione. Ciò è importante per conservare
la compatibilità in relazione alle successive versioni di Stata. In altre parole Stata
99 sarà in grado di eseguire questo file .do
#delimit; definisco il delimitatore di fine comando
clear; elimino eventuali dati in memoria
set mem 250m; assegno un adeguato quantitativo di memoria
set more off; disabilito lo stop nello scorrimento qualora l’output di un comando
ecceda la lunghezza della schermata della finestra dei risultati del programma
capture log close; chiudo un eventuale file di log aperto
log using xxxxxx.log, replace; avvio la registrazione degli output. Con replace
sovrascrivo un eventuale file di log con lo stesso nome. Possibilmente assegnare al
file xxxxxx.log lo stesso nome del file .do.
Se vengono usati dei comandi aggiuntivi non presenti nella distribuzione ufficiale per
non bloccare l’esecuzione del file .do, è utile inserire sempre all’inizio il comando which:
capture which mmerge;
if _rc ssc install mmerge;
capture which verifica che il comando mmerge sia installato. Nel caso in cui non lo fosse,
Stata accede all’archivio ssc e lo installa. Questo metodo funziona solo se il comando
risiede nell’archivio ssc, altimenti bisognerà procedere con una installazione manuale.
P.S.: Il nome del file .do dovrebbe essere breve (non più di otto lettere diciamo) e non
deve contenere spazi bianchi.
Nicola Tommasi 27
Capitolo 5
Alcuni Concetti di Base
5.1 L’input dei dati
5.1.1 Caricamento dei dati in formato proprietario
Vale la regola generale che la realise più recente legge i dati scritti nelle realise precedenti,
ma le precedenti non leggono quelle più recenti. Inoltre bisogna tener presente anche la
versione del programma secondo il presente schema
hhhhhhhhhhhhhhhhh
h
Dati salvati da
Dati letti da StataMP StataSE Intercooled Small
StataMP SI SI NO NO
StataSE SI SI NO NO
Intercooled SI SI SI SI(?)
Small SI SI SI SI
Il comando per caricare i dati in formato proprietario di Stata (estensione .dta) è
use filename , clear
L’opzione clear è necessaria per pulire la memoria dall’eventuale presenza di altri dati,
in quanto non ci possono essere 2 database contemporaneamente in memoria. Questo
argomento viene trattato in forma maggiormente estesa e dettagliata nel capitolo 6.1
alla pagina 39.
5.1.2 Caricamento dei dati in formato testo
Esistono diversi comandi in Stata per caricare dati in formato testo (ASCII). Val la pena
di ricordare che questo formato sarebbe da preferire quando i dati saranno utilizzati anche
con altri programmi1.
1I dati in formato testo sono leggeri in termini di dimensione del file, molto raramente si danneggiano
e sono utilizzabili anche su piattaforme diverse da quelle Microsoft.
29
5.2. Regole per denominare le variabili 5. Alcuni Concetti di Base
La prima cosa da sapere è se i dati sono delimitati o non delimitati. I dati sono delimitati
se ciascuna variabile è separata da un certo carattere, di solito
-'.'
-','2
-';'
-'|'
-'<tab>'
Qui viene fatta solo un’introduzione ai dati in formato testo. La trattazione per esteso
verrà fatta nel capitolo 6.2 alla pagina 43.
5.1.3 Caricamento dei dati in altri formati proprietari (StatTransfer)
È possibile convertire dataset da altri formati al formato di Stata attraverso il programma
commerciale StatTransfer, consigliato dalla stessa Stata Corp. Questo programma è
usabile anche direttamente all’interno di Stata tramite appositi comandi che vedremo
più avanti (inputst eoutputst) nel capitolo 6.3 alla pagina 47.
5.2 Regole per denominare le variabili
Esistono due metodi per nominare le variabili: assegnare un nome evocativo o assegnare
un codice. Per esempio possiamo chiamare redd la variabile che contiene l’informazione
sul reddito o age la variabile che contiene l’informazione sull’età. In questa maniera il
nome della variabile ci aiuta a richiamare il suo contenuto informativo. Se però abbiamo
centinaia di variabili, assegnare a ciascuna un nome evocativo può diventare proble-
matico. In questo contesto meglio ricorrere ad una nomenclatura di tipo sistematico.
Per esempio assegnare d01 d02 d03 d04 d05 alle risposte delle domande da 1 a 5 o
nomi del tipo score_10 score_11 ... o ancora 14a_rc d14b_rc d14c_rc d14d_rc
d14e_rc d14f_rc.
Quelle che seguono sono regole (e consigli) cui sono sottoposti i nomi che intendiamo
assegnare alle variabili:
1. Ogni variabile deve avere il suo nome
2. Il nome di ciascuna variabile deve essere univoco
3. Il nome delle variabili è case sensitive per cui redd è diverso da REDD o da Redd
4. Il nome può contenere lettere (sia maiuscole che minuscole), numeri e il carattere
underscore (_). Non può contenere:
(a) spazi
(b) trattini (-)
(c) caratteri non alfabetici o non numerici ( . , ; : €#§*^?’=)([
] / \ & % $ £ ” ! | > <)
2I caratteri '.'e','non sono consigliati in quanto possono generare confusione in relazione alla sintassi
numerica europea e anglosassone.
30 Nicola Tommasi
5. Alcuni Concetti di Base 5.3. Il qualificatore in
5. Il nome non può iniziare con un numero
6. La lunghezza non può superare i 32 caratteri anche se per motivi di praticità è
consigliabile non superare la decina di caratteri
7. Possibilmente usare solo lettere minuscole (sempre per motivi di praticità)
8. Meglio non usare lettere accentate
5.3 Il qualificatore in
Buona parte dei comandi di Stata supportano l’uso del qualificatore in che, assieme
al qualificatore if, consente di restringere l’insieme delle osservazioni su cui applicare il
comando. Si noti che questo qualificatore risente dell’ordinamento dei dati, nel senso che
fa riferimento alla posizione assoluta dell’osservazione. Un piccolo esempio può aiutare
la comprensione di questo concetto. Supponiamo di avere 10 osservazioni per 2 variabili
come segue:
sex age
1. 1 45
2. 2 22
3. 1 11
4. 1 36
5. 2 88
6. 1 47
7. 2 72
8. 2 18
9. 2 17
se eseguo i seguenti comandi
. list sex age in 2/6
+-----------+
| sex age |
|-----------|
2. | 2 22 |
3. | 1 11 |
4. | 1 36 |
5. | 2 88 |
6. | 1 47 |
+-----------+
. summ age in 2/6
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
age | 5 40.8 29.71027 11 88
Stata mostra le osservazione dalla 2. alla 6. ed esegue il comando summ sulle osservazioni
2.-6.
Se adesso ordino le il dataset in base alla variabile age
. sort age
. list
+-----------+
| sex age |
Nicola Tommasi 31
5.4. Il qualificatore if 5. Alcuni Concetti di Base
|-----------|
1. | 1 11 |
2. | 2 17 |
3. | 2 18 |
4. | 2 22 |
5. | 1 36 |
|-----------|
6. | 1 45 |
7. | 1 47 |
8. | 2 72 |
9. | 2 88 |
+-----------+
e rieseguo gli stessi comandi
. list sex age in 2/6
+-----------+
| sex age |
|-----------|
2. | 2 17 |
3. | 2 18 |
4. | 2 22 |
5. | 1 36 |
6. | 1 45 |
+-----------+
. summ age in 2/6
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
age | 5 27.6 12.34099 17 45
Stata mostra ancora le osservazione dalla 2. alla 6. ed esegue il comando summ sulle
osservazioni 2.-6. ma con risultati differenti perchè il comando sort ha cambiato la
posizione delle osservazioni. Da questo esempio si evidenzia che va posta attenzione
nell’uso del qualificatore in in quanto il comando associato non viene sempre applicato
alle stesse osservazioni, ma dipende dall’ordinamento delle osservazioni (sort)
5.4 Il qualificatore if
La quasi totalità dei comandi di Stata supporta l’uso del qualificatore if. Esso ha la
funzione di selezionare le osservazioni su cui applicare il comando vincolando la scelta
al verificarsi della condizione specificata nell’ if. Anche in questo caso un esempio aiuta
la comprensione. Sempre facendo riferimento al dataset appena usato:
. list sex age if sex==1
+-----------+
| sex age |
|-----------|
1. | 1 11 |
5. | 1 36 |
6. | 1 45 |
7. | 1 47 |
+-----------+
. summ sex age if sex==1
32 Nicola Tommasi
5. Alcuni Concetti di Base 5.5. Operatori di relazione
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
sex | 4 1 0 1 1
age | 4 34.75 16.54035 11 47
I comandi vengono eseguiti solo sulle osservazioni che assumono valore 1 nella variabile
sex. Il risultato in questo caso è invariante rispetto all’ordinamento:
. sort age
. list sex age if sex==1
+-----------+
| sex age |
|-----------|
1. | 1 11 |
5. | 1 36 |
6. | 1 45 |
7. | 1 47 |
+-----------+
. summ sex age if sex==1
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
sex | 4 1 0 1 1
age | 4 34.75 16.54035 11 47
5.5 Operatori di relazione
Gli operatori relazionali in Stata restituiscono sempre una risposta vero/falso. Nel caso
sia verificata la relazione, viene eseguito il comando, altrimenti no. Gli operatori di
relazioni contemplati nella sintassi di Stata sono:
->(strettamente maggiore di)
-<(strettamente minore di)
->= (strettamente maggiore di o uguale a)
-<= (strettamente minore di o uguale a)
-== (uguale a)
-˜= o!= (diverso da)
Si noti che la relazione di uguaglianza esige l’uso doppio del segno di uguaglianza.
Le relazioni si applicano indifferentemente a dati numerici e a dati in formato stringa.
Ed ora alcuni esempi:
- 8 > 4 restituisce vero
- 8 < 4 restituisce falso
- “nicola” > “beda” restituisce vero perché 'nicola'in ordine alfabetico è successivo
a'beda'
- “nicola” > “Beda” restituisce falso perché le lettere maiuscole sono ordinate prima
delle lettere minuscole
Nicola Tommasi 33
5.6. Operatori logici 5. Alcuni Concetti di Base
Per i dati missing (indicati con il simbolo '.'), vale la relazione:
-. > # ovvero un dato numerico missing è sempre maggiore di una dato numerico
non missing.
-“” > “stringa” ovvero un dato stringa missing è sempre maggiore di una dato
stringa non missing.
Si ricorda anche che all’interno della stessa variabile non possono essere presenti con-
temporaneamente dati stringa e numerici. In tal caso i secondi vengono convertiti nei
primi.
5.6 Operatori logici
Gli operatori logici in Stata sono:
-&(and)
-|(or)
-˜o!(not)
Gli operatori logici vengono usati per stabilire delle relazioni tra due o più espressioni e
restituiscono 1 se sono verificate, 0 se non sono verificate.
&richiede che entrambe le relazioni siano verificate
|richiede che almeno una delle relazioni sia verificata
Ritornando agli esempi precedenti
8 > 4 & 8 < 4 è una relazione non vera (e quindi restituisce 0)
8 > 4 | 8 < 4 è una relazione vera (e quindi restituisce 1)
5.7 Caratteri jolly e sequenze
In Stata è possibile usare i caratteri jolly per indicare gruppi di variabili. Come è prassi in
informatica il carattere *serve ad indicare qualsiasi carattere e per un numero qualsiasi
di volte. Per esempio, avendo la seguente lista di variabili:
redd95
spesa1995
redd96
spesa1996
redd97
spesa1997
redd1998
age
risc
sesso
-*indica tutte le variabili
-*95 indica redd95 espesa95
-r* indica redd95,redd96,redd97 erisc
34 Nicola Tommasi
5. Alcuni Concetti di Base 5.8. L’espressione by
Il carattere ?invece serve per indicare un qualsiasi carattere per una sola volta; nel
nostro esempio:
-?indica nessuna variabile perché non c’è nessuna variabile di un solo carattere,
qualsiasi esso sia
-????95 indica solo redd95, ma non spesa95 (solo 4 caratteri prima di 95)
-redd?? indica redd95,redd96,redd97 ma non redd1998 (solo 2 caratteri dopo
redd)
Con il simbolo -si indica una successione contigua di variabili; sempre nel nostro caso,
redd96-risc indica redd96,spesa1996,redd97,spesa1997,redd1998,age,risc.
Si faccia attenzione che il simbolo -dipende da come sono disposte le variabili. Se la
variabile redd97 venisse spostata all’inizio della lista, non rientrerebbe più nell’elenco.
5.8 L’espressione by
Molti comandi hanno la caratteristica di essere byable, ovvero supportano l’uso del pre-
fisso by. In sostanza il