C.I.D.E.C ENTRO I NTERDIPAR TIMENTALE DI D OCUMENTAZIONE E CONOMICA U NIVERSITÀ DEGLI S TUDI DI V ERONA Manuale di Stata ...ovvero una informale introduzione a Stata con l’aggiunta di casi applicati Author: N ICOLA T OMMASI 3 febbraio 2009 rev. 0.08 Info Sito web: http://www.stata.com/ Mailing list: http://www.stata.com/statalist/archive/ dott. Nicola Tommasi e-mail:
[email protected] -
[email protected] Tel.: 045 802 80 48 (p.s. niente cellulare, non lo possiedo. La mail è lo strumento migliore e con probabilità più elevata per contattarmi). Figura 1: II Incontro degli Utenti di Stata, Milano, 10-11 ottobre 2005 iii Indice Info Indice Ringraziamenti Lista delle modifiche Introduzione iii v ix xi xiii I Manuale 1 3 3 5 9 11 12 15 15 17 18 19 20 21 23 25 27 27 1 Descrizione di Stata 1.1 La disposizione delle finestre . . . . . . . . . . . . . . . . . . . . . . 1.2 Limiti di Stata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Convenzioni Tipografiche 3 La Filosofia del Programma 3.1 Schema di funzionamento . . . . . . . . . . . . . . . . . . . . . . . 4 Organizzare il Lavoro 4.1 Organizzazione per cartelle di lavoro 4.2 Interazione diretta VS files .do . . . . 4.3 Registrazione dell'output . . . . . . . 4.4 Aggiornare il programma . . . . . . . 4.5 Aggiungere comandi . . . . . . . . . . 4.6 Fare ricerche . . . . . . . . . . . . . . 4.7 Cura dei dati . . . . . . . . . . . . . . 4.8 Intestazione file .do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Alcuni Concetti di Base 5.1 L’input dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . .3 Altri tipi di formati .6 Gestire il formato delle variabili .2 Controllo delle variabili chiave . . 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Cambiare temporaneamente dataset . . .1 Dati in formato proprietario (. .1. . . . . . . . Operatori logici . . . . . . .4 Esportazione dei dati . . . . . . .5 5. . . . . . . . .1. . . . . . . . . . . . . . . . . .dta) . . . . . . . . .4 Ordinare variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. . . . . . . . . . . . . . . . . . . . Regole per denominare le variabili . . . . . . 6. . . . . . . . . . . . . Il qualificatore if . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . Operatori di relazione . . . . . . . . . . . . . . . . . . .1 Formato testo delimitato . . . . .1. . . . . . . . . . . . . . . . . . . . . . 8. . . . . 8. . . . . . . . . 8 Creare Variabili 8. . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . .2. . . . . . .5 Funzioni di programmazione . . . .9 6 Il Caricamento dei Dati 6.4 Funzioni stringa . . . 6. . . . . . . . . . .2 Caricamento dei dati in formato testo . . . . . . . . .3 Estensione del comando generate . . . . . . .5 Creare variabili dummy . . 8. . . . . . . . . . . . . 7. . . . . . . . . . . . . . . . . . .5 Prendere o scartare osservazioni o variabili 7. . . . . . . . . . . 8. .1 Caricamento dei dati in formato proprietario . . . . . . . . . . . . 8. . . . . . . . . . . . . . . . . . . . . . . 8. . . . . . . . . . Il qualificatore in .2 Funzioni di distribuzione di probabilità e funzioni di densità 8. . . . . . . . . . . . . . . . . . .2. . . . .1 Il comando generate . . . . . 7. . . . . . . . . . . . . . .3 Caricamento dei dati in altri formati proprietari (StatTransfer) . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Rinominare variabili . . vi Nicola Tommasi . . . . . .2 Lavorare con osservazioni indicizzate . . . . . . . . . . . . . . . . . . . . . .8 Funzioni matriciali . . . . . .1.INDICE INDICE 5. . 8. . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . 7. . . . . . . . . . . . . . . . . . . . 8. . . . . . . .1. .3 Funzioni di generazione di numeri random . . .1.1. . .2 Dati in formato testo . . . . . . 8. . . . . . . . . . . . 27 27 28 28 29 30 31 32 32 33 34 37 37 41 41 42 45 46 47 51 51 61 62 63 64 66 69 69 69 71 73 73 76 77 78 78 81 83 86 90 5. . . . . . . . 6. . 6. . . . . . . .7 5. . 5. .1. . . . . . .3 5. . . . 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Descrizione di variabili e di valori . . . .7 Funzioni per serie temporali . . .1 Funzioni matematiche . . . . Dati missing . . . . . . . . . . . . . . . . . . 7 Gestione delle Variabili 7. . . . . .6 5. . . . . . L’espressione by . . . . .4 5. . .2 Formato testo non delimitato . . . . .1. . .6 Funzioni data . . . . . . . . . . . . . . . . . . . . .4 Sostituire valori in una variabile . . . . . . . . . .2 5. . . . . . 6. . Caratteri jolly e sequenze . . . . . . . . . . . . . . . . . . . . . . . . . 8. . . . .8 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Analisi outliers . . . . . . . . . . . . . . . 10 Trasformare Dataset 10. . . . . . . . . . . . . . . 11 Lavorare con Date e Orari 11. . . 139 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11. . . . . .3 Collassare un dataset . . . . . 175 19 reshape su Molte Variabili Nicola Tommasi vii 187 .1 Introduzione . . . . . . . . . . . 10. . . . . 10. . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . .5 Operazioni con date e ore . . . 11. . . . . . 168 17 Liste di Files e Directory 169 18 Previsioni Multiple 175 18.2 Da stringa a numerica categorica . . . . . . . . . 175 18. . . . . . . . . . . . . 141 13 Catturare Informazioni dagli Output 14 Mappe 147 151 II Casi Applicati 159 161 15 Dataset di Grandi Dimensioni 16 Da Stringa a Numerica 165 16. . . . . . . . . . . 9. . . . . . . . . . . . . . . . INDICE 93 93 104 108 109 115 115 116 123 124 128 131 131 134 136 137 137 . . . . . .2 Aggiungere variabili . . . . .1 La teoria . . . . . . . . . . . . . . . . . . . . . . . . . .1 Fondere variabili stringa con numeriche . . . . . . .1 summarize e tabulate . . . . . .2 I cicli .4 Visualizzazione delle ore . . . . . . . . . . . . . . . . . . . . . . . .2 Visualizzazione delle date e delle ore 11. .3 Ricavare date da variabili stringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Contrarre un dataset . . .2 La stima del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Aggiungere osservazioni 10. . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Macros e Cicli 139 12. . . . . . . . . . . . . . . 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 16. . . . . . . . 9. . . . . . . . . . . . . . . . . . . . . . . .INDICE 9 Analisi Quantitativa 9. . . . . . . . .4 reshape di un dataset 10. . . .1 Macros . . . . . . . . . . . . . . . . . . . . .1 Qualcosa di più avanzato 9. . . . . . . . . . .2 Analisi della correlazione . . . . . . . . . . . . . . . . . .1 basemap_options . . . . . . . . . .6 Options for drawing the base map A. . . . . . . . . . . . . . . . . A. . . . . . . . . . . . . . . . . A. . . . . . . . . . . . A. . . . .12Option label() suboptions . .7 label_suboptions . . . . . . . . . . . . . . . . . . . . . . . A.4 point_suboptions . . . . . . . . . . . . . . B Lista pacchetti aggiuntivi To Do IV Indici 275 277 281 283 Indice Analitico Elenco delle figure Elenco delle tabelle viii Nicola Tommasi . . . . . . . . . . . . . . .3 line_suboptions . . . . . .1. . . . . . . . . . . . . . . . A. . A. . . . . . . . . . . . . . . . . . . . A. . . . . . . A. . . . . . .9 Option point() suboptions . . . . . . . . . . . . . . . . . . . . . . . . . A. . . . . . . .1. . . . . . .9 graph_options . . . . . . . . . . . .1. A. . . .14Graph options . . . . . . . . . .1. . . . . . . . . . . . . . . .13Option scalebar() suboptions . . . . . . . . . . . A. . . . . . . . . . .8 scalebar_suboptions . . . . . A. . . . . . . .1. . . . . . A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A. . . . . . . . . . . . .7 Option polygon() suboptions . .2 description . . . . . . . . A. . . . . . . .5 Choropleth maps . . . . . . . . . .4 Color lists . . . . . .10Option diagram() suboptions . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . A. . . . . . . . . . . . . .5 diagram_suboptions . . . . . . 191 193 193 193 194 195 195 196 197 198 199 199 199 200 206 207 209 212 213 214 217 219 221 223 223 251 255 273 A spmap: Visualization of spatial data A. .1. . . . . . . . . . . . . . . . .2 polygon_suboptions . . . . . . . .3 Spatial data format . A. . . .11Option arrow() suboptions . . . . . A. . . .8 Option line() suboptions . . . . . . . . . . . . . . . A.6 arrow_suboptions . .INDICE INDICE III Appendici . . . . . . . . . . . . A. . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. A. . . .15Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . .1 Syntax . . . . A. . . . . . Vorrei ringraziare sinceramente ciascuno di loro. Naturalmente tutti gli errori che troverete in questo libro sono miei. altre hanno contribuito in altre forme. insegnamenti e correzioni. 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 . Prima e poi nel corso della stesura alcune persone mi hanno aiutato attraverso suggerimenti.Ringraziamenti Molto del materiale utilizzato in questo documento proviene da esperienze personali. . 0. ex tmap .Indice analitico .Date e ore .Creata la sezione con i casi applicati rev.Aggiornamenti dei nuovi comandi installati (adoupdate) .04 .03 .Mappe (comando spmap.02 .Conversione del testo in LTEX (così lo imparo) . 0.Ulteriori casi applicati xi .Correzioni varie .Prima stesura rev. 0.Lista delle modifiche rev.Aggiunti esempi di output per illustrare meglio i comandi .Aggiunti esempi di output per illustrare meglio i comandi A . 0.Ulteriori esempi rev. 0.01 .06 .Controllo delle variabili chiave (duplicates report) rev. . Distribuitela e duplicatela liberamente. organizzate per assomigliare ad un manuale. Non è completo come vorrei ma il tempo è un fattore limitante.Introduzione Questo è un tentativo di produrre un manuale che integri le mie esperienze nell’uso di Stata. Naturalmente siete pregati di segnalarmi tutti gli errori che troverete (e ce ne saranno). In un certo senso è una collezione delle mie esperienze di Stata. che rimane mio. La offro gratuitamente a chi ne ha bisogno senza restrizioni.non lo facciate pagare Il fatto che sia liberamente distribuibile non altera né indebolisce in alcun modo il diritto d’autore (copyright). Se qualcuno vuole aggiungere capitoli o pezzi non ha che da contattarmi. con tutti i pro e i contro di una tale genesi. sicuramente troveremo il modo di inglobare i contributi che verranno proposti. ai sensi delle leggi vigenti. Questo documento non è protetto in alcun modo contro la duplicazione. eccetto quelle imposte dalla vostra onestà. È un work in progress in cui di volta in volta aggiungo nuovi capitoli. xiii . integrazioni o riscrivo delle parti. basta che: .il documento rimanga intatto . . Parte I Manuale 1 . . Solaris Sparc Versioni (in senso crescente di capacità e potenza) Small Stata Stata/IC Stata/SE Stata/MC La versione SE è adatta alla gestione di database di grandi dimensioni. è particolarmente indicata per situazioni in cui si devono elaborare grandi quantità di dati (dataset di svariati GB) in tempi che non siano geologici. magari in abbinamento con sistemi operativi a 64bit. Per farsi un’idea si veda l’ottimo documento reperibile qui: Stata/MP Performance Report (http://www.1 La disposizione delle finestre Stata si compone di diverse finestre che si possono spostare ed ancorare a proprio piacimento (vedi Figura 1.stata. 1.Capitolo 1 Descrizione di Stata Software statistico per la gestione. AIX.1). In particolare: 3 . La versione MP è ottimizzata per sfruttare le architetture multiprocessore attraverso l’esecuzione in parallelo dei comandi di elaborazione (parallelizzazione del codice).com/statamp/report.pdf) Questa versione. l’analisi e la rappresentazione grafica di dati Piattaforme supportate Windows (versioni 32 e 64 bit) Linux (versioni 32 e 64 bit) Macintosh Unix. 1. 'Graphics' e 'Statistics' sono raggruppati i comandi maggiormente usati. La disposizione delle finestre 1.1: Le finestre di Stata 4 Nicola Tommasi . Però risulta molto utile quando si devono fare i grafici. Stata Results: finestra in cui Stata presenta l’output dei comandi impartiti 2. Figura 1. questo viene rinviato alla Stata Command 3. 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'.1.do. Descrizione di Stata 1. prima costruisco il grafico tramite 'Graphics' e poi copio il comando generato nel file . Variables: quando un dataset è caricato qui c’è l’elenco delle variabili che lo compongono 4. Cliccando con il mouse su uno di essi. Dato che ho imparato ad usare Stata alla vecchia maniera (ovvero da riga di comando) non tratterò questa possibilità. Review: registra lo storico dei comandi impartiti dalla Stata Command. Limiti di Stata Come già accennato i riquadri che compongono la schermata del programma si possono spostare.483.200 64 100 8 800 300 512 244 5 1.2.147.192 value of matsize # characters in a command # options for a command # of elements in a numlist # of unique time-series operators in a command # seasonal suboperators per time-series operator # of dyadic operators in an expression # of numeric literals in an expression # of string literals in an expression length of string in string expression # of sum functions in an expression # of characters in a macro # of nested do-files 40 8.600 100 8 66 50 256 244 5 8.081.147.000 2. 1.047 32. Quella presentata in figura 1.1 è la disposizione che personalmente ritengo più efficiente . . Descrizione di Stata 1. dove #è il numero di caratteri riservati alla visualizzazione del nome delle variabili.647 2.483.697 70 1. 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.527 70 1.081.767 width of a dataset 200 24. chelp limits help limits ----------------------------------------------------------------------------Maximum size limits Stata/MP and Small Stata/IC Stata/SE ----------------------------------------------------------------------------# of observations (1) about 1.600 800 165.1.216 70 1. il label non è visibile si può intervenire per restringerlo: set varlabelpos # con 8 <= # <= 32. ma naturalmente dipende dai gusti.647 # of variables 99 2.511 64 Nicola Tommasi 5 .600 11.000 1. . Se a causa di questo spazio riservato al nome delle variabili.681 64 100 8 800 300 512 244 5 165.2 Limiti di Stata Con il comando chelp limits possiamo vedere le potenzialità e le limitazioni della versione di Stata che stiamo utilizzando: .564 393. Per salvare la disposizione: 'Prefs -> Save Windowing Preferences' Trucco: Il riquadro 'Variables' prevede 32 caratteri per il nome delle variabili. 275 524.999 1.999 1.784 67.275 80 80 32.536 65.1.275 none 524.275 524.784 1.536 100 100 100 8 8 8 6 Nicola Tommasi .999 1000 65.500 135.000 32 1.536 300 300 300 300 300 300 _N/2 _N/2 _N/2 graph twoway # of variables in a plot 100 # of styles in an option´s stylelist 20 impute # of variables in varlist 100 20 100 20 31 31 31 infile record length without dictionary none record length with a dictionary 524.600 32 32 32 31 244 3. Limiti di Stata 1.500 135.2.000 32 65.681 67.000 32 65.275 524. Descrizione di Stata # of lines in a program # of characters in a program length length length length of of of of a variable name ado-command name a global macro name a local macro name 3.536 80 80 32.275 infix record length with a dictionary label length of dataset label length of variable label length of value label string length of name of value label # of codings within one value label label language # of different languages manova # of variables in single manova term matrix (2) none 524.500 135.000 80 80 32.600 32 32 32 31 244 3.600 32 32 32 31 244 length of a string variable adjust # of variables in by() option anova # of variables in one anova term # of terms in the repeated() option char length of one characteristic constraint # of constraints encode and decode # of unique values _estimates hold # of stored estimation results estimates store # of stored estimation results grmeanby # of unique values in varlist 7 7 7 8 4 8 4 8 4 8. 2. sum of rows. and xtpcse when neither option hetonly nor option independent are specified) 3.681 9.600 20 50 50 40 800 11.200x80 375 375 375 # of time periods within panel 40 800 11.784 9. Descrizione di Stata dimension of single matrix maximize options iterate() maximum mlogit # of outcomes net (also see usersite) # of description lines in . xtgee. summarize (see tabsum) # of cells (rows X cols) xt estimation commands (e.000 tabulate (3) # of rows in one-way table 500 # of rows & cols in two-way table 160x20 tabulate.999 67.e. and other system estimators # of equations set adosize memory ado-files may consume set scrollbufsize memory for Results window buffer stcox # of variables in strata() option 40 x 40 1..000 20 50 50 100 100 100 8 8 8 8. xtgls. columns.000 3.999 67.600 1.784 9.000x11.pkg file nlogit and nlogittree # of levels in model notes length of one note # of notes attached to _dta # of notes attached to each variable numlist # of elements in the numeric list ologit and oprobit # of outcomes reg3.000 by intpoints(#) 195 195 195 ----------------------------------------------------------------------------- Nicola Tommasi 7 .999 9. and by groups 10 10 4 4 4 3.000 500K 500K 500k 500K 500K 500k 5 5 5 stcurve # of curves plotted on the same graph 10 table and tabdisp # of by variables # of margins.000 16.000 16. xtreg with mle option. Limiti di Stata 800 x 800 11.000 300x20 12.999 9. xtprobit.1. sureg.999 9.999 1.000 1.000 16.600 1..000 3. supercolumns. i.000 # of integration points accepted 40 800 11.g. xtpoisson. matrix is limited by the amount of memory on your computer.1. memory availability will certainly impose a smaller maximum.I. (3) For Stata/IC for the Macintosh. Descrizione di Stata (1) 2.2. about Stata/SE 10.647 is a theoretical maximum. (2) In Mata. Limiti di Stata Notes 1.D.147. Per sapere quale versione del programma stiamo usando: .E. limits are 2. Univeristy of Verona 8 Nicola Tommasi .0 for Windows Born 25 Jul 2007 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.483.000 for the number of rows for a one-way table and 180 for number of rows for a two-way table. 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. .se il comando presenta varname significa che il nome di una variabile è necessario . . se non viene specificata una variabile o una lista di variabili.se il comando presenta varname significa che il nome di una variabile non è necessario . generic } indica una lista di opzioni tra le quali scegliere. essi saranno rappresentati in questo modo: command varlist =exp if in weight . 9 . Per esempio in tsset panelvar timevar . Quando verranno spiegati i comandi. options dove tutto ciò che è racchiuso tra rappresenta parti opzionali del comando e quindi non indispensabili per la sua esecuzione. per cui mi limiterò a trattare quelle che secondo me sono più importanti. Spesso e volentieri le options sono molto numerose. si applicano a tutte le variabili del dataset. format(%fmt) {daily | weekly | monthly | quarterly | halfyearly | yearly | generic } la parte {daily | weekly . Quindi ad esempio: .Capitolo 2 Convenzioni Tipografiche Per quanto possibile si cercherà di seguire le seguenti convenzioni tipografiche in accordo con i manuali stessi di Stata. Taluni comandi.se il comando presenta varlist significa che una lista di variabili è necessaria . 2972973 .993243 .64865 4.2.4562871 2.2973 91.785503 12 41 rep78 | 69 3.8459948 1. Min Max -------------+-------------------------------------------------------make | 0 price | 74 6165.83722 79 425 -------------+-------------------------------------------------------gear_ratio | 74 3.4601885 0 1 10 Nicola Tommasi .405797 .496 3291 15906 mpg | 74 21. use auto (1978 Automobile Data) . Dev.9899323 1 5 headroom | 74 2.2973 5.459 777.75676 4.26634 142 233 turn | 74 39.9324 22.89 foreign | 74 . summ Variable | Obs Mean Std.399354 31 51 displacement | 74 197.19 3.277404 5 23 weight | 74 3019.257 2949.5 5 -------------+-------------------------------------------------------trunk | 74 13.1936 1760 4840 length | 74 187. Convenzioni Tipografiche Porzioni di files .do o output di Stata saranno indicati con il seguente layout: .014865 . la misurabilità tramite l’uso dei files .log o .presenti in forma di file di testo con estensione . perciò tiene tutti i dati nella memoria RAM (vedi opzione set mem) Stata considera il trattamento dei dati come un esperimento scientifico. sysdir STATA: UPDATES: BASE: SITE: PLUS: PERSONAL: OLDPLACE: C:\eureka\Stata10\ C:\eureka\Stata10\ado\updates\ C:\eureka\Stata10\ado\base\ C:\eureka\Stata10\ado\site\ c:\ado\stbplus\ c:\ado\personal\ 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 11 .do b.definiti dall’utente e inseriti direttamente all’interno di files .compilati nell’eseguibile del programma .do Per vedere dove sono salvati i comandi scritti nei files .smcl Stata si compone di una serie di comandi che sono: .Capitolo 3 La Filosofia del Programma Stata è progettato per gestire efficacemente grandi quantità di dati.ado . la riproducibilità tramite l’uso dei files . .scritti da terzi con la possibilità di renderli disponibili all’interno del programma .ado basta dare il comando. perciò assicura: a. . | | | | | | capture log close. do file +--------------------------------------+ | #delimit..1.1 Schema di funzionamento Questo è lo schema di funzionamento del programma. | | . | | . | | clear. | | capture log close. Schema di funzionamento 3. Capitelo bene e sarete più efficienti e produttivi nel vostro lavoro. | | lista dei comandi da eseguire. | | set mem 150m. La Filosofia del Programma ciò che in Excel viene chiamato -colonna corrisponde a variabile in Stata -riga corrisponde a osservazione in Stata ciò che in informatica viene chiamato -campo corrisponde a variabile in Stata -record corrisponde a osservazione in Stata 3. | +--------------------------------------+ | | +--------------------------------------+ | | | | | | | Stata | | | | | |do <do file> | +--------------------------------------+ | 12 Nicola Tommasi ... | | exit.. | | set more off. | | .3.. 3. Schema di funzionamento | log file +--------------------------------------+ | | | | | | | Registrazione output comandi | | del do file | | | | | | | +--------------------------------------+ Nel do file vengono scritti in sequenza i comandi da eseguire.1. La Filosofia del Programma 3. Questi vengono passati al programma tramite il comando do <do_file> da impartire dalla finestra Command del programma stesso. Nicola Tommasi 13 . Se non ci sono errori Stata esegue il do file e registra gli output dei comandi nel log file. . do o di caricamento di un dataset senza specificare il percorso. Quello integrato nel programma non è sufficientemente potente (si possono creare al massimo file di 32k).bc. per cui consiglio di dotarsi uno dei seguenti editor gratuiti: Notepad++ -> http://notepad-plus.edu/repec/bocode/t/textEditors. 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 . pwd C:\projects\CorsoStata\esempi 15 . Sul sito spiegano anche come integrare il controllo e l’evidenziazione della sintassi dei comandi di Stata. 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.notetab.sourceforge.com/ RJ TextEd -> http://www. Utilizzando editor esterni si perde la possibilità di far girare porzioni di codice. Stata mostra la directory dove attualmente sta’ puntando. In basso a sinistra.htm NoteTab Light -> http://www. c’è però un tentativo di integrare gli editor esterni.Capitolo 4 Organizzare il Lavoro Dato che il metodo migliore di passare i comandi a Stata è la riga di comando.net/it/site. conviene dotarsi di un buon editor di testo.html 4.se Tra i quatto indicati io preferisco l’ultimo.pspad. vedi a tal proposito: http://fmwww.rj-texted.com/ PSPad -> http://www.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. questo verrà ricercato in questa cartella: . 1.\pippo dir pluto\pippo Per cancellare files erase '' filename.\pippo o mkdir. Organizzazione per cartelle di lavoro Utili in questo contesto sono i comandi: mkdir directoryname 4. 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 . Per esempio !del *. cd . si usa il comando dir dir pippo dir . 16 Nicola Tommasi . purchè siano preceduti dal simbolo ’!’.txt nella cartella corrente.txt cancella tutti i files con estensione ..../. Se in tale percorso ci fossero degli spazi bianchi.ext '' Attenzione che bisogna specificare anche l’estensione del file da cancellare Nota1: Stata è in grado di eseguire anche comandi DOS./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 sconsigliato!!) mkdir c:/projects/pippo Per spostarsi tra le cartelle1 cd '' drive: path '' Per vedere la lista di file e cartelle relativi alla posizione corrente o per vedere il contenuto di altre cartelle.4.' serve per salire di un livello nella struttura delle directory.. 1 'cd . di due e così via. in directoryname va indicato il percorso e il nome della directory da creare.. è necessario racchiudere il tutto tra virgolette. Organizzare il Lavoro per creare delle cartelle.. Per i files .do sono possibili due soluzioni per delimitare la fine di un comando. Attraverso dei files di semplice testo con estensione . 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. Si documentano tutti i passaggi che vengono fatti nella elaborazione dei dati II. b..4.do Stata accetta i comandi in due modi: a. ma meglio ribadirlo. Nota3: Stata è case sensitive per i comandi e per i nomi delle variabili (ma anche per gli scalar e per le macro). Se invece state usando /* e */ va messo solo dopo */. con /* all’inizio e */ alla fine per commenti disposti su più righe. per utilizzare il . bisogna dare il comando #delimit . Per i Mac e per gli altri sistemi. Interazione diretta VS files . come delimitatore di fine comando. Se state lavorando con il delimitatore cr è possibile suddividere un comando su più righe usando ///. esso va messo anche alla fine di ciascuna riga commentata con *.2. semplicemente non lo so’. se nel percorso. 2 Nicola Tommasi 17 .do che contengono la serie di comandi da passare al programma per l’esecuzione. l’intero percorso deve essere racchiuso tra virgolette. Di default Stata esegue un comando quando trova un invio a capo. il nome di un file o di una directory hanno degli spazi bianchi. Si ha la riproducibilità dei risultati. ma non per i nomi dei files e dei percorsi2 4. Segue un esempio di quanto appena detto Ciò vale per i SO Windows. Oppure si può scegliere il carattere . non per i sistemi Unix/Linux. Se state lavorando con il delimitatore .2 Interazione diretta VS files . Personalmente caldeggio l’adozione del secondo sistema perché consente di ottenere 2 importantissimi requisiti: I. Interazione diretta tramite l’inserimento dei comandi nella finestra 'Stata Command' o ricorrendo a 'Statistics' nella barra delle funzioni.do Nota2: già detto. Organizzare il Lavoro 4. Data l’impostazione di default. #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.d.4. clear regress lnwage educ complete age age2 /* */ exp exp2 tenure tenure2 /* */ reg1-reg3 female predict e.3 Registrazione dell'output Stata registra gli output dell’esecuzione dei comandi in due tipi di file: .2)) summ y m d 4.2)) gen int m = real(substr(date.2)).file . 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 .y).3.3.2)). gen int d = real(substr(date. format new_data %d. Registrazione dell'output /**** #delimit cr ****/ gen int y = real(substr(date.1. resid summarize e.y) format new_data %d #delimit. (93=1993) (97=1997) (01=2001) /*serve per usare la funzione mdy*/.d. gen int y = real(substr(date. /****************************************** questo è un commento su + righe bla bla bla bla bla bla *********************************************/.2)) gen int d = real(substr(date.2)). 4.smcl (tipo di default nel programma) .3. summ y m d.1.log 18 Nicola Tommasi . l´invio a capo.file .5. gen int m = real(substr(date.5. 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. *Commento: le tre righe seguenti hanno recode y (90=1990) (91=1991) (92=1992) (94=1994) (95=1995) (96=1996) (98=1998) (99=1999) (00=2000) (02=2002) (03=2003) (04=2004) gen new_data = mdy(m. 4. I files . In quest’ultimo caso verrà richiesto il riavvio del programma.com/support/updates/ 3 Attraverso 'File -> Log -> View' o apposita icona..stata. update all ---------------------------------------------------> update ado (contacting http://www. Si può scegliere il tipo di log attraverso il comando set logtype text|smcl .4.com) executable already up to date in questo modo verranno prima aggiornati i files .ado di base del programma e poi l’eseguibile .com) ado-files already up to date ---------------------------------------------------> update executable (contacting http://www.log sono dei semplici file di testo senza nessun tipo di formattazione e possono essere visualizzati con qualsiasi editor di testo.stata.exe.smcl sono in formato proprietario di Stata e “abbelliscono” l’output con formattazioni di vario tipo (colori.. 4.). Aggiornare il programma I files . corsivo. Nicola Tommasi 19 . ma possono essere visualizzati solo con l’apposito editor integrato nel programma3 . Se non si possiede una connessione ad internet. permanently Si indica al programma di iniziare la registrazione tramite il comando log using filename .stata. Organizzare il Lavoro 4. append replace text|smcl name(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. sul sito di Stata è possibile scaricare gli archivi compressi degli aggiornamenti da installare all’indirizzo http://www.4 Aggiornare il programma Il corpo principale del programma di aggiorna tramite il comando update all . grassetto. 8 outreg2 Roy Wada 5 788.5. Thomas Steichen.8 psmatch2 Edwin Leuven. Jonathan Sterne.0 ranktest Mark E Schaffer. 255).. Mark E Schaffer.4 metan Mike Bradburn. Steven Stillman.. ssc inst bitobit checking bitobit consistency and verifying not already installed.3 overid Christopher F Baum. 4 In pratica la procedura vi dirà cosa cliccare per procedere automaticamente all’installazione. Di recente ad ssc è stata aggiunta la possibilità di vedere i comandi aggiuntivi (packages) più scaricati negli ultimi tre mesi: ssc whatshot . Roger Harbord. ssc whatshot. .2 gllamm Sophia Rabe-Hesketh 8 320. Doug Altman..3 xtivreg2 Mark E Schaffer 9 315.) verrà visualizzato l’intero elenco.. Specificando n(.4. Vince Wiggins 10 266. Jon Deeks ---------------------------------------------------------------------(Click on package name for description) Siete curiosi di vedere tutti i pacchetti disponibili? Andate in Appendice B (pag. Christopher F Baum. all replace . Ross Harris.0 outreg John Luke Gallup 2 911.0 tabout Ian Watson 11 251. installation complete.1 estout Ben Jann 3 847.6 xtabond2 David Roodman 4 830. installing into c:\ado\plus\. 20 Nicola Tommasi . n(12) Top 12 packages at SSC Oct2007 Rank # hits Package Author(s) ---------------------------------------------------------------------1 1214. Per fare ciò è necessario conoscere il nome del nuovo comando e dare il comando ssc install pkgname . Frank Kleibergen 12 246. Esiste anche la possibilità di installare i nuovi comandi attraverso la funzione di ricerca. n(#) dove # specifica il numero di packages da visualizzare (n(10) è il valore di default).5 Aggiungere comandi Come accennato in precedenza è possibile aggiungere nuovi comandi scritti da terze parti. In questo caso vengono fornite direttamente le indicazioni da seguire4 .6 ivreg2 Mark E Schaffer. Organizzare il Lavoro Sul sito vengono fornite tutte le istruzioni per portare a termine questa procedura 4. Barbara Sianesi 7 508. Steven Stillman 6 667. Aggiungere comandi 4. Fare ricerche Non è raro (anzi) che questi nuovi comandi vengano corretti per dei bugs.6. search_options oppure findit word word .bc.stata.4.. Personalmente preferisco il secondo. [90] examples Cleaning up.edu/repec/bocode/h: installed package is up to date Packages to be updated are.´EXAMPLES´: module to show examples from on-line help files Installing updates..edu/repec/bocode/m: installed package is up to date [2] sg12 at http://www. options .com/production: installed package is up to date [97] hotdeck at http://fmwww. 4.stata-journal. . update (note: adoupdate updates user-written files. oppure migliorati con l’aggiunta di nuove funzioni. Per controllare gli update di tutti i nuovi comandi installati si usa il comando adoupdate pkglist .. adoupdate..to check for updates to official Stata) Checking status of installed packages.... Nicola Tommasi 21 ..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 . [1] mmerge at http://fmwww. type -update. Done il quale si occupa del controllo delle nuove versioni e quindi della loro installazione.bc.com/stb/stb10: installed package is up to date (output omitted ) [96] sjlatex at http://www. [90] examples -. Entrambi i comandi effettuano una ricerca sui comandi e sulla documentazione locale e su tutte le risorse di Stata disponibili in rete... Organizzare il Lavoro 4. options Per fare ricerche si possono usare indifferentemente: search word word ... The shape and dbase files / must have the same name and be saved in the same directory.bc. lablog defines value labels for values which are base 10 / logarithms containing the antilogged values. and / is particularly suited for drawing thematic maps and displaying / the results of spatial data analyses.stata. and STBs Web resources from Stata and other users (contacting http://www.bc. combined with the tmap from http://fmwww. or swaps them around. search maps.bc. Fare ricerche Un esempio (findit fornisce lo stesso risultato): .bc.bc. / right and bottom sides of an equilateral triangle.package. Organizzare il Lavoro maps (1) Official help files.shp) and dbase (. SJs.4. / KW: maps / KW: MapInfo / shp2dta from http://fmwww.edu/RePEc/bocode/t ´TMAP´: module for simple thematic mapping / the package published in The / Stata Journal carrying out simple / thematic mapping. FAQs.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).6. mca / actually conducts an adjusted simple correspondence analysis on / the Burt matrix constructed mif2dta from http://fmwww. FAQs.edu/RePEc/bocode/s ´SHP2DTA´: module to converts shape boundary files to Stata datasets / shp2dta reads a shape (. rightvar and botvar. all Keyword search Keywords: Search: 4.edu/RePEc/bocode/s ´SPMAP´: module to visualize spatial data / spmap is aimed at visualizing several kinds of spatial data.bc.dbf) file from disk and / converts them into Stata datasets.bc. Examples. which are plotted on the left. labcd defines value / labels in which decimal points mca from http://fmwww. Proper specification of / spmap options and suboptions. SJs. This considered as a / beta version: comments and This is a revised version of 4(4):361-378 (2004) for new release should be problem reports to the author triplot from http://fmwww.edu/RePEc/bocode/l ´LABUTIL´: modules for managing value and variable labels / labcopy copies value labels.edu/RePEc/bocode/u ´USMAPS´: module to provide US state map coordinates for tmap / This 22 Nicola Tommasi .com) 9 packages found (Stata Journal and STB listed first) ----------------------------------------------------labutil from http://fmwww.edu/RePEc/bocode/t ´TRIPLOT´: module to generate triangular plots / triplot produces a triangular plot of the three variables / leftvar. Each should / have values between 0 and some maximum value usmaps from http://fmwww.bc. labdel deletes / them. Examples. and STBs (2) Web resources from Stata and from other users Search of official help files. The / user-written spmap from http://fmwww.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. 2004).7. 4:4.bc. 2004).7 Cura dei dati Alcune considerazioni riguardanti la cura e la sicurezza dei dati e dei programmi: 1. ABI banche bank_efficiency BEI comune conti_intergenerazionali coorti ended_projects ESEV gerosa instrumental_variables isee ISMEA ISTAT medici oculisti popolazione provincia scale2000 scale_equivalenza shape silc s_cuore 2. Personalmente ho una cartella projects all’interno della quale ci sono le cartelle con i vari progetti in corso di svolgimento.. Organizzare il Lavoro 4.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. A do-file illustrates their usage. dir <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> 8/25/07 8/25/07 2/19/04 6/02/05 5/01/05 6/14/07 5/05/07 6/17/06 8/04/07 3/11/04 5/14/05 5/12/07 8/13/04 3/25/07 8/01/07 5/01/05 6/18/05 5/21/06 8/25/07 6/20/06 6/23/07 11/20/04 6/02/07 5/01/07 8/11/07 8:16 8:16 18:11 8:28 11:46 20:23 9:19 16:44 10:35 22:16 9:28 11:53 7:55 10:13 17:41 10:17 8:25 8:33 8:26 11:50 10:14 11:41 8:54 10:25 7:55 . / KW: maps / KW: states / KW: usmaps2 from http://fmwww. Per esempio la lettura di dati in formato testo e il salvataggio di questi in formato Stata deve precedere le elaborazioni su questi dati.4. Nicola Tommasi 23 . Cura dei dati package contains several Stata datafiles with US state / geocode coordinates for use with Pisati´s tmap package (Stata / Journal. 4:4. Adibire una cartella per ciascun progetto e racchiudere tutti i progetti in una cartella. All’interno di ciascuna cartella di progetto stabilire un ordine di cartelle che rifletta lo svolgimento logico del lavoro. / KW: maps / KW: counties / KW: (end of search) 4. A do-file illustrates their usage. Man mano che i progetti terminano vengono spostati nella cartella ended_progects G:\projects . . 4.. cd 03_source. cd 05_disoccupazione. do master. I files di dati di partenza devono rimanere inalterati. 5.do /** che lancia. set more off. nell´ordine -panel_link. 24 Nicola Tommasi .do. master. cd 04_separazioni.. Usare sempre percorsi relativi..do. dir <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> <dir> 0. Cura dei dati .do...do 3.. cd .do.do sons.do ****/.do hids.do nell’ordine corretto.. cd conti_intergenerazionali G:\projects\conti_intergenerazionali .do -panel_a..do -panel_h.5k 4. do master.do coppie.7. do master. cd 02_final_data.. do read.do che si occupa di lanciare tutti i files .do rela_by_wave. cd . set mem 250m. cd 99_GA. capture log close. Ci dovrebbe sempre essere un file master.. cd .do 4. cd . 00_docs 01_original_data 02_final_data 03_source 04_separazioni 05_disoccupazione 06_povertà 99_GA master.do di conti_intergenerazionali #delimit. cd . clear. Organizzare il Lavoro 6/17/06 6/17/06 6/24/06 4/25/06 6/02/06 6/02/06 6/02/06 6/04/06 6/02/06 6/25/06 8/30/05 16:44 16:44 15:52 8:18 9:29 9:29 9:29 11:39 9:29 9:13 8:50 .do occupati. . master. Se i dati di partenza vengono in qualsiasi modo modificati vanno salvati con un altro nome.do di 03_source clear do do do do do do rela. do master.. Organizzare il Lavoro 4.do. Fare un backup giornaliero dei propri progetti (sia files di dati che files .log lo stesso nome del file . Nicola Tommasi 25 . Con replace sovrascrivo un eventuale file di log con lo stesso nome. 7.do Naturalmente questa è solo un’indicazione per nulla vincolante.do Altrimenti si inficia il principio di riproducibilità 6.log. avvio la registrazione degli output. Intestazione file . 8.8 Intestazione file .8. assegno un adeguato quantitativo di memoria set more off. Cosa faccio con questo incipit? #delimit.: Il nome del file . replace. P. replace. set mem 250m. clear. definisco il delimitatore di fine comando clear.S.4. Dare ai files di log lo stesso nome del file do che li genera.log. ma io consiglio di iniziare i files . elimino eventuali dati in memoria set mem 250m. capture log close. 4. Possibilmente assegnare al file xxxxxx. Si possono separare gli identificativi personali dal resto dei dati e poi i files con questi dati andrebbero criptati.do così: #delimit. 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. set more off. ciascuno faccia come meglio crede. I dati sensibili vanno protetti.do). log using panel. chiudo un eventuale file di log aperto log using xxxxxx.do dovrebbe essere breve (non più di otto lettere diciamo) e non contenere spazi bianchi. Un backup fatto male (o non fatto) può far piangere anche un uomo grande e grosso. . in quanto non ci possono essere 2 database contemporaneamente in memoria. Inoltre bisogna tener presente anche la versione del programma secondo il presente schema hhhh hhh hh Dati letti da hhh Dati salvati da StataMP StataSE Intercooled Small StataMP hhhh h h SI SI SI SI StataSE SI SI SI SI Intercooled NO NO SI SI Small NO NO SI(?) SI Il comando per caricare i dati in formato proprietario di Stata (estensione .1 L’input dei dati Caricamento dei dati in formato proprietario Vale la regola generale che la realise più recente legge i dati scritti nelle realise precedenti.2 Caricamento dei dati in formato testo Esistono diversi comandi in Stata per caricare dati in formato testo (ASCII). 5. molto raramente si danneggiano e sono utilizzabili anche su piattaforme diverse da quelle Microsoft. ma le precedenti non leggono quelle più recenti.1.1 5.1 alla pagina 37. 1 27 . I dati in formato testo sono leggeri in termini di dimensione del file. Val la pena di ricordare che questo formato sarebbe da preferire quando i dati saranno utilizzati anche con altri programmi1 .Capitolo 5 Alcuni Concetti di Base 5.dta) è use filename . clear L’opzione clear è necessaria per pulire la memoria dall’eventuale presenza di altri dati. Questo argomento viene trattato in forma maggiormente estesa e dettagliata nel capitolo 6.1. 3 alla pagina 45.' non sono consigliati in quanto possono generare confusione in relazione alla sintassi numerica europea e anglosassone. Regole per denominare le variabili 5.' '. o ancora 14a_rc d14b_rc d14c_rc d14d_rc d14e_rc d14f_rc.1.' '|' '<tab>' Qui viene fatta solo un’introduzione ai dati in formato testo.' e '.. Ogni variabile deve avere il suo nome 2..2 Regole per denominare le variabili Esistono due metodi per nominare le variabili: assegnare un nome evocativo o assegnare un codice. Questo programma è usabile anche direttamente all’interno di Stata tramite appositi comandi che vedremo più avanti (inputst e outputst) nel capitolo 6.5. 5. La trattazione per esteso verrà fatta nel capitolo 6.2 alla pagina 41.2. In questa maniera il nome della variabile ci aiuta a richiamare il suo contenuto informativo. Se però abbiamo centinaia di variabili. Il nome di ciascuna variabile deve essere univoco 3. In questo contesto meglio ricorrere ad una nomenclatura di tipo sistematico. I dati sono delimitati se ciascuna variabile è separata da un certo carattere. Il nome delle variabili è case sensitive per cui redd è diverso da REDD o da Redd 4. Quelle che seguono sono regole (e consigli) cui sono sottoposti i nomi che intendiamo assegnare alle variabili: 1.' 2 '. Per esempio assegnare d01 d02 d03 d04 d05 alle risposte delle domande da 1 a 5 o nomi del tipo score_10 score_11 . consigliato dalla stessa Stata Corp. Alcuni Concetti di Base La prima cosa da sapere è se i dati sono delimitati o non delimitati. di solito '. Il nome non deve contenere I caratteri '.3 Caricamento dei dati in altri formati proprietari (StatTransfer) È possibile convertire dataset da altri formati al formato di Stata attraverso il programma commerciale StatTransfer. 5. assegnare a ciascuna un nome evocativo può diventare problematico. 2 28 Nicola Tommasi . Per esempio possiamo chiamare redd la variabile che contiene l’informazione sul reddito o age la variabile che contiene l’informazione sull’età. Un piccolo esempio può aiutare la comprensione di questo concetto.3. 1 7. 1 5. La lunghezza non può superare i 32 caratteri anche se per motivi di praticità è consigliabile non superare la decina di caratteri 7. 2 9. consente di restringere l’insieme delle osservazioni su cui applicare il comando. Meglio non usare lettere accentate 5.8 29. list sex age in 2/6 +-----------+ | sex age | |-----------| | 2 22 | | 1 11 | | 1 36 | | 2 88 | | 1 47 | +-----------+ 2. 1 4. 1 2. 2 age 45 22 11 36 88 47 72 18 17 se eseguo i seguenti comandi . 6.5. Supponiamo di avere 10 osservazioni per 2 variabili come segue: sex 1. Il qualificatore in (a) spazi (b) trattini (-). 2 3. Alcuni Concetti di Base 5. Si noti che questo qualificatore risente dell’ordinamento dei dati. 3. 2 8. . Min Max -------------+-------------------------------------------------------age | 5 40. 5. assieme al qualificatore if. Il nome non può iniziare con un numero 6.71027 11 88 Stata mostra le osservazione dalla 2.-6. Possibilmente usare solo lettere minuscole (sempre per motivi di praticità) 8. è invece consentito l’underscore (_) (c) caratteri non alfabetici o non numerici ( . summ age in 2/6 Variable | Obs Mean Std. nel senso che fa riferimento alla posizione assoluta dell’osservazione. alla 6. 4. : C # § * ^ ? ’ = ) ( [ ] / \ & % $ £ ” ! | > <) 5. . Se adesso ordino le il dataset in base alla variabile age Nicola Tommasi 29 . 2 6. ed esegue il comando summ sulle osservazioni 2. . Dev.3 Il qualificatore in Buona parte dei comandi di Stata supportano l’uso del qualificatore in che. ma dipende dall’ordinamento delle osservazioni (sort) 5. Dev.6 12. ma con risultati differenti perchè il comando sort ha cambiato la posizione delle osservazioni. summ age in 2/6 Variable | Obs Mean Std. Sempre facendo riferimento al dataset appena usato: . e rieseguo gli stessi comandi . 2.4 Il qualificatore if La quasi totalità dei comandi di Stata supporta l’uso del qualificatore if. Anche in questo caso un esempio aiuta la comprensione. 4. sort age . 3. 9. 5.4. 6. . list sex age if sex==1 30 Nicola Tommasi . Alcuni Concetti di Base 1. ed esegue il comando summ sulle osservazioni 2. Il qualificatore if .34099 17 45 Stata mostra ancora le osservazione dalla 2. 5. 4. Min Max -------------+-------------------------------------------------------age | 5 27. 6. list sex age in 2/6 +-----------+ | sex age | |-----------| | 2 17 | | 2 18 | | 2 22 | | 1 36 | | 1 45 | +-----------+ 2. 7. 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. alla 6.-6.5. list +-----------+ | sex age | |-----------| | 1 11 | | 2 17 | | 2 18 | | 2 22 | | 1 36 | |-----------| | 1 45 | | 1 47 | | 2 72 | | 2 88 | +-----------+ 5. 8. Esso ha la funzione di selezionare le osservazioni su cui applicare il comando vincolando la scelta al verificarsi della condizione specificata nell’ if. 3. summ sex age if sex==1 Variable | Obs Mean Std. 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. sort age . Dev. Alcuni Concetti di Base +-----------+ | sex age | |-----------| | 1 11 | | 1 36 | | 1 45 | | 1 47 | +-----------+ 5. 5.5.5. . Dev. Il risultato in questo caso è invariante rispetto all’ordinamento: . list sex age if sex==1 +-----------+ | sex age | |-----------| | 1 11 | | 1 36 | | 1 45 | | 1 47 | +-----------+ 1. Min Max -------------+-------------------------------------------------------sex | 4 1 0 1 1 age | 4 34. Operatori di relazione 1. Min Max -------------+-------------------------------------------------------sex | 4 1 0 1 1 age | 4 34. 7. 5. Nicola Tommasi 31 . 7. Nel caso sia verificata la relazione.75 16. altrimenti no.54035 11 47 I comandi vengono eseguiti solo sulle osservazioni che assumono valore 1 nella variabile sex.54035 11 47 5. 6.75 16. summ sex age if sex==1 Variable | Obs Mean Std. 6. .5 Operatori di relazione Gli operatori relazionali in Stata restituiscono sempre una risposta vero/falso. viene eseguito il comando. | (or) .“nicola” > “beda” restituisce vero perché 'nicola' in ordine alfabetico è successivo a 'beda' . In tal caso i secondi vengono convertiti nei primi. Si ricorda anche che all’interno della stessa variabile non possono essere presenti contemporaneamente dati stringa e numerici.6. Operatori logici 5.8 > 4 restituisce vero .8 < 4 restituisce falso .& (and) .7 Caratteri jolly e sequenze In Stata è possibile usare i caratteri jolly per indicare gruppi di variabili. 0 se non sono verificate.6 Operatori logici Gli operatori logici in Stata sono: . 5. Come è prassi in informatica il carattere * serve ad indicare qualsiasi carattere e per un numero qualsiasi di volte. > # ovvero un dato numerico missing è sempre maggiore di una dato numerico non missing. .˜ o ! (not) Gli operatori logici vengono usati per stabilire delle relazioni tra due o più espressioni e restituiscono 1 se sono verificate. Ed ora alcuni esempi: .“” > “stringa” ovvero un dato stringa missing è sempre maggiore di una dato stringa non missing.'). avendo la seguente lista di variabili: 32 Nicola Tommasi . & 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.. Alcuni Concetti di Base Le relazioni si applicano indifferentemente a dati numerici e a dati in formato stringa. Per esempio.5. vale la relazione: .“nicola” > “Beda” restituisce falso perché le lettere maiuscole sono ordinate prima delle lettere minuscole Per i dati missing (indicati con il simbolo '. age. risc.dipende da come sono disposte le variabili.? indica nessuna variabile perché non c’è nessuna variabile di un solo carattere.90948 15. spesa1997. ma non spesa95 (solo 4 caratteri prima di 95) . Min Max -------------+-------------------------------------------------------age | 12251 55. sempre nel nostro caso. redd96-risc indica redd96.????95 indica solo redd95. In sostanza il by serve per ripetere un comando più volte in base ad una certa variabile (categorica). centro o sud+isole (macro3).redd?? indica redd95.*95 indica redd95 e spesa95 . redd1998.8 L’espressione by Molti comandi hanno la caratteristica di essere byable. redd96. non rientrerebbe più nell’elenco. summ age if macro3==1 Variable | Obs Mean Std. redd97 e risc Il carattere ? invece serve per indicare un qualsiasi carattere per una sola volta. nel nostro esempio: . redd97 ma non redd1998 (solo 2 caratteri dopo redd) Con il simbolo . spesa1996. L’espressione by .5.82015 19 101 Nicola Tommasi 33 . redd96. Alcuni Concetti di Base redd95 spesa1995 redd96 spesa1996 redd97 spesa1997 redd1998 age risc sesso 5. ovvero supportano l’uso del prefisso by. sud+isole=3): .8. 5. centro=2. Supponiamo di avere l’età (age) di N individui e di sapere per ciascuno di essi se risiede nelle macro regioni nord. Si faccia attenzione che il simbolo .* indica tutte le variabili . redd97.r* indica redd95.si indica una successione contigua di variabili. Se la variabile redd97 venisse spostata all’inizio della lista. qualsiasi esso sia . Dev. Volendo conoscere l’età media per ciascuna delle macro regioni (nord=1. Min Max -------------+-------------------------------------------------------age | 9995 55. Dev. summ age if macro3==3 Variable | Obs Mean Std. per cui esso può assumere la duplice natura di prefisso e di opzione. by macro3. Un dato missing sull’occupazione di un neonato non è una mancata risposta ma una domanda che non può es34 Nicola Tommasi . Alternativamente si può ricorrere alla variazione di questo comando: bysort macro3: summ age che da’ il medesimo risultato del precedente.96738 15.69984 21 102 oppure. Dati missing . Dev.90948 15. da cui l’uso dell’opzione sort.82015 19 101 ----------------------------------------------------------------------> macro3 = Centro Variable | Obs Mean Std.03001 19 98 ----------------------------------------------------------------------> macro3 = Sud & Isole Variable | Obs Mean Std.69984 21 102 Per l’esecuzione tramite by bisogna che il dataset sia preventivamente ordinato in base alla variabile categorica. Vedremo in seguito che by rientra anche tra le opzioni di molti comandi. Min Max -------------+-------------------------------------------------------age | 9995 55.96738 15. Questa è la sua rappresentazione generale ma c’è la posibilità di definire un sistema di identificazione di valori missing di diversa natura.03001 19 98 . Alcuni Concetti di Base Variable | Obs Mean Std. Dev.5. Dev.56958 16.9 Dati missing Stata identifica con il simbolo '. Min Max -------------+-------------------------------------------------------age | 12251 55.' un dato missing numerico. Min Max -------------+-------------------------------------------------------age | 5253 56. Per esempio un dato missing per mancata risposta è concettualmente diverso da un dato missing dovuto al fatto che quella domanda non può essere posta. summ age if macro3==2 5.56958 16. sort: summ age ----------------------------------------------------------------------> macro3 = Nord Variable | Obs Mean Std. 5.9. Dev. ricorrendo al by e all’uso di una sola riga di comando al posto delle 3 precedenti: . Min Max -------------+-------------------------------------------------------age | 5253 56. ..5.a. Min Max -------------+-------------------------------------------------------q01 | 12 49. Nel caso si debba fare riferimento ad un dato missing stringa si usano le doppie vigolette come segue: ...b.c "Non appicabile" Quanto esposto precedentemente si riferisce a dati numerici... Alcuni Concetti di Base 5.z Poi a ciascuno di questi diversi missing possiamo assegnare una sua label: label define 1 ".z e vale l’ordinamento: tutti i numeri non missing < . In Stata possiamo definire diversi missing secondo la struttura .b < .. . . < ... .0g q01 età q03 str29 %29s q03 comune di residenza .b "Non sa" ..... summ q01 if q03=="" Variable | Obs Mean Std.." 2 ".75 29.9... < ....19877 1 90 Nicola Tommasi 35 . .. Per le variabili stringa non esiste nessun metodo di codifica e il dato missing corrisponde ad una cella vuota (nessun simbolo e nessuno spazio).. Dati missing sere posta.a < . desc q01 q03 storage display value variable name type format label variable label ---------------------------------------------------------------------q01 int %8. .a "Non risponde" .c." ..... Dev. . Se possibile consiglio di allocare un quantitativo di RAM all’incirca doppio rispetto al dataset di partenza se si dovranno creare molte nuove variabili. sarà sottratto alla memoria di sistema. set mem 250m Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------set maxvar 5000 max.dta) Caricare i dati in formato Stata (.000M set matsize 400 max.1 Dati in formato proprietario (. Notes: 1. 2. Stata è impostato con una allocazione di default di circa 1.5MB. Se per esempio dobbiamo caricare un file di dati di 88MB dobbiamo dedicare al programma questo quantitativo aumentato in funzione della eventuale creazione di nuove variabili. altrimenti un incremento del 50% può essere sufficiente dato che un certo quantitativo di RAM viene comunque utilizzato per le elaborazioni. variables allowed 1.dta) è un’operazione semplice e come vedremo ci sono diverse utili opzioni. (/m# option or -set memory-) 10. data space 250. RHS vars in models 1. il quale.909M set memory 250M max.00 MB allocated to data (/v# option or -set maxvar-) 5000 maximum variables Il comando per allocare un diverso quantitativo di memoria è : set memory # b|k|m|g . Come già accennato Stata mantiene tutti i dati nella memoria RAM per cui bisogna allocarne un quantitativo adeguato.254M ----------- 37 .Capitolo 6 Il Caricamento dei Dati 6. permanently . Nel momento in cui avviate il programma vi viene fornita l’informazione circa l’attuale allocazione di RAM. Ma prima di caricare un dataset bisogna porre attenzione alla sua dimensione. Anno 2003) . Drop some variables or observations.Anno 2003) no room to add more observations An attempt was made to increase the number of observations beyond what is currently possible. RHS vars in models 1. set mem 5m Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------set maxvar 5000 max.dta Ricordo che ci può essere un solo dataset in memoria. variables allowed 1. use istat03.254M ----------8. . 3. desc. (Think of Stata´s data area as the area of a rectangle.909M set memory 5M max. see help compress.) 2.6. see help memory. Store your variables more efficiently. clear (Indagine sui Consumi delle Famiglie . Stata non carica i dati: . see help drop.000M set matsize 400 max. You have the following alternatives: 1.il quantitativo di RAM dedicato non deve superare la RAM totale del computer e tenete presente che un certo quantitativo serve anche per il normale funzionamento del sistema operativo. Il Caricamento dei Dati 253. data space 5. ovvero con nessun dataset in memoria1 .163M e va eseguito prima di caricare il dataset. use istat03.163M . Inoltre bisogna tener presenti le seguenti limitazioni: . Stata can trade off width and length. r(901). Increase the amount of memory allocated to the data area using the set memory command.1. clear (Indagine sui Consumi delle Famiglie . perm Se il quantitativo di memoria non è sufficiente. Se volete allocare in maniera permanente un certo quantitativo di RAM in maniera che ad ogni avvio questo sia a disposizione di Stata: set mem #m. Dati in formato proprietario (. Il problema per la versione italiana dovrebbe essere risolto con il prossimo rilascio del service pack 3 di Windows XP. .attualmente Windows ha problemi ad allocare quantitativi superiori ai 950MB2 . 2 1 38 Nicola Tommasi . short Contains data from istat03.dta) 6. use hhnr persnr sex using carica.1.in if possiamo specificare di voler caricare solo quelle osservazioni che rispondono a certi criteri . Abbiamo già visto l’uso di base del comando use nella sezione 5. siamo pronti per caricare il nostro dataset. clear nolabel dove: . è questa: use varlist if in using filename .761 vars: 80 size: 294.1% of memory free) Sorted by: . Il Caricamento dei Dati obs: 2.254M ----------18.dta) Indagine sui Consumi delle Famiglie . clear .909M set memory 15M max. clear .Anno 2003 23 Nov 2006 09:13 vars: 551 size: 2. use carica.087 (98. short Contains data from carica.000 6.6. desc. Dati in formato proprietario (. variables allowed 1.800. short Contains data from carica.000 (46.in in possiamo specificare di voler caricare solo un range di osservazioni E adesso proviamo ad usare i comandi appena visti: . RHS vars in models 1.893 (99.163M .dta obs: 1. desc. Si noti anche che il file di dati può essere caricato da un indirizzo internet.9% of memory free) Sorted by: 18 Oct 2006 10:30 18 Oct 2006 10:30 Nicola Tommasi 39 . Una versione più evoluta del comando use.1.1 (pagina 27). set mem 15m Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------set maxvar 5000 max. data space 15.6% of memory free) Sorted by: Allocato un quantitativo adeguato di RAM. clear .dta obs: 1.000M set matsize 400 max.761 vars: 3 size: 22.in varlist possiamo mettere l’elenco delle variabili da caricare nel caso non le si voglia tutte . com/data/r9/union. use http://www. clear (NLS Women 14-24 in 1968) . short Contains data from carica. clear .406. short Contains data from http://www. è inutile sprecare memoria per i decimali. desc. Per esempio se una variabile può assumere solo valori interi 1 o 2.stata-press. compress sons_head was float now byte sons_head_00_18 was float now sons_head_00_05 was float now sons_head_06_14 was float now sons_head_15_18 was float now sons_head_19_oo was float now nc was float now byte couple was float now byte parents was float now byte 26 Mar 2004 17:54 byte byte byte byte byte 40 Nicola Tommasi .stata-press.dta obs: 26.1.191 (99.000 (92.dta.966 (99. short Contains data from istat_long. desc. desc.com/data/r9/union. use in 8/80 using carica.4% of memory free) Sorted by: anno fam_id .8% of memory free) Sorted by: 18 Oct 2006 10:30 Ed ecco anche un esempio di dati caricati da internet .6.280 vars: 13 size: 2. use istat_long. Il comando deputato a ciò in Stata è: compress varlist .dta obs: 46.560 (95.dta obs: 73 vars: 80 size: 12.dta) 6. clear .dta obs: 898 vars: 80 size: 149. use if sex==2 using carica. Dati in formato proprietario (. short Contains data from carica. Il Caricamento dei Dati .0% of memory free) Sorted by: 18 Oct 2006 10:30 .200 NLS Women 14-24 in 1968 vars: 10 27 Oct 2004 13:51 size: 393.5% of memory free) Sorted by: È possibile migliorare l’uso della memoria attraverso un processo che ottimizzi il quantitativo di memoria occupato da ciascuna variabile. desc. clear . 2.1 Formato testo delimitato Questi dataset sono caratterizzati dal fatto che ciascuna variabile è divisa dalle altre da un determinato carattere o da tabulazione.dta obs: 46.tab per indicare che i dati sono divisi da tabulazione . tab clear legge le variabili contenute nel file dati. 6. 6.2 Dati in formato testo Spesso i dataset vengono forniti in formato testo.txt.clear da aggiungere sempre per pulire eventuali altri dati in memoria per esempio il comando insheet using dati.320 (98.delimiter("char") per specificare tra “” quale carattere fa da divisore (per es.280 vars: 13 size: 879. Questa scelta è dettata dal fatto che il formato testo è multi piattaforma e che può essere letto da tutti i programmi di analisi statistica. Dati in formato testo 26 Mar 2004 17:54 Come si può notare dalla riga intestata size: la dimensione del dataset si è ridotta di un fattore 3 (non male vero?). options tra le opzioni più importanti: . Per l’utilizzo in Stata si distingue tra dati in formato testo delimitato e non delimitato. Il Caricamento dei Dati relatives was float now byte hhtype was float now byte .' '. “|”) .' '|' <spazio> <tabulazione> Il comando deputato alla lettura di questi dati è: insheet varlist using filename .comma per indicare che i dati sono divisi da virgola . Naturalmente non tutti i caratteri sono adatti a fungere da divisori e in generale i più utilizzati sono: '.6.txt dove una tabulazione funge da divisore.3% of memory free) Sorted by: anno fam_id 6.2. desc. Nicola Tommasi 41 . short Contains data from istat_long. Si impartisce il comando senza la lista delle variabili e lo using fa riferimento al file dictionary (filename). sono tipici dei file di testo delimitati e lo using fa riferimento al file che contiene i dati (filename).2. var2 e var10 nel file dati. e 4. infile using filename | 4. b. delim("|") 6.dct. using filename .. Nel file dictionary si indicano il file che contiene i dati e le variabili da leggere (che possono essere indicate in varie maniere) d.txt. e 2.2. 42 Nicola Tommasi .txt) c.. Dati in formato testo insheet var1 var2 var10 dati. options quest’ultimo comando prevede anche l’uso del file dictionary che sarà trattato per esteso per i dati in formato testo non delimitato. Le indicazioni contenute nel file dictionary vengono usate per leggere i dati in formato non delimitato. insheet varlist using filename 2. altrimenti va indicato completo di nuova estensione nel comando (es. il procedimento da seguire si snoda nelle seguenti fasi: a.2 Formato testo non delimitato Per capire come Stata può acquisire questo tipo di dati ci serviamo del seguente schema: 1. infile varlist using filename | +--------------------> +--> | | | | 3.: infile using filename.txt dove il carattere '|' funge da divisore. Nel caso in cui il divisore sia uno spazio (caso abbastanza raro in realtà) si può usare il comando: infile varlist if in _skip (#) varlist _skip (#) .6. Nei casi 3. Il file dictionary deve avere estensione . 6. infix using filename | | +-----------------+ | +--> | file contenente |---+ | il dictionary | +-----------------+ +-----------------+ | | | file contenente | | i dati | | | +-----------------+ I casi 1. Il Caricamento dei Dati legge tutte le variabili var1. ext { nomevar tipo&lenght "label" .. .ext a seconda del comando che vogliamo utilizzare e dove data. Costruzione del dictionary per il comando infile È un tipo di dictionary poco usato in verità. Per i casi di salti di variabili..ext oppure infix dictionary using data. Per esempio: infile dictionary var1 %1f var2 %4f var3 %4. più 2 decimali var4 è stringa (e questo deve essere specificato prima del nome della variabile) ed occupa 12 spazi. } La parte “più difficile” da costruire è quella centrale in quanto bisogna porre attenzione alla lunghezza delle singole variabili che solitamente sono indicate nella documentazione che accompagna i dati. In questa sezione tratteremo solo i casi classici.ext è il file contenente i dati..22 qwertyuioplk 2 9101 9874. di salti di righe o di osservazioni distribuite su 2 o più righe si rimanda ad una prossima versione più completa ed approfondita sull’argomento. occupa 4 spazi per la parte intera.44 yhnbgtrfvcde Nicola Tommasi 43 ..ext { "label della var1" "label della var2" "label della var3" "label della var4" dove: var1 è numerica ed occupa uno spazio.33 mnbvcxzasdfr 5 1121 4256. più uno spazio per il simbolo decimale. occupa 4 spazi senza decimali (0-9999) var3 è numerica. Le varianti e le opzioni all’interno dei file dictionary sono molte.6. semplice file di testo che inizia con la riga: infile dictionary using data. La struttura è: infile dictionary using datafile. quindi è un intero 0-9 var2 è numerica. Data la lunghezza delle singole variabili possiamo ricostruire la struttura del database: 1 1234 4321.2f str12 var4 %12s } using datafile.2.11 asdfghjklpoi 1 5678 7456. Il Caricamento dei Dati 6. Dati in formato testo Anche questo è un Adesso analizziamo la struttura di un file dictionary. 55 plmqazxdryjn 6. } Anche in questo caso la colonna di inizio e quella di fine delle variabili vengono fornite con la documentazione che accompagna i dati.) Q06 8 19 6 7 Type of toilet Q07 8 25 1 TYPE QLN QLN QNT QLN QLN QNT QLN A questo punto. Costruzione del dictionary per il comando infix La struttura è: infix dictionary using datafile. Per fortuna nella maggior parte dei casi i dati sono in formato testo delimitato.. Dati in formato testo 9 3141 9632..ext { nomevar inizio-fine . come esercizio sarebbe simpatico provare a costruire il dictionary per questi due esempi. Per i dati ISTAT. .dct che ha la seguente struttura: 44 Nicola Tommasi ..dct.) Q03 8 11 6 4 Sanitation system Q04 8 17 1 5 Garbage disposal Q05 8 18 1 6 Amount pd. per prima cosa da Stata si impartisce il comando: infix using istat_rid.6. Il Caricamento dei Dati Un po’ complicato vero?? Solo le prime volte. Riprendendo l’esempio precedente il file dictionary sarebbe: infile dictionary using datafile.2. poi ci si fa l’abitudine.ext { var1 1 var2 2-5 var3 6-12 str12 var4 13-24 } Quello che segue è un estratto dalla documentazione che accompagna il database sui consumi delle famiglie italiane distribuito da ISTAT: INIZIO FINE AMPIEZZA VARIABILE CONTENUTO 1429 1429 1 P_7101 Possesso di televisore 1430 1437 8 C_7101 Acquisto televisore 1438 1438 1 P_7102 Possesso di videoregistratore 1439 1446 8 C_7102 Acquisto videoregistratore Mentre questo è estratto dai Living Standard della World Bank: VARIABLE CODE RT FROM LENGTH 1 Source of water Q01 8 9 1 2 Water piped to house? Q02 8 10 1 3 Amount paid water (Rs. garbage (Rs. clear come abbiamo visto questo comando richiama il file dictionary istat_rid.. SAS.dat { 1429-1429 1430-1437 1438-1438 1439-1446 6. Altri tipi di formati il quale chiama a sua volta il file dei dati istat_rid.)" Sanitation system" Garbage disposal" Amount pd.dat { 1429-1429 1430-1437 1438-1438 1439-1446} read) Per il file della World Bank invece il dictionary ha la seguente struttura: dictionary _column( _column( _column( _column( _column( _column( _column( } using RT008.DAT { 9) byte S02C1_01 10) byte S02C1_02 11) long S02C1_03 17) byte S02C1_04 18) byte S02C1_05 19) long S02C1_06 25) byte S02C1_07 %1f %1f %6f %1f %1f %6f %1f "1 "2 "3 "4 "5 "6 "7 Source of water" Water piped to house?" Amount paid water (Rs. infix using istat_rid. clear.)" Sanitation system" Garbage disposal" Amount pd. ) si ricorre.dat ottenendo questo output: .)" Type of toilet" (3373 observations read) 6.dct. excel. almeno per Stata. access. . garbage (Rs. Il Caricamento dei Dati infix dictionary p_7101 c_7101 p_7102 c_7102 } using istat_rid.ext switches Sito web: www. .3 Altri tipi di formati Per la lettura di dati salvati in altri tipi di formati proprietari (SPSS.)" Type of toilet" in questo caso usiamo il comando infile ottenendo: .6.com Nicola Tommasi 45 . Questo programma può essere usato in maniera indipendente o chiamato direttamente da Stata attraverso i comandi: inputst 3 filetype infilename.DAT { 9) byte S02C1_01 10) byte S02C1_02 11) long S02C1_03 17) byte S02C1_04 18) byte S02C1_05 19) long S02C1_06 25) byte S02C1_07 %1f %1f %6f %1f %1f %6f %1f "1 "2 "3 "4 "5 "6 "7 Source of water" Water piped to house?" Amount paid water (Rs.stattransfer. clear dictionary _column( _column( _column( _column( _column( _column( _column( } using RT008. al programma StatTransfer3 . pacchetto commerciale che di solito si acquista in abbinamento con Stata. garbage (Rs. infile using Z02C1.3. . infix dictionary p_7101 c_7101 p_7102 c_7102 (88 observations using istat_rid. 6.xls /tdati /y Nel primo caso si importano i dati del file excel database. Se i dati devono essere usati da altri utenti che non usano Stata è consigliabile l’esportazione in formato testo delimitato.sav /y esporta gli stessi dati in formato SPSS. e outputst filetype infilename.' e alla tabulazione.xls /y inputst database. xmlsave_options le possibili xmlsave_options sono: 46 Nicola Tommasi . lo switch /y serve a pulire eventuali dati già in memoria. Alla stessa maniera: outputst database. Il comando che consiglio di usare è: outsheet varlist using filename if in .ext switches 6. Si definisce come un file di testo strutturato ed ha il vantaggio della portabilità tra le applicazioni che lo supportano. per esempio '.4. Questa salva il dataset in memoria nel formato XML: xmlsave filename if in .xls. xmlsave_options Questa salva il sottoinsieme delle variabili specificate: xmlsave varlist using filename if in .4 Esportazione dei dati Poco fa abbiamo visto un esempio di esportazione dei dati. Esistono 2 versioni del comando. Per esempio: inputst database. tipico dei files . options dove in filename va specificato il nome del file di output e dove le opzioni principali sono: comma per avere i dati separati da '.xls contenuti nel foglio dati.'. Per i dati contenuti in un file excel potete anche copiarli e incollarli direttamente nel 'Data editor' (e viceversa).csv nolabel per esportare il valore numerico e non il label eventualmente assegnato alle variabili categoriche replace per sovrascrivere il file di output già eventualmente creato Una valida alternativa al formato testo puro è il formato XML. Il Caricamento dei Dati per esportare dati. 6. Esportazione dei dati per importare dati.' al posto della tabulazione che è l’opzione di default delimiter(char) per scegliere un delimitatore alternativo a '. nel secondo caso si leggono i dati dal file database. short. per leggere i dati salvati in XML si usa il comando xmluse filename . Nell’esempio che segue si parte con un dataset e dopo il comando preserve si prendono solo alcune variabili.24 S 01. In questi casi possiamo ricorrere all’accoppiata di comandi preserve restore Con preserve iberniamo il dataset sul quale stiamo lavorando.5 1:11:05 1:11:05 1:11:05 P / P / P / P / PM PM PM 01. xmluse_options che qui non viene trattato Tutti sappiamo che excel è il formato più diffuso per salvare dati (purtroppo!).21 S 01. poiché excel ha il brutto vizio (ma non è il solo) di “interpretare” i dati come in questo caso: 01.11. Nicola Tommasi 47 .5. Attenzione che anche questa opzione aumenta la dimensione finale del file replace sovrascrive un eventuale filename già esistente Per inciso.5 01.5 01.5 Cambiare temporaneamente dataset Come abbiamo già detto Stata consente l’utilizzo di un solo dataset alla volta. Cambiare temporaneamente dataset doctype(dta) salva il file XML usando le specifiche determinate da Stata per i files .05). Il Caricamento dei Dati 6. possiamo quindi fare dei cambiamenti su questo dataset o passare ad utilizzarne un altro.11.5 01.11. 6.dta doctype(excel) salva il file XML usando le specifiche determinate per i files Excel dtd include il DTD (Document Type Definition) nel file XML. ma per favore evitate di esportare i dati in tale formato.6. Può allora risultare scomodo salvare il dataset sul quale si sta’ lavorando per dedicarsi temporaneamente ad un altro e poi riprendere il primo. invece sono codici ateco (per la precisione codice 01.11. desc.11.2 S Gli ultimi tre casi sono stati interpretati da excel come delle ore. si salva il dataset e poi si torna a quello di partenza: .24 S 01. In seguito con il comando restore ritorniamo ad utilizzare il dataset precedentemente ibernato. Questa opzione è usata raramente ed inoltre aumenta la dimensione finale del file legible fa in modo che il file XML visivamente più leggibile. 00 .49 44. ------------+----------------------------------2001 | 16.593 100. .6. Cambiare temporaneamente dataset Contains data obs: 92.dta saved . short. desc.098 (91.162.00 .dta obs: 92. .062 18.062 100. replace.033 vars: 41 size: 28. Percent Cum.033 vars: 7 size: 7. keep if anno==2001. dal dataset di partenza di volta in volta si selezionano le osservazioni relative ad un dato anno. .13 18. (72531 observations deleted) . anno | Freq.00 100. tab anno. file tot_veneto. save tot_veneto. . Contains data obs: 92.0% of memory free) Sorted by: Note: dataset has changed since last saved .13 2003 | 23. preserve.098 (91.38 100.162. keep denom loc prov ateco_1l ric_ven tot_att > pos_fn roe roi ros rot effic ac_ric 48 Nicola Tommasi . Il Caricamento dei Dati 26 Nov 2007 18:00 Nell’esempio seguente invece.067 55.5% of memory free) Sorted by: .00 ------------+----------------------------------Total | 88.5. desc.033 vars: 41 size: 28.464 26.062 100. tab anno. si esportano e poi si ripristina ogni volta il dataset di partenza: . ------------+----------------------------------2001 | 16. Contains data from tot_veneto.00 ------------+----------------------------------Total | 16.838 (97. gen flag_test=0. restore.914. preserve. anno | Freq.0% of memory free) Sorted by: Note: dataset has changed since last saved 6. short.62 2005 | 49. keep tot_att cciaa ateco_1l for_giu prov anno. . Percent Cum. anno | Freq. Il Caricamento dei Dati > 6.62 2005 | 49.49 44. Nicola Tommasi 49 . .00 100.464 26. ------------+----------------------------------2005 | 49.62 2005 | 49.13 2003 | 23. Percent Cum. outputst interm_2003. keep denom loc prov ateco_1l ric_ven tot_att > pos_fn roe roi ros rot effic ac_ric > tot_c_pers rapp_ind mat_pc mat_ric cp_rv. tab anno.062 18.5. preserve. tab anno. ------------+----------------------------------2003 | 23. outputst interm_2005.464 100.13 18. restore. (65129 observations deleted) .49 44.067 100. anno | Freq.00 ------------+----------------------------------Total | 23. Percent Cum. restore.00 . anno | Freq. . outputst interm_2001. Percent Cum.00 ------------+----------------------------------Total | 49. keep denom loc prov ateco_1l ric_ven tot_att > pos_fn roe roi ros rot effic ac_ric > tot_c_pers rapp_ind mat_pc mat_ric cp_rv. anno | Freq. Cambiare temporaneamente dataset tot_c_pers rapp_ind mat_pc mat_ric cp_rv. ------------+----------------------------------2001 | 16. ------------+----------------------------------2001 | 16.xls /y. .00 ------------+----------------------------------Total | 88.062 18.067 55.593 100. preserve.13 18.6.xls /y. keep if anno==2003.00 ------------+----------------------------------Total | 88.067 55.464 100. .00 . keep if anno==2005.38 100. tab anno.38 100.00 . Percent Cum.13 2003 | 23. . . . (39526 observations deleted) .464 26.00 . tab anno. .00 100.067 100. .593 100.xls /y. 593 100. Il Caricamento dei Dati .13 18.464 26. .49 44. ------------+----------------------------------2001 | 16.062 18.00 50 Nicola Tommasi .5. restore.13 2003 | 23. Cambiare temporaneamente dataset 6.6. Percent Cum.00 ------------+----------------------------------Total | 88.38 100. anno | Freq.067 55. tab anno.62 2005 | 49. 0g Life expectancy. whites le_wmale float %9. memory_options che descrive il dataset senza troncare i nomi troppo lunghi delle variabili. white females le_b float %9.S. white males le_wfemale float %9.dta obs: 100 U. Descrivere i valori delle variabili categoriche (e anche questo) Per prima cosa diamo una prima occhiata al dataset sfruttando l’output di due comandi: describe varlist .Capitolo 7 Gestione delle Variabili 7. females le_w float %9. . Descrivere le variabili (questo invece sì) c.0g Life expectancy. adesso abbiamo caricato il database in Stata ma per renderlo intellegibile occorre: a.200 (99.0g Life expectancy. life expectancy. males le_female float %9.0g Life expectancy. full Contains data from C:/Programmi/Stata9/ado/base/u/uslifeexp. black males le_bfemale float %9.0g life expectancy le_male float %9.0g Life expectancy.0g Life expectancy.1 Descrizione di variabili e di valori Bene. desc.0g Year le float %9.0g Life expectancy. Descrivere il dataset (questo non è così indispensabile!) b. black females -----------------------------------------------------------------------------Sorted by: year Opzioni interessanti del comando sono: 51 . blacks le_bmale float %9.9% of memory free) (_dta has notes) -----------------------------------------------------------------------------storage display value variable name type format label variable label -----------------------------------------------------------------------------year int %9.0g Life expectancy. 1900-1999 vars: 10 30 Mar 2005 04:31 size: 4. 1. variabili senza label.7. 1992 ---------------------------------------------------------------------------type: label: range: unique values: tabulation: numeric (int) candidat [2.4] 3 Freq.) 1 compact per avere un report compatto delle variabili .: 1 0/15 ---------------------------------------------------------------------------frac (unlabeled) ---------------------------------------------------------------------------1 Attenzione che questa opzione su grandi moli di dati può comportare lunghi tempi di esecuzione. Descrizione di variabili e di valori 7. options tra le opzioni + utili: notes per visualizzare le note associate alle variabili tabulate(#) per visualizzare i valori delle variabili categoriche problems detail per riportare eventuali problemi del dataset (doppioni..: 1 0/15 ---------------------------------------------------------------------------inc Family Income ---------------------------------------------------------------------------type: label: range: unique values: tabulation: numeric (int) inc2 [1. 52 Nicola Tommasi . Per esempio su circa 4 milioni di osservazioni con un AMD 4000+ ha impiegato circa 25 minuti. 3 3 3 3 3 Numeric 1 2 3 4 5 Label <15k 15-30k 30-50k 50-75k 75k+ units: missing .. numero di osservazioni e spazio occupato (la prima parte dell’output precedente) detail per avere informazioni più dettagliate fullnames per non abbreviare il nome delle variabili Il secondo comando che prendiamo in esame è: codebook varlist if in .5] 5 Freq. in sostanza numero di variabili. variabili missing. Gestione delle Variabili short per avere delle informazioni più limitate. codebook ---------------------------------------------------------------------------candidat Candidate voted for. 5 5 5 Numeric 2 3 4 Label Clinton Bush Perot units: missing . 3 75% 8. dev: percentiles: numeric (double) [2.: .7.59] 14 33.4 units: missing . Gestione delle Variabili 7. dev: percentiles: numeric (double) [32219.52 25% 3.5 10% 39035 25% 55764 50% 97587 75% 130116 90% 176586 units: missing .3] 14 6. inc: Family Income ------------------Number of Observations ------------------------------ Nicola Tommasi 53 .01 0/15 ---------------------------------------------------------------------------pop (unlabeled) ---------------------------------------------------------------------------type: range: unique values: mean: std.: 1 0/15 Infine un comando per avere una analisi alternativa delle variabili: inspect varlist if in . dev: percentiles: numeric (float) [16.4 90% 11.1.190527] 14 104299 50490.1674 10% 18 25% 20 50% 36 75% 42 90% 48 units: missing .08. Descrizione di variabili e di valori type: range: unique values: mean: std.: 1 0/15 ---------------------------------------------------------------------------pfrac (unlabeled) ---------------------------------------------------------------------------type: range: unique values: mean: std.73333 3.25956 10% 2.3333 13.12. 1992 -----------------------------------| # # # | # # # | # # # | # # # | # # # | # # # +---------------------2 4 (3 unique values) Negative Zero Positive Total Missing Number of Observations -----------------------------Total Integers Nonintegers 15 15 ------------15 15 ----15 candidat is labeled and all values are documented in the label. inspect candidat: Candidate voted for.6 50% 6. Descrizione di variabili e di valori Total 15 ----15 ----15 7. 54 Nicola Tommasi . frac: ------| # | # # | # # | # # # | # # # | # . Gestione delle Variabili Integers 15 ----15 Nonintegers ----- | # # # # # | # # # # # | # # # # # | # # # # # | # # # # # | # # # # # +---------------------1 5 (5 unique values) Negative Zero Positive Total Missing inc is labeled and all values are documented in the label.08 12. # # # +---------------------16 59 (14 unique values) pfrac: -------| # | # | # # # # | # # # # # | # # # # # | # # # # # +---------------------2.7.3 (14 unique values) pop: -----| # | # | # # # # | # # # # # | # # # # # | # # # # # +---------------------32219 190527 (14 unique values) Negative Zero Positive Total Missing Negative Zero Positive Total Missing Negative Zero Positive Total Missing Number of Observations -----------------------------Total Integers Nonintegers 15 15 ------------15 15 ----15 Number of Observations -----------------------------Total Integers Nonintegers 15 1 14 ------------15 1 14 ----15 Number of Observations -----------------------------Total Integers Nonintegers 15 15 ------------15 15 ----15 Non sempre i dataset sono provvisti di label (descrizione) delle variabili e di label (descrizione) dei valori delle categoriche e quindi bisogna provvedere attraverso il comando label. label variable varname “label” per associare una etichetta di descrizione alla variabile e label data “label” per associare un titolo al dataset.1. 45 2 | 80 41. Associazione di tale oggetto alla variabile di pertinenza a. . nofix Se viene specificato .... .00 --------------+----------------------------------Total | 194 100. definizione dell’oggetto label label define nome_oggetto #1 “desc 1” modify nofix #2 “desc 2” .. add oppure modificare le descrizioni di valori già esistenti con label define nome_oggetto #i “desc i” #j “desc j” . --------------+----------------------------------1 | 94 48.69 3 | 3 1.76 100. nofix A partire dall’aggiornamento del 25 febbraio 2008 la sintassi di label values si è arricchita con la possibilità di specificare varlist al posto di varname.#n “desc n” . si azzera l’associazione tra le variabili specificate in varlist e la descrizione dei valori contenuta in nome_oggetto. Di conseguenza è possibile eseguire label values contemporaneamente su più variabili.1. .a | 17 8.45 48. Gestione delle Variabili 7.. associazione label values varname nome_oggetto .55 91. label define impo 1 "Molto importante" 2 "Importante" 3 "Poco importante" 4 "Per nulla importante"..00 ** DEFINIZIONE DELL´OGGETTO LABEL IMPO ** . add b. modify Ecco un esempio di quanto esposto: . tab q06.24 . ** AGGIUNTA DI UNA NUOVA SPECIFICAZIONE ALL´OGGETTO LABEL impo ** Nicola Tommasi 55 . Descrizione di variabili e di valori Infine vediamo l’associazione delle etichette alle variabili categoriche che si compie in due fasi: a. invece di nome_oggetto. Definizione di un “oggetto” label che associa a ciascun valore della variabile categorica la sua descrizione b.24 89. In seguito si potranno aggiungere ad una label già esistente dei nuovi valori con il comando label define nome_oggetto #t “desc t” #z “desc z” . Percent Cum. miss Prenotazione | Freq.7. La nuova sintassi è la seguente: label values varlist nome_oggetto | . a Molto importante Importante Poco importante Per nulla importante Non risponde Naturalmente.7.00 ---------------------+----------------------------------Total | 194 100. label list impo impo: 1 2 3 4 .45 Importante | 80 41. 7. Gestione delle Variabili *ASSOCIAZIONE ALLA VARIABILE q06 DELL´OGGETTO LABEL impo ** . tab q06.a "Non risponde".24 89. label dir impo ulss cod_com epd1 epd2 . ---------------------+----------------------------------Molto importante | 94 48. Descrizione di variabili e di valori . Percent Cum. .69 Poco importante | 3 1. label values q06 q08 q11 q17 q23 impo Per manipolare le labels possiamo ricorrere al comando labvalch valuelabelname.24 Non risponde | 17 8. add. delete(numlist) list {from(numlist) to(numlist) | swap(#1 #2) } che consente operazioni di copia/trasferimento e cancellazione delle value labels. una volta definito un oggetto label lo si può associare a più variabili usando il comando label values.1. label values q06 impo.45 48.55 91.00 La panoramica sul comando label si conclude con: label dir per avere la lista degli oggetti label label list nome_oggetto per vedere i valori delle label label drop nome_oggetto | _all per eliminare una label o per eliminarle tutte .76 100. Una volta specificato un set di valori label possiamo convertire label attraverso questo procedimento: from(numlist) qui si specificano i valori numerici da trasferire to(numlist) qui si specificano i valori numerici che assumeranno le nuove label 56 Nicola Tommasi . label define impo . miss Prenotazione | Freq. 0g D10 Medici . le descrizioni contengono spazi all’inizio o alla fine 3.0g D03 Istruzione d07 byte %12. labelbook D02 D03 D07 D10. labelbook produce un rapporto di descrizione delle label: labelbook lblname-list . stesse descrizioni associate a valori diversi 4. label identiche fino alla lunghezza di 12 caratteri 5.1. labelbook_options labelbook_options: alpha ordina le label in ordine alfabetico anziché in base alla numerazione assegnata length(#) controlla se ci sono label uguali fino alla lunghezza specificata in #. Gestione delle Variabili 7. from(1/5) to(5/1) Con swap(#1 #2) specifico 2 valori della label che voglio vengano scambiati mentre con delete(numlist) indico la lista delle label che desidero eliminare Potrebbero tornare utili anche i comandi labelbook e numlabel. buchi nei valori mappati (per esempio esistono i valori 1 e 3 ma non il valore 2) 2.0g D07 Tipo di ricovero d10_1 byte %25. Se per esempio abbiamo il set di valori denominato rating e che assume i valori 1 “poor” 2 “fair” 3 “OK” 4 “good” 5 “excellent” e vogliamo invertirne l’ordine labvalch rating.0g D02 Sesso d03 byte %23. valori di una label non usati da nessuna variabile detail produce un rapporto dettagliato sulle variabili e sulle label .*: definition labels string length: unique at full length: unique at length 12: null string: leading/trailing blanks: numeric -> numeric: [1. problems detail -------------------------------------------------------------------------------------------------------value label D02 -------------------------------------------------------------------------------------------------------values range: N: gaps: missing . Descrizione di variabili e di valori in from() e to() ci devono essere gli stessi numeri.2] 3 no 1 [7.7. il valore di default è length(12) dato che questa lunghezza è quella tipicamente usata nell’output dei comandi (tabulate per esempio) problems descrive potenziali problemi delle label come per esempio: 1.12] yes yes no no no Nicola Tommasi 57 . desc d02 d03 d07 d10_1 storage display value variable name type format label variable label -------------------------------------------------------------------------------------------------------d02 byte %12. Gestione delle Variabili -------------------------------------------------------------------------------------------------------value label D03 -------------------------------------------------------------------------------------------------------values range: N: gaps: missing .2] 3 no 1 [7.1.25] yes yes no no no Per nulla soddisfatto Poco soddisfatto Soddisfatto Più che Soddisfatto Completamente Soddisfatto 58 Nicola Tommasi .*: definition 1 2 3 4 5 .23] yes yes no no no Nessun titolo Licenza elementare Licenza media inferiore Diploma media superiore Laurea Non risponde d03 -------------------------------------------------------------------------------------------------------value label D07 -------------------------------------------------------------------------------------------------------values range: N: gaps: missing .*: definition 1 2 3 4 5 labels string length: unique at full length: unique at length 12: null string: leading/trailing blanks: numeric -> numeric: [1.5] 6 no 1 [6.7.*: definition 1 2 . Descrizione di variabili e di valori 1 2 .a variables: labels string length: unique at full length: unique at length 12: null string: leading/trailing blanks: numeric -> numeric: [1.a variables: labels string length: unique at full length: unique at length 12: null string: leading/trailing blanks: numeric -> numeric: [1.12] yes yes no no no Urgente Programmato Non risponde d07 -------------------------------------------------------------------------------------------------------value label D10 -------------------------------------------------------------------------------------------------------values range: N: gaps: missing .a variables: Maschio Femmina Non risponde d02 7.6] 7 no 1 [10. 29 0.63 41.82 100.]Per nulla soddisfatto | 2 0. add mask([#. ------------------------------+----------------------------------[1.]Non saprei | 5 0.82 6.41 4. Gestione delle Variabili 6 .14 2. numlabel D10.]Più che Soddisfatto | 356 25. numlabel D10. Più che Soddisfatto | 356 25.1.97 15. {add|remove} numlabel_options numlabel_options: add aggiunge il prefisso numerico alle label remove rimuove il prefisso numerico alle label mask(str) maschera di formattazione per l’aggiunta del valore numerico.41 [4.78 94.389 100. Poco soddisfatto | 4 0. Per nulla soddisfatto | 2 0.18 .00 -----------------------------+----------------------------------Total | 1.14 0. add . Soddisfatto | 208 14. Nicola Tommasi 59 .29 0.00 ------------------------------+----------------------------------Total | 1. miss Medici | Freq.04 [5.” force forza l’aggiunta o la rimozione del valore numerico detail visualizza esempio di label con e senza il prefisso numerico . Non saprei | 5 0. tab d10_1.78 94.14 0.63 41. -----------------------------+----------------------------------1. di default la maschera è “#.04 5.36 95.00 Utili comandi aggiuntivi sono le labutil (ssc inst labutil) che consentono tra l’altro di utilizzare una variabile per creare il label define per un’altra (labmask).43 [3. Percent Cum.82 [6.36 95. miss Medici | Freq. Non risponde | 67 4.a. remove .18 [.]Completamente Soddisfatto | 747 53.]Poco soddisfatto | 4 0.97 15. Completamente Soddisfatto | 747 53.14 [2.43 3.00 . Descrizione di variabili e di valori d10_1 d10_2 d10_3 d10_4 d10_5 d10_6 no potential problems in dataset C:/Projects/s_cuore/sodd_paz_2008/data/mother. tab d10_1. numlabel D10.82 100.]Non risponde | 67 4.] ) .a. Percent Cum.7.]Soddisfatto | 208 14.dta numlabel aggiunge come prefisso numerico il valore della label numlabel lblname-list .389 100.a variables: Non saprei Non risponde 7. 2.5 units: missing . escluso da capitale finanziario. dev: percentiles: numeric (float) [0.01 6/7147 y1: 1. yl: 1. altrimenti alla variabile specificata.53] 2910 24801 18549 10% 8263. y1 = (yl + yt + ym + yca) 60 Nicola Tommasi .9 50% 21174. all ----------------------------------------------------------------------------y1 Reddito disponibile netto ----------------------------------------------------------------------------type: range: unique values: mean: std. 2. y2: 1. ytp: 1.1.: .4 90% 43950. yt: 1. Poi visualizzarle si usa il comando notes list note: Valori espressi in Euro note y1: escluso da capitale finanziario.7. Gestione delle Variabili È anche possibile inserire delle note al dataset o a singole variabili con notes varname : text se non viene specificata nessuna varname la nota viene riferita all’intero dataset. escluso da capitale finanziario.7 75% 31865. note y1: y1 = (yl + yt + ym + yca) note y2: y2 = (yl + yt + ym + yc) note yl: yl = (yl1 + yl2) note yt: yt = (ytp + yta) note ytp: ytp = (ytp1 + ytp2) notes _dta: 1. Descrizione di variabili e di valori 7. y1 = (yl + yt + ym + yca) y2 = (yl + yt + ym + yc) yl = (yl1 + yl2) yt = (ytp + yta) ytp = (ytp1 + ytp2) codebook y1.418846.31 25% 13427. Valori espressi in Euro y1: 1. Sapere quali sono le variabili chiave è fondamentale per applicare correttamente una serie di comandi (merge per esempio) e per interpretare i risultati delle analisi. Controllo delle variabili chiave 7. . Gestione delle Variabili 7. duplicates report fam_id Duplicates in terms of fam_id -------------------------------------copies | observations surplus ----------+--------------------------1 | 6303 0 2 | 14646 7323 3 | 18846 12564 4 | 23956 17967 5 | 8330 6664 6 | 2022 1685 7 | 595 510 8 | 112 98 9 | 27 24 10 | 20 18 11 | 11 10 12 | 12 11 -------------------------------------- fam_id non è variabile chiave perché ci sono osservazioni doppie (14646). Il principale è: duplicates report varlist if in che controlla se le variabili specificate in varlist sono delle variabili chiave. triple (18846) e così via. force Duplicates in terms of fam_id (46874 observations deleted) Nicola Tommasi 61 . possiamo ricorrere a questo comando per eliminarle: duplicates drop varlist if in . Stata dispone di un set di istruzioni dedicate alla gestione delle variabili chiave. Se siamo sicuri che ci siano effettivamente delle osservazioni ripetute (il che vuol dire che tutte le variabili dell’osservazione hanno valori uguali e non solo per le variabili chiave). force quindi ritornando all’esempio precedente: duplicates drop fam_id. duplicates report idcode Duplicates in terms of idcode -------------------------------------copies | observations surplus ----------+--------------------------1 | 2246 0 -------------------------------------- in questo caso la variabile idcode è variabili chiave perché non ci sono doppioni.2.2 Controllo delle variabili chiave Cosa sono le variabili chiave? È quella variabile o quell’insieme di variabili che permettono di identificare in maniera univoca ciascuna osservazione del dataset.7. mentre nel caso seguente . display test. Le opzioni display serve per vedere ciascun cambiamento test serve per testare la modifica senza eseguirla Ma ancora più interessante è la versione: renvars varlist . Gestione delle Variabili 7. display test che rinomina le variabili della lista prima del simbolo \ con le corrispondenti che lo seguono. Rinominare variabili 7.3. renvars c2-c10 TM1-TM9 .7. specification would result in the following renames: c2 -> TM1 c3 -> TM2 c4 -> TM3 2 Come si fa ad installarlo? Dovreste essere in grado di farlo! 62 Nicola Tommasi .3 Rinominare variabili Il comando di Stata per cambiare il nome ad una variabile è: rename old_varname new_varname ma molto più potente e ricco di funzioni è il comando aggiuntivo renvars2 nella versione: renvars varlist \ newvarlist . transformation_option . display test symbol(string) con transformation_option che possono essere una tra: upper per convertire i nomi in maiuscolo lower per convertire i nomi in minuscolo prefix(str) per assegnare il prefisso str al nome delle variabili postfix(str) per assegnare str come finale del nome delle variabili subst(str1 str2) per sostituire tutte le ricorrenze str1 con str2 (str2 può anche essere vuoto) trim(#) per prendere solo i primi # caratteri del nome trimend(#) per prendere solo gli ultimi # caratteri del nome Ecco alcuni esempi con le opzioni appena viste: Esempi di rename classico: rename rename rename rename rename rename rename rename rename c2 c3 c4 c5 c6 c7 c8 c9 c10 TM1 TM2 TM3 TM4 TM5 TM6 TM7 TM8 TM9 Esempi di renvars: . stable Alternativamente si può usare il più sofisticato gsort +|varname +|varname . 3 Come vengono ordinati i valori missing? Nicola Tommasi 63 . Questo comando funziona anche con variabili stringa. specification would result in the following renames: c2 -> tax_c2 c3 -> tax_c3 c4 -> tax_c4 c5 -> tax_c5 c6 -> tax_c6 c7 -> tax_c7 c8 -> tax_c8 c9 -> tax_c9 c10 -> tax_c10 . Gestione delle Variabili c5 c6 c7 c8 c9 c10 -> -> -> -> -> -> TM4 TM5 TM6 TM7 TM8 TM9 7. Ordinare variabili . renvars c2-c10. postfix(t) test. renvars c2-c10.. . specification would result in the following renames: c2 -> c2t c3 -> c3t c4 -> c4t c5 -> c5t c6 -> c6t c7 -> c7t c8 -> c8t c9 -> c9t c10 -> c10t 7. generate(newvar) mfirst il segno + (ordinamento crescente) si può omettere per ordinare in senso crescente. renvars c2-c10. Da notare che si può anche combinare un ordinamento in senso crescente per una variabile con l’ordinamento in senso decrescente (-) di un’altra3 .7. specification would result in the following renames: c2 -> C2 c3 -> C3 c4 -> C4 c5 -> C5 c6 -> C6 c7 -> C7 c8 -> C8 c9 -> C9 c10 -> C10 .. upper test.4. prefix(tax_) test.4 Ordinare variabili Per ordinare le osservazioni in base ai valori di una o più variabili si usa il comando sort varlist in . Gestione delle Variabili Invece per spostare le variabili all’inizio della lista si usa: order varlist . desc. simple balance id var1 7. desc. simple id var1 balance Per ordinare in senso alfabetico in base al nome della variabile: aorder varlist balance . simple id var1 . move var1 balance . simple id balance var1 var1 Per spostare varname1 al posto di varname2: move varname1 varname2 . oppure a cancellare (drop) variabili o osservazioni. simple balance id . Per tenere variabili. desc. simple id balance var1 . scartando le altre: keep if condizione Per eliminare variabili. aorder . scartando le altre: keep varlist Per tenere osservazioni. desc. tenendo le altre drop if condizione 64 Nicola Tommasi . desc. desc.5.7.5 Prendere o scartare osservazioni o variabili La coppia di comandi keep e drop serve per tenere (keep) variabili o osservazioni. tenendo le altre: drop varlist Per eliminare osservazioni. Prendere o scartare osservazioni o variabili ESEMPIO opzione stable 7. order id . 90298 219. Dev.093. Ecco gli esempi per i due casi: .402 vars: 33 4 Jul 2007 13:19 size: 121. desc. Dev.21765 181. Prendere o scartare osservazioni o variabili Esiste anche un comando per estrarre da un database un campione casuale di una determinata numerosità. Il comando per estrarre il campione casuale è invece: sample # if in . summ pop_2006 Variable | Obs Mean Std. sempre uguale. di conseguenza. short Contains data from ita_82-06. clear . Fissando il valore di questo seme. set seed 74638928 . Dev.dta obs: 1.8% of memory free) Sorted by: Note: dataset has changed since last saved . Prima di analizzarlo però vediamo come sia possibile creare “un campione casuale sempre uguale”.03108 203.7. Min Max -------------+-------------------------------------------------------pop_2006 | 1636402 35. In genere per produrre un campione casuale si genera un numero casuale detto seme e sulla base di questo si genera l’algoritmo per l’estrazione del campione. summ pop_2006 Variable | Obs Mean Std.5. sample 20 (1309122 observations deleted) . use ita_82-06.7405 0 23722 . Min Max -------------+-------------------------------------------------------pop_2006 | 2380 38. summ pop_2006 Variable | Obs Mean Std. sample 2380. count (324900 observations deleted) .636. Min Max -------------+-------------------------------------------------------pop_2006 | 327280 35.748 (53. Se invece vogliamo avere l’estrazione di un determinato numero di osservazioni. occorre usare l’opzione count e # sarà il numero di osservazioni da estrarre.8105 0 6615 Nicola Tommasi 65 . Il comando: set seed # serve proprio a questo.4676 0 23329 . Gestione delle Variabili 7. il campione casuale estratto sarà. count by(groupvars) dove # è la percentuale delle osservazioni del dataset di partenza che deve avere il campione casuale. 9884656743*10ˆ307. double numeri reali con 17 cifre decimali di accuratezza compresi tra -8. a long e a float la quantità di memoria occupata da una variabile aumenta. L’obiettivo è di minimizzare lo spazio di memoria occupato da ciascuna variabile. Gestione delle Variabili 7. altrimenti se vogliamo forzare una certa variabile ad avere un certo formato possiamo usare: recast type varlist . che abbiamo già visto.9884656743*10ˆ307 e 8.70141173319*10ˆ38 e 1. In questo caso dobbiamo far ricorso al comando: format %fmt varlist dove %fmt può assumere le seguenti forme: 66 Nicola Tommasi .70141173319*10ˆ36. Segue lo schema delle classi di variabili supportate in Stata: Stringa str# con massimo 244 caratteri di lunghezza Numeriche byte numeri interi tra -127 e 100. Gestire il formato delle variabili 7. float numeri reali con 8 cifre decimali di accuratezza compresi tra -1.7. int numeri interi tra -32 740 e 32 740.6. long numeri interi tra -2 147 483 647 e 2 147 483 620.6 Gestire il formato delle variabili Stata salva le variabili in diversi formati numerici a seconda delle necessità. force dove type può assumere i valori -byte -int -long -float -double -str# Discorso diverso è il formato con cui una variabile viene visualizzata e che è indipendente dal formato con cui viene salvata/trattata. Passando da byte a int. Il modo più semplice per ottimizzare lo spazio occupato da ciascuna variabile è il comando compress. Per esempio è inutile sprecare spazio per i decimali per una variabile che può assumere solo valori interi o dedicare 100 caratteri per una variabile stringa quando al massimo arriva a 70. #e %9. lohi %8L right justified with commas %#.#gc general %-9.#f fixed %9. lohi %16L %8H binary.0g %#.#fc fixed %-9. Gestione delle Variabili 7.2f %-10.) in any of the above formats to make comma the decimal point. Gestire il formato delle variabili Numerical %fmt Description Example ------------------------------------------------------right justified %#. 1000.03 is 1.000.03.2fc.7e %21x hexadecimal %21x %16H binary.2f general fixed exponential %-9.2fc ------------------------------------------------------You may substitute comma (.6.7. date %fmt Description Example ------------------------------------------------------right justified %tc date/time %tc %tC date/time %tC %td date %td %tw week %tw %tm month %tm Nicola Tommasi 67 . Or you can set dp comma.0g %-9.2fc %09.#f %-#.#f fixed left justified %-#.#e exponential %10.#g %-#.7e left justified with commas %-#.0gc %-#.#g general %9.#gc general %#.2f %#. In %9.0gc %9. hilo %16H %16L binary.#fc fixed right justified with leading zeros %0#.) for period (. hilo %8H %8L binary. di 123. Aggiungo che si può modificare come Stata rappresenta il simbolo decimale con il comando set dp {comma|period} .79 123456. permanently 68 Nicola Tommasi . See Formatting date and time values in [D] dates and times. Gestione delle Variabili %tq %th %ty %tg left justified %-tc date/time %-tc %-tC date/time %-tC %-td date %-td etc.79 123.7. string %fmt Description Example ------------------------------------------------------right justified %#s string %15s left justified %-#s string %-20s centered %~#s string %~12s ------------------------------------------------------The centered format is for use with display only. di 123. set dp comma .6. ------------------------------------------------------There are lots of variations allowed.79 .79 . Gestire il formato delle variabili %tq %th %ty %tg quarter halfyear year generic 7. 3 1.4 .#) arrotonda in base a #: 1 all’intero. ceil(x) arrotonda all’intero superiore floor(x) arrotonda all’intero inferiore int(x) tiene l’intero del numero round(x.1 1.1 Il comando generate newvarname=exp if in Il comando più usato per creare nuove variabili è: generate type che funziona anche con variabili stringa. . Oltre a creare variabili attraverso una espressione algebrica si può ricorrere ad una serie di funzioni già predisposte. 5.1 al primo decimale.1 1. 4. . Segue una panoramica divisa per tipo delle principali 8.6 1.01 al centesimo .6 1. 2.8 -1. 0.Capitolo 8 Creare Variabili 8. gen var2=abs(var1) . 0. 6.4 .1.3 -1. 3.1 Funzioni matematiche abs(x) ritorna il valore assoluto di ciascun valore della variabile x: .9 1.9 var2 .8 1. Per esempio gen nome_compl = nome + " " + cognome unisce il dato stringa contenuto nella variabile nome con uno spazio e con il contenuto della variabile stringa cognome. 69 . clist var1 var2 var1 -. 0902835 var3 2 0 var4 2 . 4.. .3 -1.0. -. gen var5=round(var1.var2.1139433 .8123 -1. xn.8 -1.4 . genvar4=int(var1) .4 . clist var1 -. gen var3=floor(var1) .4 . 2. ln(x) ritorna il logaritmo naturale di x . log10(x) ritorna il logaritmo in base 10 di x ..9 var2 0 1 -1 2 -1 2 var3 -1 0 -2 1 -2 1 var4 0 0 -1 1 -1 1 var5 -.67032 2.x2.1 1.9 var2 .1 1. gen var2=ceil(var1) .. Il comando generate . gen var2=exp( var1) .669297 .3 -1. 4. x2.3 -1.6876 1. 2. È la funzione inversa di ln(x). gen var2=log10(var1) (3 missing values generated) ..3 -1. 2.8123 -1. gen var3=ln(var2) .1 1.8123 -1.6876 1. Creare Variabili 1. -.3 -1.9 1. clist var1 -.6876 1. .9 var2 .8123 var2 . 4.2787536 1.4 . I valori missing vengono ignorati. . clist var1 -.1) .xn) ritorna il valore massimo tra i valori di x1.1. 6.6876 1. clist var1 -.9 8. gen var4=int(var1) .7 1. 6...253084 . 5. 6. .var3) . 2. gen var4=max(var1.. 5.1 1.685894 var3 -.8. 3.0902835 .4 . 5. exp(x) ritorna il valore esponenziale di x.8123 1. 3. 70 Nicola Tommasi .8123 -1.3328711 3.1 1. max(x1. 3.1849629 6.4 . 3 -1.8123 .2351207 .31 -2. 4.1139433 -2.var2.2787536 var3 -..1139433 .var0) (1 missing value generated) .3024134 1. 3.8123 -1. 3... . 3. gen var4=min(var1.k.2433855 .4 .2787536 var3 2 0 -3 1. .2787536 -3 1. 5.4 var2 .var2.1139433 .4 .4 .0902835 -3 .var1) .0.b.5 -1.p) ritorna le probabilità di una binomiale.0236598 .0902835 . 2.591932 . 2. 5. . 6. Nicola Tommasi 71 .269264 .1. binomial(n.var3) .3 -1. clist var1 -. gen var4=sum(var2) . .8123 -1. sum(x) ritorna la somma incrementale dei valori di x .4 .4 -. clist var1 ..01 1. 6.1 1. .6876 1.1 1.x) ritorna la pdf di una distribuzione beta. -. -. Creare Variabili 3. . clist var0 .6876 1.6122999 -1. 5.3 . Il comando generate min(x1.3148833 .0753 .9 var2 .2351207 var3 1 1.1.6876 .9 var2 . 4. I valori missing vengono ignorati. . -1.01 var1 . 8.31 -1.3 -1. gen var3=sum(var1) .9 var2 .5 var4 -. gen var3=binomial(var1.9 . 4.31 -2.0902835 . 4. xn. 2.4751683 1.xn) ritorna il valore minimo tra i valori di x1.6876 1. .2..8246999 var4 0 -. 6.4123 -.2 Funzioni di distribuzione di probabilità e funzioni di densità betaden(a.9 8.0236598 . 6.1 .0902835 .0902835 -.6876 1. clist var1 -.8..2787536 1.01 .. .1. 5.1139433 .x2.6877 .1 1. gen var2=betaden(0.01 1.1 1. x2. . 1751056 .3 .n2. 4.1 . 4.var1) . 4.8123 3.f) ritorna la pdf di una distribuzione F.3 .2433855 -.s) ritorna la normale con media m e deviazione standard s.m. 5. 2.0297784 1. 6.4500666 . gammaden(a.3148833 -.315428 .4017412 .3 . 5.1. .8 .var1) .g.var1) .0163577 .4 .b.8.6876 .3 . gen var2=gammaden(1. 5. 0 1 1 0 8.6876 .4 .3948669 .x) ritorna la pdf di una distribuzione Gamma. 3.487655 .269264 . clist var1 . gen var2 = chi2(5.3 .4.4711343 .238771 .9 var2 . 4.591932 . 2.6149665 . 3.0237578 .99 .9 . clist var1 .2 .x) ritorna la cumulata di una distribuzione chi-quadrato con n gradi di libertà.1 .var1) .25.9 var2 .3799204 1.0.6557035 .f) ritorna la cumulata di una distribuzione F. .4 .4152625 . F(n1.2. 2. 3. Il comando generate 2.8123 3.1202542 . 4.4751683 .8123 3.6876 . 2.0639784 . 2.9 var2 .8485015 .4638717 . .0023569 .9 var2 .4. 72 Nicola Tommasi . clist var1 . 5. 6.3774575 .3612637 1. 3. . 6. 6. Creare Variabili chi2(n.6876 .4 . gen var2=Fden(3. 6.6 . normalden(x. 3. clist var1 .4 .1 .8123 3.1 . Fden(n1.6876 . 5.1 .8123 3.n2.4849114 1. gen var2=F(3.0046704 . Creare Variabili . gen var1=uniform() . 5. 5.1.545905 3. 3. gen var2=abbrev(var1.8123 3. -. .2032553 .2032553 8. clist var1 .5578017 .1.3014338 2. 5. 1. 2. 2.n) ritorna la stringa s abbreviata a n caratteri. .1399282 .1813806 .133268 5.8. 6.6876 .658371 6. invnormal(uniform()) ritorna numeri random normalmente distribuiti con media 0 e deviazione standard 1. 6.684176 . clist var2 1. 2.6432207 . 3.3 Funzioni di generazione di numeri random uniform() ritorna numeri random uniformemente distribuiti nell’intervallo [0. gen var2=normalden(var1. -1.1) .1389086 4. 8.1.4 Funzioni stringa abbrev(s. 4. 4.1. 4.700496 8.5) .5) . 3. . clist var1 io sono tu sei egli e´ noi siamo voi siete egli e´ var2 io ~o tu ~i egl~´ noi~o voi~e egl~´ 1. length(s) ritorna la lunghezza della stringa s.1369841 .1 . .4 .1086679 1.6047949 . gen var2=invnormal(uniform()) . Il comando generate 1.3 .1505752 . -1.9 var2 . clist var1 . 6. Nicola Tommasi 73 .1943922 .2. 3. 6. gen var2=strmatch( var1. 6. gen var3=rtrim(var1) . 4.s2) ritorna 1 se in s1 viene trovato s2. gen var2=reverse(var1) . 2. gen var4=trim(var1) . var2 io sono tu sei egli e´ noi siamo voi siete egli e´ 8. reverse(s) ritorna s invertita. .1. 5.8. 3. Creare Variabili 7 6 7 9 9 7 lower(s). clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 io sono tu sei egli e´ noi siamo voi siete egli e´ var3 IO SONO TU SEI EGLI E´ NOI SIAMO VOI SIETE EGLI E´ 1. 6. altrimenti ritorna 0. 2. 4. . 3. 6. trim(s) ritornano s senza spazi iniziali. upper(s) ritornano s in lettere minuscole o maiuscole. gen var3=upper(var1) ."*E´*") . clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 onoS oI ieS uT ´E ilgE omaiS ioN eteiS ioV ´E ilgE 1. gen var2=ltrim(var1) . 4. 3. 5. 2. ltrim(s) rtrim(s). 4. clist var1 var2 74 Nicola Tommasi . Il comando generate var1 1. 2. strmatch(s1. clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var3 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var4 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ 1. gen var2=lower(var1) . 5. senza spazi finali o senza spazi all’inizio e alla fine . 5. ) .3) ."0". 5. Con il simbolo '. 6. 4..n2) ritorna la stringa di s che parte dalla posizione n1 fino alla posizione n2.) .n1. clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 So Se li i S i S li 1.s2."&".’ si sostituiscono tutte le occorenze di s2 con s3.n) ritorna la n-esima parola all’interno della stringa s.1.. . 6. 6. clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 Io Sono Tu Sei Egli & Noi Siamo Voi Siete Egli & 1. gen var2=subinstr(var1. 4. 4. subinword(s1. gen var2=word(var1. 5.n) in s1 viene sostituito s2 con s3 per le prime n volte che s2 viene trovato.s3. Creare Variabili 1.8. Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ 0 0 1 0 0 1 8."o". .s2. Il comando generate subinstr(s1. clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 I0 S0n0 Tu Sei Egli E´ N0i Siam0 V0i Siete Egli E´ 1.1) . 3. 5. gen var2=subinword(var1.n) in s1 viene sostituita la parola s2 con la parola s3 per le prime n volte che viene trovata. 6. 2. 3. 2. word(s.s3. .' si sostituiscono tutte le occorrenze di s2 con s. Una parola viene identificata con uno spazio bianco. clist Nicola Tommasi 75 . substr(s.3. gen var2=substr(var1. 2. con il simbolo ’. 2. 5. . Se n1 è un valore negativo vuol dire che si parte a contare dalla fine della stringa s."E´". 4. 3. 3. 2. altrimenti ritorna 0.ambrogio di villa vr". Se c non è specificato allora in x viene messo valore missing."cisano bardolino"). 4. 5.a. . . Gli argomenti possono essere numerici o stringa. replace cod_com=6 if inlist(q03.b."zevio". Creare Variabili 1.8."bardolino". 2.b) ritorna a se x è vero..a. 8. (2 real changes made) . 4. clist var1 1 1 2 var2 1 2 1 1."s. wordcount(s) conta il numero di parole all’interno della stringa s. . 2.. replace cod_com=96 if inlist(q03. 6.c) o cond(x."alpo villafranca". gen var2=wordcount(var1) .se"). (0 real changes made) ."gazzo v. clist var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 2 2 2 2 2 2 1. replace cod_com=97 if inlist(q03. > "villafranca". gen cod_com=.1.a. se sono stringa tra 2 e 10. (2 real changes made) cond(x."villafranca di vr"). replace cod_com=2 if inlist(q03."zevio vr"). 3. 5.1. (395 missing values generated) . 6. Il comando generate var1 Io Sono Tu Sei Egli E´ Noi Siamo Voi Siete Egli E´ var2 Io Tu Egli Noi Voi Egli 8. 3.5 Funzioni di programmazione inlist(z. (0 real changes made) .."affi"). b se x è falso e c se x è missing. 76 Nicola Tommasi .. (2 real changes made) (output omitted ) .b. replace cod_com=2 if inlist(q03. 3.) ritorna 1 se il contenuto di z è presente in uno degli argomenti successivi. Se sono numerici possono essere in un numero tra 2 e 255. 8.b) ritorna 1 se a < z < b.5) . 6. clist var1 . 2. Il comando generate ."NO") . 8. . 6.8. Creare Variabili 4.Y) ritorna la data in formato codificato a partire dai valori di M (mese). 4. 7."YES". 2. 2. 5. tab ris ris | Freq.a. 5. 3.1.00 . 7.1. clist var1 1 1 2 2 2 1 1 var2 1 2 1 2 3 3 2 ris NO YES NO NO NO NO YES 1.00 ------------+----------------------------------Total | 7 100. 6. Il valore codificato di una data è un intero che Nicola Tommasi 77 .57 100. 4. 3. 0 1 2 3 4 5 6 1.2. ------------+----------------------------------NO | 5 71. gen ris = cond(var1==1 & var2==2. inrange(z. 2 2 1 1 2 3 3 2 8. . 8.43 71. Percent Cum. 3. altrimenti ritorna 0.D.6 Funzioni data mdy(M. 7. gen check=inrange(var1. 5. 0 1 2 3 4 5 6 check 0 0 0 1 1 1 1 0 1. 7.43 YES | 2 28. D (giorno) e Y (anno). 5. 6. clist var1 . 4. clist month day year in 1/7 month .. 4. 17052 17103 17133 17138 17084 17100 1. 8 29 28 3 10 26 year .7 . .470449 1 31 year | 1651 2005.8.134451 1 12 day | 1652 16. 8.1.8 Funzioni matriciali diag(v) ritorna la matrice quadrata diagonale costruita a partire dal vettore v. 3. 2. 5. 3. 7. 2. 5.year) (690 missing values generated) . format comp %dd/N/CY . clist month day year comp in 1/7 month .1. 9 10 11 12 10 10 day . Dev. 01 gennaio 1960=2 e così via).day. 3.998 . 9 10 11 12 10 10 day . 78 Nicola Tommasi . summ month day year Variable | Obs Mean Std. 4. Il comando generate 8. 8 29 28 3 10 26 year .. 2006 2006 2006 2006 2006 2006 comp . 2006 2006 2006 2006 2006 2006 1. 2.77421 8. 7. Funzioni per serie temporali 8. clist month day year comp in 1/7 month . 7. . 2006 2006 2006 2006 2006 2006 comp . 8/09/2006 29/10/2006 28/11/2006 3/12/2006 10/10/2006 26/10/2006 1.1. Min Max -------------+-------------------------------------------------------month | 1652 9. . 8 29 28 3 10 26 year . gen comp = mdy(month. 6. 9 10 11 12 10 10 day . 5. 6. 6. 4.214891 3. Creare Variabili identifica il giorno a partire dalla data del 01 gennaio 1960 (01 gennaio 1960=1.0491769 2005 2006 . matrix list X X[4.1] c1 r1 1 r2 2 r3 3 r4 4 .848e+16 colsof(M) ritorna uno scalare con il numero di righe della matrice M.4] c1 r1 .13 c2 .6 .5352798 2.4 .105e+16 -5.233951 -.12 . matrix list Xdiag symmetric Xdiag[4.046e+13 -5.364e+15 3.695e+15 r2 -4.543e+15 r3 1. Il comando generate c2 2 c3 3 c4 4 .3846154 r4 1.2 . matrix list Xinv Xinv[4.1 r2 . .3 .349e+14 1. matrix list X X[4.4] c1 c2 c3 c4 r1 2.4] c1 c2 c3 c4 c1 1 c2 0 2 c3 0 0 3 c4 0 0 0 4 . matrix list Y Y[1. matrix Ydiag=diag(Y) .641e+15 -7.15 c4 .7 . matrix Xinv = inv(X) .697e+13 3.8.821e+16 -3. Nicola Tommasi 79 .462e+15 1. matrix list Ydiag symmetric Ydiag[4.16 .4] c1 r1 1 8.5 r3 . Creare Variabili .094 .4] r1 r2 r3 r4 r1 1 r2 0 2 r3 0 0 3 r4 0 0 0 4 inv(M) ritorna l’inversa della matrice M. matrix Xdiag=diag(X) .1. rowsof(M) ritorna uno scalare con il numero di colonne della matrice M.682e+16 1.9 r4 .08328654 -3.14 c3 .11 .8 . 8.1. Il comando generate . matrix list Y Y[2,4] c1 r1 1 r2 5 8. Creare Variabili c2 2 6 c3 3 7 c4 4 8 . local Ycol = colsof(Y) . local Yrow = rowsof(Y) . di "La matrice Y ha `Ycol´ colonne e `Yrow´ righe!" La matrice Y ha 4 colonne e 2 righe! nullmat() serve per eseguire operazioni di uinione per riga o per colonna di matrici. La sua particolarità risiede nel fatto che riesce a lavorare anche con matrici non esistenti. La funzione nullmat() informa Stata che se la matrice non esiste deve essere creata con l’elemento indicato successivamente alla funzione. Nell’esempio che segue la matrice G non esiste; a questa matrice inesistente viene aggiunto lo scalare 1, generando in tal modo la matrice G. La funzione nullmat() funziona sia con l’operatore di unione , che con l’operatore \. nullmat() . matrix list G matrix G not found r(111); . matrix G = (nullmat(G),1) . matrix list G symmetric G[1,1] c1 r1 1 . matrix G = (nullmat(G),2) . matrix list G G[1,2] c1 r1 1 c2 2 . matrix G = (nullmat(G),3) . matrix list G G[1,3] c1 r1 1 c2 2 c3 3 . matrix G = (nullmat(G),4) . matrix list G G[1,4] c1 r1 1 c2 2 c3 3 c4 4 80 Nicola Tommasi 8. Creare Variabili 8.2. Lavorare con osservazioni indicizzate trace(M) ritorna la traccia della matrice M. . matrix list X X[4,4] c1 r1 .1 r2 .5 r3 .9 r4 .13 c2 .2 .6 .094 .14 c3 .3 .7 .11 .15 c4 .4 .8 .12 .16 . matrix Xtrace=trace(X) . matrix list Xtrace symmetric Xtrace[1,1] c1 r1 .97 Tutte le funzioni viste precedentemente funzionano anche con il comando replace. 8.2 Lavorare con osservazioni indicizzate Per indicizzare le osservazioni Stata usa la notazione varname[_n] per indicare la corrente osservazione di varname varname[_N] per indicare l’ultima osservazione di varname Per esempio il comando gen y = x[_n] genera una variabile y uguale alla corrispondente osservazione di x, ovvero è equivalente a scrivere: gen y = x Se invece eseguo: gen y = x[_n-1] la variabile y assume il valore della osservazione precedente di x. Conseguentemente con gen y = x[_n+1] la variabile y assume il valore della osservazione successiva di x. Con gen y = x[_N] genero una variabile che assume l’ultimo valore di x, ovvero una costante . gen y1=x[_n] . gen y2 = x[_n-1] (1 missing value generated) . gen y3 = x[_n+1] (1 missing value generated) Nicola Tommasi 81 8.2. Lavorare con osservazioni indicizzate 8. Creare Variabili . gen y4 = x[_N] . clist x 1 2 3 4 5 6 y1 1 2 3 4 5 6 y2 . 1 2 3 4 5 y3 2 3 4 5 6 . y4 6 6 6 6 6 6 1. 2. 3. 4. 5. 6. Utile per creare velocemente una variabile chiave o indice è il comando gen ID = _n che crea una successione con passo 1 dalla prima all’ultima osservazione, secondo l’ordinamento corrente delle osservazioni Infine con la costruzione: gen y = x[_N-_n+1] genero y in ordine inverso di x. . gen ID = _n . gen y = ID[_N-_n+1] . clist nquest nord eta ID nquest 34 34 34 34 173 173 173 173 375 375 y nord 1 2 3 4 1 2 3 4 1 2 eta 59 58 31 29 54 52 27 24 77 76 ID 1 2 3 4 5 6 7 8 9 10 y 10 9 8 7 6 5 4 3 2 1 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Naturalmente possiamo ricorrere anche al prefisso by. Per esempio sort fam_id age bysort fam_id: gen old = age[_N] genera una variabile con l’età più alta per ciascun fam_id . sort nquest eta . bysort nquest: gen old = eta[_N] . clist nquest eta old nquest 34 34 34 34 173 173 eta 29 31 58 59 24 27 old 59 59 59 59 54 54 1. 2. 3. 4. 5. 6. 82 Nicola Tommasi 8. Creare Variabili 7. 8. 9. 10. 173 173 375 375 52 54 76 77 8.3. Estensione del comando generate 54 54 77 77 8.3 Estensione del comando generate Il comando generate prevede una versione potenziata (egen) che va usata solo in abbinamento con una serie di funzioni specificatamente previste. Utenti di Stata hanno ulteriormente potenziato questo comando creando numerose funzioni aggiuntive. Per farsi un’idea si veda egenodd oppure egenmore con ssc desc egenodd ssc desc egenmore Ritornando al comando egen, la sua sintassi generale è: egen type newvarname = fcn(arguments) if in , options dove le principali funzioni fcn(arguments) sono: anycount(varlist), values(integer numlist) ritorna il numero di volte che i valori in values() sono presenti nelle variabili indicate in varlist. . clist q1a_a q2a_a q2b_a q2c_a q3a_a q1a_a 0 0 0 0 0 0 0 0 0 0 q2a_a 1 1 1 1 1 0 1 1 0 1 q2b_a 1 1 1 1 1 0 1 0 1 1 q2c_a 1 0 1 1 1 0 1 1 0 0 q3a_a 4 1 0 2 4 1 2 1 1 0 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. . egen es0 = anycount(q1a_a q2a_a q2b_a q2c_a q3a_a), values(0) . egen es1 = anycount(q1a_a q2a_a q2b_a q2c_a q3a_a), values(2/4) . clist q1a_a q2a_a q2b_a q2c_a q3a_a es es1 q1a_a 0 0 0 0 0 0 0 0 0 0 q2a_a 1 1 1 1 1 0 1 1 0 1 q2b_a 1 1 1 1 1 0 1 0 1 1 q2c_a 1 0 1 1 1 0 1 1 0 0 q3a_a 4 1 0 2 4 1 2 1 1 0 es0 1 2 2 1 1 4 1 2 3 3 es1 1 0 0 1 1 0 1 0 0 0 cut(varname), at(#,#,ldots,#) crea una nuova variabile codificata in base agli intervalli identificati da at() in varname . egen cat_age=cut(age), at(17,19,21,23,25) (109938 missing values generated) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Nicola Tommasi 83 8.3. Estensione del comando generate 8. Creare Variabili . tab age cat_age | cat_age Age ind | 17 19 21 23 | Total -----------+--------------------------------------------+---------17 | 2,044 0 0 0 | 2,044 18 | 2,199 0 0 0 | 2,199 19 | 0 2,270 0 0 | 2,270 20 | 0 2,388 0 0 | 2,388 21 | 0 0 2,477 0 | 2,477 22 | 0 0 2,546 0 | 2,546 23 | 0 0 0 2,593 | 2,593 24 | 0 0 0 2,696 | 2,696 -----------+--------------------------------------------+---------Total | 4,243 4,658 5,023 5,289 | 19,213 max(exp) ritorna una variabile (costante) con il valore massimo assunto dalle variabili elencate in exp. . clist foreign price foreign Foreign Foreign Domestic Domestic Domestic Foreign Foreign Domestic Foreign Domestic price 4,499 6,229 4,934 3,667 4,172 8,129 4,589 3,984 5,079 6,486 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. . egen es = max(price), by(foreign) . clist foreign price es foreign Foreign Foreign Domestic Domestic Domestic Foreign Foreign Domestic Foreign Domestic price 4,499 6,229 4,934 3,667 4,172 8,129 4,589 3,984 5,079 6,486 es 8129 8129 6486 6486 6486 8129 8129 6486 8129 6486 mean(exp) ritorna una variabile (costante) con il valore medio delle variabili elencate in exp. . clist foreign price price 4,499 6,229 4,934 3,667 4,172 8,129 4,589 3,984 5,079 6,486 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. foreign Foreign Foreign Domestic Domestic Domestic Foreign Foreign Domestic Foreign Domestic 84 Nicola Tommasi Creare Variabili 8. 8.667 4. 8. 3. 4. Domestic 179 6.8 es1 5705 5705 4648.129 4. Domestic 182 Domestic 198 Foreign 165 Domestic 179 5. 9.079 6. 3.6 5705 5705 4648.6 4648. min(exp) ritorna una variabile (costante) con il valore minimo delle variabili elencate in exp.8. 2. egen es0=min(length) Nicola Tommasi 85 . 4. 7.934 3. 2. Foreign 184 7. 10.8 5176. 5.8 5176. egen es0=median(q3a_a) . 9. 10. 5.984 5. 7. 8. 3.229 4.6 median(exp) ritorna una variabile (costante) con il valore mediano delle variabili elencate in exp. by(foreign) .8 5176.3. 6.6 5705 4648. 2. 8. clist foreign price es? price 4. foreign Foreign Foreign Domestic Domestic Domestic Foreign Foreign Domestic Foreign Domestic 1.8 5176. clist q3?_a es? q3a_a 4 1 0 2 4 1 2 1 1 0 q3b_a 1 0 0 0 4 0 2 0 0 1 q3c_a 0 0 0 0 3 0 0 0 0 0 q3d_a 0 0 0 0 1 0 0 0 0 0 es1 1 0 0 1 1 0 1 0 0 0 es0 1 1 1 1 1 1 1 1 1 1 es2 1 1 1 1 1 1 1 1 1 1 1. . . Estensione del comando generate .172 8. . 5. egen es2=median(q3a_a-q3d_a) . 6. Domestic 163 9. 9.499 6.589 3.8 5176. foreign length 1. egen es1=mean(price).8 5176. 4. clist q3?_a q3a_a 4 1 0 2 4 1 2 1 1 0 q3b_a 1 0 0 0 4 0 2 0 0 1 q3c_a 0 0 0 0 3 0 0 0 0 0 q3d_a 0 0 0 0 1 0 0 0 0 0 1. clist foreign length Foreign 149 2. Foreign 170 3. 6.8 5176.6 4648.8 5176. 4.486 es0 5176. 10. 7. Foreign 170 10. egen es0=mean(price) . .8 5176. 4. Domestic 182 149 163 Foreign 149 149 149 2.. con l’opzione minmode si sceglie il minore. Foreign 170 149 149 10. Foreign 184 149 149 7. 149 149 3. rowmean(varlist) ritorna il valore medio per ciascuna osservazione dei valori delle variabili elencate in varlist.4 Sostituire valori in una variabile in Il comando principale per sostituire dei valori secondo una certa funzione è replace oldvar =exp if che può essere usato anche con variabili stringa avendo l’accortezza di racchiudere il valore da sostituire tra virgolette: replace str_var = "stringa" if. Domestic 179 149 163 5. rownonmiss(varlist) ritorna il numero di valori non missing per ciascuna osservazione tra i valori delle variabili elencate in varlist. Creare Variabili foreign length es0 es1 1.2.. 8. Se esistono più valori modali. con nummode(integer) la moda n-esima espressa da integer. . rowmax(varlist) ritorna il valore massimo per ciascuna osservazione tra i valori delle variabili elencate in varlist. rowmiss(varlist) ritorna il numero di valori missing per ciascuna osservazione tra i valori delle variabili elencate in varlist.7.8). è possibile usare la funzione inlist che abbiamo visto tra le funzioni di programmazione del comando generate .4. sum(exp) conta quante osservazioni rispondono al criterio exp. by( foreign) clist foreign length es? 8. Domestic 163 149 163 9.8.5. con maxmode il maggiore. gen macro1=1 if inlist(regione. anziché ricorrere ad una lunga serie di replace condizionati..6. Se i valori da considerare sono molti e sono relativi ad una stessa variabile. rowmin(varlist) ritorna il valore minimo per ciascuna osservazione tra i valori delle variabili elencate in varlist. (43456 missing values generated) 86 Nicola Tommasi . mode(varname) [. Domestic 179 149 163 6.1. 149 8. Foreign 170 Foreign 165 149 Domestic 198 149 163 4. rowsd(varlist) ritorna la deviazione standard per ciascuna osservazione dei i valori delle variabili elencate in varlist. minmode maxmode nummode(integer) missing] ritorna una variabile (costante) con il valore della moda delle variabili elencate in varname. egen es1=min(length). Sostituire valori in una variabile .3. 9.968 0 0 | 3.454 | 3.705 5 | 4.424 13.994 6 | 2.8.714 0 0 | 4.963 17 | 0 0 2. Se invece si vogliono creare nuove variabili che contengano la ricodifica si ricorrerà all’opzione Nicola Tommasi 87 .166 0 0 | 8. Sostituire valori in una variabile .714 2 | 1.166 4 | 3. tab regione macro1.11. replace macro1=2 if inlist(regione.854 -----------+---------------------------------+---------Total | 31.322 8 | 3. Se non viene specificata nessuna opzione del tipo generate o prefix..963 | 4.12).459 0 | 4.653 | 2.236 0 | 4.426 20 | 0 0 2. Creare Variabili 8.16.265 0 | 2.18.225 18 | 0 0 3.13.972 | 1.705 0 0 | 3.854 | 2. replace macro1=3 if inlist(regione.225 | 2.322 0 0 | 2.565 | 74.265 11 | 0 2.653 14 | 0 0 1.4.526 3 | 8.968 9 | 0 4.029 7 | 2..972 15 | 0 0 6.15.994 0 0 | 4.526 0 0 | 1.19. if in .10. | macro1 Regione | 1 2 3 | Total -----------+---------------------------------+---------1 | 4. (29565 real changes made) .931 12 | 0 4. miss nolab.018 | 6.236 10 | 0 2. la sostituzione avviene direttamente nelle variabili di varlist.17.14. (13891 real changes made) .459 13 | 0 0 2.931 0 | 2.454 19 | 0 0 5.018 16 | 0 0 4.880 Altro importante comando è recode che consente di ricodificare i valori di una variabile (o più variabili) secondo certi criteri (erule) e che prevede numerose possibilità: recode varlist(erule) (erule) .891 29.426 | 5.029 0 0 | 2.20). options Almeno una regola di ricodifica deve essere definita e può assumere le seguenti forme Regola Esempio Esito (# = #) (8 = 4) Trasforma tutti i valori 8 in 4 #1 #2 = #) (8 7 = 4) Trasforma tutti i valori 8 e 7 in 4 #1 / #2 = #) (1/8=4) Trasforma tutti i valori da 1 a 8 (compresi) in 4 nonmissing = # (nonmissing = 4) Trasforma tutti i valori non missing in 4 missing = # (missing=9) Trasforma tutti i valori missing in 9 #/max 5/max=5 Trasforma tutti i valori superiori a 5 in 5 min/# min/8=8 Trasforma tutti i valori inferiori a 8 in 8 Le variabili a cui applicare la trasformazione possono essere più di una. rec_var2 e rec_var3) con le ricodifiche . | RECODE of regione (Regione) Regione | 1 2 5 | Total -----------+---------------------------------+---------1 | 4. contengono caratteri numerici. tab regione macro2.705 0 0 | 3.=9). prefix(rec_) nelle variabili var1.854 -----------+---------------------------------+---------Total | 31.459 13 | 0 0 2.891 29.994 6 | 2.963 17 | 0 0 2.880 Si ricordi che recode funziona solo per variabili numeriche.426 20 | 0 0 2. sono: 88 Nicola Tommasi .972 | 1. var2 e var3 ricodifica i valori da 1 a 5 in 1.854 | 2. il 7 in 3 e tutti i valori missing in 9.029 7 | 2.424 13.322 8 | 3.166 4 | 3.4. viceversa.714 0 0 | 4.972 15 | 0 0 6.565 | 74.968 9 | 0 4.705 5 | 4.322 0 0 | 2.526 0 0 | 1. Infine vediamo i comandi encode varname if in .236 0 | 4.968 0 0 | 3.166 0 0 | 8.714 2 | 1. Creare Variabili generate(newvar) quando si tratta di una sola variabile prefix(string) quando si tratta di più variabili che prenderanno lo stesso nome delle variabili specificate in varlist con l’aggiunta del prefisso specificato in string Per esempio: recode var1 var2 var3 (1/5=1) (6 8=2) (7=3) (.265 11 | 0 2.236 10 | 0 2.931 0 | 2.426 | 5.265 0 | 2. gen(macro2).454 | 3. miss nolab.459 0 | 4.931 12 | 0 4.963 | 4. i 6 e gli 8 in 2. trasforma variabili numeriche in variabili stringa Comandi similari ai precedenti ma che si applicano quando le variabili sia stringa che non.994 0 0 | 4.225 18 | 0 0 3. generate(newvarname) label(name) noextend che trasforma variabili stringa in variabili numeriche. creando tre nuove variabili (rec_var1. generate(newvarname) maxlength(#) che. recode regione (min/8=1) (9/12=2) (13/max=5).225 | 2.018 | 6.526 3 | 8. (70166 differences between regione and macro2) .653 14 | 0 0 1. Sostituire valori in una variabile 8.653 | 2. assegnando ai valori creati il label definito in name e decode varname if in .018 16 | 0 0 4.454 19 | 0 0 5.8.029 0 0 | 2. 11 | 1 6. Variable | Obs Mean Std.67 6.67 2371.67 33.511 16. Nell’esempio che segue abbiamo la variabile stringa balance che contiene sia dati numerici che stringa. Con l’opzione ignore("chars") si possono specificare caratteri non numerici da rimuovere.11 2751. Percent Cum.00 NULL | 3 20. desc balance.324 1044.22 | 1 6.00 2177. (3 real changes made) . storage display value variable name type format label variable label ---------------------------------------------------------------------balance double %10.67 1397.a e . summ balance. miss.6 .15 | 1 6. balance has all characters numeric.0g Il comando tostring. {generate(newvarlist)|replace} che converte variabili numeriche stringa in numeriche pure.33 16.67 2751. (4 real changes made) .4. Dev.8.00 .67 40. viceversa converte variabili numeriche in variabili stringa tostring varlist. Min Max -------------+-------------------------------------------------------balance | 8 1577. replaced as double (7 missing values generated) . balance | Freq. replace balance =".91 | 1 6. replace.33 INS Paid | 4 26. Sostituire valori in una variabile destring_options varlist . storage display value variable name type format label variable label -----------------------------------------------------------balance str8 %9s tab balance.67 46.00 ------------+----------------------------------Total | 15 100.6 | 1 6.67 13.00 273. replace balance =". balance contains non-numeric characters. replace.b) e poi si applicherà il comando destring .99 | 1 6. Creare Variabili destring 8.67 53.33 2517.67 26.99 | 1 6.67 20.62 | 1 6. Per poterla rendere numerica per prima cosa si provvederà a convertire i dati stringa in missing (. no replace .00 100. destring balance. desc balance.a" if balance=="INS Paid". desc eta tostring_options Nicola Tommasi 89 .67 80.b" if balance=="NULL". {generate(newvarlist)|replace} . destring balance. ------------+----------------------------------1112. Creare variabili dummy 8. Dev.5. tab nord.8.71912 22. summ eta Variable | Obs Mean Std. Creare Variabili storage display value variable name type format label variable label ---------------------------------------------------------------------eta int %10. desc eta storage display value variable name type format label variable label ---------------------------------------------------------------------eta str3 %9s . summ eta Variable | Obs Mean Std. Min Max -------------+-------------------------------------------------------eta | 0 .5 Creare variabili dummy Le variabili dummy sono variabili che assumo valori 0 e 1. miss 90 Nicola Tommasi . si crea una variabile ponedola pari a 0 e poi si sotituisce il valore 1 secondo un certo criterio: .25459 0 102 . Dev. Vediamo adesso due metodi per creare questo tipo di variabili.25459 0 102 8.0g . gen nord=0 .71912 22. replace eta has all characters numeric. 0 quando è assente. In particolare 1 quando la caratteristica in esame è presente. summ eta Variable | Obs Mean Std. tostring eta. replaced as int . replace eta was int now str3 . Min Max -------------+-------------------------------------------------------eta | 74880 41.0g . desc eta storage display value variable name type format label variable label ---------------------------------------------------------------------eta int %10. Min Max -------------+-------------------------------------------------------eta | 74880 41. Dev. Il primo sistema si basa sulla tecnica del replace. replace nord=1 if ripgeo==1 | ripgeo==2 (61098 real changes made) . destring eta. ------------+----------------------------------1 | 32. tab nord.37 56.01 77.188 22.99 100.023 100.00 ------------+----------------------------------Total | 140.00 -> tabulation of ripgeo_2 ripgeo== | 2.37 1 | 61. Percent Cum.68 100.0000 | Freq.8.023 100. Creare Variabili nord | Freq. Percent Cum.75 4 | 37.63 100. miss gen(ripgeo_) ripgeo | Freq.88 80.63 3 | 26. ------------+----------------------------------0 | 78. ------------+----------------------------------0 | 113.00 ------------+----------------------------------Total | 140.098 43. gen north = ripgeo<=2 .65 100.65 43.206 26.37 1 | 61.00 .99 2 | 28.99 22.32 5 | 14.023 100.098 43.12 62. miss nord | Freq.910 20.768 19. Percent Cum.35 1 | 28.35 79.925 56.00 Nicola Tommasi 91 . ------------+----------------------------------0 | 111.0000 | Freq.00 ------------+----------------------------------Total | 140.023 100. tab ripgeo.0000 | Freq.63 100.37 56.88 1 | 26.951 10.01 1 | 32.768 19.00 Con il secondo metodo si sfrutta l’opzione gen del comando tabulate .00 ------------+----------------------------------Total | 140.023 100.835 77. ------------+----------------------------------0 | 107.188 22. Percent Cum. ------------+----------------------------------0 | 78.5.00 -> tabulation of ripgeo_3 ripgeo== | 3.12 100.925 56.00 ------------+----------------------------------Total | 140. Percent Cum. Percent Cum.023 100. tab1 ripgeo_* -> tabulation of ripgeo_1 ripgeo== | 1. Creare variabili dummy Oppure in maniera meno pedante .00 ------------+----------------------------------Total | 140.910 20.255 80.113 79.57 89.00 8. 8. 92 Nicola Tommasi . Percent Cum.1911686 . ------------+----------------------------------0 | 125. Percent Cum.023 100.43 73. Creare Variabili -> tabulation of ripgeo_4 ripgeo== | 4.3932229 0 1 ripgeo_4 | 140023 .57 100.2298765 .43 1 | 37.4207548 0 1 ripgeo_2 | 140023 .4047703 0 1 ripgeo_3 | 140023 . Creare variabili dummy 8.5.072 89.0000 | Freq.023 100. Dev.441714 0 1 ripgeo_5 | 140023 .951 10.2657135 .1067753 .00 ------------+----------------------------------Total | 140.00 ------------+----------------------------------Total | 140.206 26.2064661 . summ ripgeo_* Variable | Obs Mean Std.32 1 | 14. Min Max -------------+-------------------------------------------------------ripgeo_1 | 140023 . ------------+----------------------------------0 | 102.32 89.3088285 0 1 Si noti che la media delle variabili dummy corrisponde alla percentuale di valori 1.817 73.00 -> tabulation of ripgeo_5 ripgeo== | 5.0000 | Freq.68 100.00 . 8001 50% 75% 90% 8840 22100 32500 Largest 127850 139300 Mean Std. Dev.57 15618.5 800000 Mean Std.38 2. detail Reddito disponibile netto ------------------------------------------------------------Percentiles Smallest 1% 3600 0 5% 12050 0 10% 17000 0 Obs 8001 25% 27200 0 Sum of Wgt.38 38811.51e+09 4. detail dove detail produce un output con un numero maggiore di informazioni. Per le prime il comando essenziale è: summarize varlist if in weight . fweight e iweight e servono per produrre delle statistiche pesate.Capitolo 9 Analisi Quantitativa 9.93251 Reddito da pensioni e altri trasferimenti ------------------------------------------------------------Percentiles Smallest 1% 0 0 5% 0 0 10% 0 0 Obs 8001 25% 0 0 Sum of Wgt. . Inoltre questo comando supporta l’uso dei pesi ( weight ) che possono essere uno tra aweight.44e+08 93 . summ y1 yt. Dev.342934 52.8 764335.92 1. 8001 50% 75% 90% 95% 99% 42600 65964 92000 114100 188500 Largest 557239.1 summarize e tabulate Per prima cosa è bene distinguere le analisi da condurre su variabili continue e quelle su variabili discrete. Variance Skewness Kurtosis 51212.3 630000. Variance 12683. 175 100.015e+08 Per le variabili discrete il comando principale è tabulate che analizzeremo nel caso di analisi di una sola variabile e nel caso di incrocio tra due variabili. tabulate_options tra le tabulate_options più importanti: missing per includere anche le osservazioni missing nolabel per visualizzare i codici numerici al posto delle etichette dei valori sort per ordinare in senso discendente in base alla frequenza delle diverse specificazioni della variabile sum(var) per fare il sum di una variabile continua per ciascuna specificazione di varname .3) s(n abspct miss mean median sum) Variable | N Missing AbsPct Mean Median Sum ----------+-----------------------------------------------------------y1 | 8001 0 0. fsum y1 yt.91 0 169000 Un comando aggiuntivo simile ma che offre una gamma più ampia di possibilità è fsum. .000 12683.55 Poco soddisfatto | 46 2.49 36364.3 42600.015e+08 .000 51212.83 14946.1.380 42600.20 100.3) s(n miss mean median sum) uselabel Variable | N Missing Mean Median Sum ------------------------------+---------------------------------------Reddito disponibile netto | 8001 0 51212.000 4.11 2.098e+08 yt | 8001 0 0.55 98. summarize e tabulate 95% 99% . Percent Cum.0 4.9.67 Soddisfatto | 733 33.71 0 800000 yt | 8001 8001 11932. tab d09a Chiarezza della | segnaletica | Freq.37 Più che Soddisfatto | 563 25.5 8840. Dev.00 94 Nicola Tommasi .25 Completamente Soddisfatto | 795 36.80 Non saprei | 26 1. fsum y1 yt.571 8840. summ y1 41223 65000 150800 169000 Skewness Kurtosis 9.098e+08 Reddito da pens e altri trasf | 8001 0 12683. f(10.0 1.00 --------------------------+----------------------------------Total | 2. Analisi Quantitativa 1.70 36.624059 7. Min Max ---------+-------------------------------------------------------------y1 | 8001 8001 49152.55 0. f(10. --------------------------+----------------------------------Per nulla soddisfatto | 12 0. Nel caso si voglia analizzare la distribuzione di frequenza di una sola variabile discreta il comando è: tabulate varname if in weight .892386 yt [aweight=pesofit] Variable | Obs Weight Mean Std.89 62.000 1. 96 3 | 733 31.283727 19. ------------+----------------------------------1 | 12 0.91 .146486 719 4 | 51.05 57.00 .79 Più che Soddisfatto | 563 24.00 ------------+----------------------------------Total | 2. miss nolab sort Chiarezza | della | segnaletica | Freq.96 91.38 6 | 26 1. miss nolab sum(d01) Chiarezza | della | Summary of Età segnaletica | Mean Std. Freq.32 .80 Non saprei | 26 1.96 91.a | 63. miss nolab Chiarezza | della | segnaletica | Freq.776801 18.48 3 | 733 31.80 6 | 26 1. Analisi Quantitativa . ------------+-----------------------------------1 | 51. --------------------------+----------------------------------Per nulla soddisfatto | 12 0.341 100.96 2.11 92.341 100.05 57. Percent Cum.79 4 | 563 24.09 96.392683 24 .96 2. summarize e tabulate Chiarezza della | segnaletica | Freq.49 1 | 12 0.a | 166 7. ------------+----------------------------------5 | 795 33.09 100.9.31 33.00 ------------+----------------------------------Total | 2. tab d09a.00 .965238 2276 Nicola Tommasi 95 . tab d09a.375 17.51 2 | 46 1.96 98.51 0.363636 21.84 5 | 795 33.27 4 | 563 24.997164 555 5 | 53.41 2 | 46 1.511641 149 ------------+-----------------------------------Total | 52.69334 772 6 | 42.369565 18.09 100.31 65.00 --------------------------+----------------------------------Total | 2.1.70991 18.795746 11 2 | 48.91 Non risponde | 166 7.96 33.84 Completamente Soddisfatto | 795 33.31 33.11 99. tab d09a.48 Soddisfatto | 733 31. miss 9.a | 166 7.362416 15. Dev.51 Poco soddisfatto | 46 1. Percent Cum.51 100.587162 46 3 | 51.51 0.00 . tab d09a.05 89. Percent Cum.11 92.497409 18.341 100. summarize e tabulate 9. quindi comprende anche quelli a frequenza zero include(numlist) include solo i valori specificati in numlist ascending visualizza i valori in ordine ascendente di frequenza descending visualizza i valori in ordine discendente di frequenza .a Non risponde | 166 7.00 ---------------------------------------------------------------------------------. -----------------------------+--------------------------------1 Per nulla soddisfatto | 12 0.55 98.00 Total | 2175 92. fre d09a d09a -.89 62.9. nomissing d09a -.09 Total | 2341 100. fre d09a. tra l’altro.25 5 Completamente Soddisfatto | 795 33. fre d09a.Chiarezza della segnaletica --------------------------------------------------------------| Freq.89 62. nolabel d09a ----------------------------------------------------------- 96 Nicola Tommasi .91 100.67 3 Soddisfatto | 733 33.55 2 Poco soddisfatto | 46 2.80 6 Non saprei | 26 1.25 5 Completamente Soddisfatto | 795 36.96 2.55 0.37 4 Più che Soddisfatto | 563 24.00 Total | 2175 100.05 25.20 100.00 Missing . Percent Cum.55 2 Poco soddisfatto | 46 1.55 0.70 36. Percent Valid Cum. di di esportare i risultati anche in Tex: fre varlist if in weight .67 3 Soddisfatto | 733 31. Analisi Quantitativa Sempre nel caso di analisi di frequenza univariata segnalo il comando aggiuntivo fre che consente.00 --------------------------------------------------------------.96 36. -------------------------------------+-------------------------------------------Valid 1 Per nulla soddisfatto | 12 0.70 36.37 4 Più che Soddisfatto | 563 25.1.11 1.11 2.51 0.20 100. options Tra le options citiamo: format(#) che indica il numero di decimali (2 è il valore di default) nomissing omette dalla tabella il conteggio dei valori missing nolabel omette il label delle variabili novalue omette il valore numerico delle label noname omette il nome della variabile notitle omette il titolo con il nome e la descrizione della variabile nowrap non manda a capo l’intestazione di riga width(#) specifica la larghezza della colonna delle descrizioni include include tutti i valori possibili della variabile.Chiarezza della segnaletica ---------------------------------------------------------------------------------| Freq.31 33.55 98.11 2.80 6 Non saprei | 26 1. 55 0.00 Missing .55 98.a Non risponde | 166 7.00 ----------------------------------------------------------.37 4 Più che Soddisfatto | 563 24. novalue d09a -.37 4 Più che Soddisfatto | 563 24.00 ------------------------------------------------------------------------------.55 98. -------------------------------------+-------------------------------------------Valid 1 Per nulla soddisfatto | 12 0.31 33.05 25.89 62.a | 166 7. Analisi Quantitativa 9.09 Total | 2341 100.67 Soddisfatto | 733 31.70 36.51 0.25 5 | 795 33. Percent Valid Cum. fre d09a.91 100.00 Total | 2175 92.96 2.55 98.11 1.20 100. -------------------------------------+-------------------------------------------Valid 1 Per nulla soddisfatto | 12 0. Percent Valid Cum.25 5 Completamente Soddisfatto | 795 33.70 36.00 Total | 2175 92.67 3 Soddisfatto | 733 31. ascending Nicola Tommasi 97 .11 1.00 Missing Non risponde | 166 7.05 25.00 Missing .20 100.09 Total | 2341 100.11 1.91 100. fre d09a.37 Più che Soddisfatto | 563 24. Percent Valid Cum.96 2.96 2.80 6 Non saprei | 26 1.70 36.67 3 Soddisfatto | 733 31.96 2.96 36.67 3 | 733 31. noname Chiarezza della segnaletica ---------------------------------------------------------------------------------| Freq.Chiarezza della segnaletica ------------------------------------------------------------------------------| Freq.11 2.55 0. --------------+-------------------------------------------Valid 1 | 12 0.00 ---------------------------------------------------------------------------------.20 100.00 ---------------------------------------------------------------------------------.55 2 Poco soddisfatto | 46 1.55 0.55 2 | 46 1.00 Total | 2175 92.25 5 Completamente Soddisfatto | 795 33. fre d09a.31 33.a Non risponde | 166 7.51 0.70 36. summarize e tabulate | Freq.91 100.80 6 | 26 1.55 98.96 36.11 2.11 2.80 Non saprei | 26 1.09 Total | 2341 100.31 33.11 2.25 Completamente Soddisfatto | 795 33.89 62.20 100.31 33.11 1.96 36.55 2 Poco soddisfatto | 46 1.89 62.9.00 Missing .51 0.1.55 0.05 25.51 0. notitle ---------------------------------------------------------------------------------| Freq. Percent Valid Cum.05 25. fre d09a.37 4 | 563 24.55 Poco soddisfatto | 46 1.96 36.89 62. ----------------------------------+-------------------------------------------Valid Per nulla soddisfatto | 12 0.80 6 Non saprei | 26 1.91 100.00 Total | 2175 92.09 Total | 2341 100. 31 33.31 33.95 100.64 44.56 69.Chiarezza della segnaletica ---------------------------------------------------------------------------------| Freq.00 ---------------------------------------------------------------------------------.96 36.55 3 Soddisfatto | 733 31.14 2 Poco soddisfatto | 46 1.a Non risponde | 166 7.25 6 Non saprei | 26 1.55 6 Non saprei | 26 1.00 0.70 63.89 29. Percent Valid Cum.22 100.66 0. -------------------------------------+-------------------------------------------Valid 1 Per nulla soddisfatto | 0 0.45 1 Per nulla soddisfatto | 12 0.86 4 Più che Soddisfatto | 563 24.51 0.91 100.75 3 Soddisfatto | 733 31.78 6 Non saprei | 1 0.91 5 Completamente soddisfatto | 135 27.1. options export_opts possiamo esportare la tabella prodotta da fre. -------------------------------------+-------------------------------------------Valid 1 Per nulla soddisfatto | 12 0.11 3.55 0.91 100.20 1.09 Total | 2341 100.05 Total | 497 100.00 Total | 2175 92.33 24.20 99.05 25.00 Missing .a Non risponde | 166 7.00 Missing .75 2 Poco soddisfatto | 46 1.09 Total | 2341 100. Percent Valid Cum.25 4 Più che Soddisfatto | 563 24.35 4 Più che soddisfatto | 111 22.16 29.11 1.00 ---------------------------------------------------------------------------------.00 2 Poco soddisfatto | 3 0. Percent Valid Cum.00 Missing .69 45. descending d09a -.00 ---------------------------------------------------------------------------------- Con la sintassi fre varlist using filename if in weight .45 5 Completamente Soddisfatto | 795 33. -------------------------------------+-------------------------------------------Valid 5 Completamente Soddisfatto | 795 33. fre d11_3.00 0.55 100.a Non risponde | 45 9.20 0.55 100.66 3 Soddisfatto | 202 40.00 Total | 2175 92.70 70.55 36.Chiarezza della segnaletica ---------------------------------------------------------------------------------| Freq.60 0. Tra le export_opts: tab che esporta in formato delimitato da tabulazione (da indicare nell’estensione di filename) tex che esporta in formato Tex (da indicare nell’estensione di filename) pre(strlist) testo da visulizzare prima della tabella post(strlist) testo da visulizzare dopo la tabella replace sovrascrive filename se già esistente append aggiunge il risultato di fre al filename già esistente 98 Nicola Tommasi .89 96.Chiarezza informazioni ricevute dal personale di segreteria ---------------------------------------------------------------------------------| Freq.96 36. Analisi Quantitativa d09a -.9. fre d09a.00 Total | 452 90.11 1.96 2.05 25.51 0. summarize e tabulate 9. include d11_3 -.87 99.11 98.96 2. 37 62.05 33.67 36.00 Cum.96 1.91 7.25 98.20 100.96 31.1.11 33.51 1.a Per nulla soddisfatto Poco soddisfatto Soddisfatto Più che Soddisfatto Completamente Soddisfatto Non saprei Non risponde Se le variabili sono molte. tab1_options che produce la distribuzione di frequenza per ciascuna variabile specificata in varlist. row o cell) sum(var) per fare il sum di una variabile continua per ciascuna combinazione di varname1 e varname2 .11 92.00 Valid 0. options Le opzioni più importanti sono: chi2 per calcolare il χ2 di Pearson exact (#) riporta il test esatto di Fisher gamma riporta il test gamma di Goodman e Kruskal taub riporta il test tau-b (τ ) di Kendall V riporta la V di Cramer column riporta la frequenza relativa per colonna row riporta la frequenza relativa per riga cell riporta la frequenza relativa per ciascuna cella nofreq sopprime la frequenza nelle celle (da usare solo in abbinamento con column.89 36.70 25.tex. fre d09a using tables.55 1. si può ricorrere al comando tab1 varlist if in weight .00 Valid Missing Total Testo Finale 1 2 3 4 5 6 Total . tab a10 a11 Nicola Tommasi 99 .tex) E questo è il risultato importato in LaTex: Testo Iniziale d09a — Chiarezza della segnaletica Freq.31 24. 0.80 100. pre(Testo Iniziale) post(Testo Finale) (output written to tables. Nel caso di incrocio tra due variabili discrete il comando è: tabulate varname1 varname2 if in weight .55 2.55 2.09 100. 12 46 733 563 795 26 2175 166 2341 Percent 0. anziché fare un tab per ciascuna. Analisi Quantitativa 9.9. summarize e tabulate . column +-------------------+ | Key | |-------------------| | frequency | | column percentage | +-------------------+ | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 | 75. Analisi Quantitativa | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 1 | 2 6 0 | 8 2 | 1 2 2 | 5 -----------+---------------------------------+---------Total | 12 11 3 | 26 .00 | 100.00 100.00 40.00 27.1. tab a10 a11.33 | 50. row +----------------+ | Key | |----------------| | frequency | | row percentage | +----------------+ | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 | 69.67 | 19.00 .08 7.55 0.18 66. column row +-------------------+ | Key | 100 Nicola Tommasi .00 | 100.77 -----------+---------------------------------+---------2 | 1 2 2 | 5 | 8.00 -----------+---------------------------------+---------Total | 12 11 3 | 26 | 46.9.67 54.00 | 30.00 -----------+---------------------------------+---------1 | 2 6 0 | 8 | 25.00 40. summarize e tabulate 9.27 33. tab a10 a11.23 23.69 | 100.00 0.31 11.23 -----------+---------------------------------+---------Total | 12 11 3 | 26 | 100.00 | 100. tab a10 a11.15 42.00 75.33 18.00 .00 100.54 | 100.00 -----------+---------------------------------+---------2 | 1 2 2 | 5 | 20.00 -----------+---------------------------------+---------1 | 2 6 0 | 8 | 16. 00 40.00 27. column row cell +-------------------+ | Key | |-------------------| | frequency | | row percentage | | column percentage | | cell percentage | +-------------------+ | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 | 69.00 100.00 | 30.00 -----------+---------------------------------+---------1 | 2 6 0 | 8 | 25.00 | 100.00 | 30.00 40.00 40. tab a10 a11.69 7.31 11.33 | 50.00 | 100.23 -----------+---------------------------------+---------Total | 12 11 3 | 26 | 46.69 | 19.23 -----------+---------------------------------+---------Total | 12 11 3 | 26 | 46.33 | 50.00 | 75.77 | 7.00 | 16.67 | 19.33 18.62 11.85 7. summarize e tabulate | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 | 69.08 7.00 .00 75.23 | 3.00 | 8.00 . Analisi Quantitativa |-------------------| | frequency | | row percentage | | column percentage | +-------------------+ 9.69 23.00 | 100.00 100.33 18.77 -----------+---------------------------------+---------2 | 1 2 2 | 5 | 20.15 42.00 0.00 | 16.31 11.00 0.54 | 100.67 54. column row cell nofreq +-------------------+ | Key | Nicola Tommasi 101 .00 | 30.27 33.23 23.69 | 100.9.00 -----------+---------------------------------+---------1 | 2 6 0 | 8 | 25.08 0.00 | 100.00 | 8.18 66.00 75.00 | 46.69 | 100.08 7.00 | 100.55 0.1.00 100.54 3.67 | 19.27 33.18 66.15 42.31 11.67 54.00 | 100.00 100.00 | 34.23 23.54 | 100.00 27.85 | 50.00 | 100.00 | 75.00 40.54 | 100.55 0.00 | 100.77 -----------+---------------------------------+---------2 | 1 2 2 | 5 | 20.15 42. tab a10 a11. 08 0.62 11.33 18.525694 0 | 7. Standard Deviations and Frequencies of pain | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 91.67 54.957265 | 5.055557 65.31 11.171716 59.15 42. | 72.69 23.24359 | 6.25926 | 77.180667 . chi2 | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 9 3 1 | 13 1 | 2 6 0 | 8 2 | 1 2 2 | 5 -----------+---------------------------------+---------Total | 12 11 3 | 26 Pearson chi2(4) = .975309 87.8209251 15. sum(pain) Means.00 | 46.7803 Pr = 0.78697 | 1 2 2 | 5 -----------+---------------------------------+---------Total | 90.00 | 100.9006867 | 9 3 1 | 13 -----------+---------------------------------+---------1 | 93.00 -----------+---------------------------------+---------1 | 25.54 | 100.9.777779 40.9191447 20.00 9.31 11. se vogliamo incrociare a coppie più di 2 variabili il comando da usare è: 102 Nicola Tommasi .029 Di nuovo.00 | 100.00 | 34.00 | 75.00 0.657864 | 12 11 3 | 26 10.631174 16.00 | 30.69 7.69 | 100.23 -----------+---------------------------------+---------Total | 46.00 | 100.00 | 30.4582514 12. Analisi Quantitativa .00 | 16.23 23.54 | 100.569444 | 9.18 66.00 40. summarize e tabulate |-------------------| | row percentage | | column percentage | | cell percentage | +-------------------+ | a11 a10 | 0 1 2 | Total -----------+---------------------------------+---------0 | 69.23 | 3.85 | 50.00 | 100.33 | 50.00 | 8.55 0.00 100.85 7.77 | 7.77 -----------+---------------------------------+---------2 | 20.67 | 19. tab a10 a11.276293 | 19.74074 .962962 77.972223 67.69 | 19.54 3. tab a10 a11.277777 50 | 51.666666 | 0 5.15 42.1.00 27. | 18.392012 | 2 6 0 | 8 -----------+---------------------------------+---------2 | 77.00 75.9283722 | 15.08 7.27 33.00 100.00 40.8925556 3.777779 | 89. options 9. . tab2 s1 s2 s3 s4 -> tabulation of s1 by s2 | s2 s1 | 0 1 2 3 4 | Total -----------+-------------------------------------------------------+---------0 | 2 8 1 2 3 | 16 1 | 1 1 2 1 0 | 5 2 | 0 0 3 0 0 | 3 3 | 0 0 1 0 0 | 1 4 | 1 0 0 0 0 | 1 -----------+-------------------------------------------------------+---------Total | 4 9 7 3 3 | 26 -> tabulation of s1 by s3 | s3 s1 | 0 1 2 | Total -----------+---------------------------------+---------0 | 16 0 0 | 16 1 | 3 1 1 | 5 2 | 1 1 1 | 3 3 | 1 0 0 | 1 4 | 1 0 0 | 1 -----------+---------------------------------+---------Total | 22 2 2 | 26 -> tabulation of s1 by s4 | s4 s1 | 0 1 4 | Total -----------+---------------------------------+---------0 | 13 0 3 | 16 1 | 3 0 2 | 5 2 | 1 1 1 | 3 3 | 1 0 0 | 1 4 | 1 0 0 | 1 -----------+---------------------------------+---------Total | 19 1 6 | 26 -> tabulation of s2 by s3 | s3 s2 | 0 1 2 | Total -----------+---------------------------------+---------0 | 3 1 0 | 4 1 | 9 0 0 | 9 2 | 4 1 2 | 7 3 | 3 0 0 | 3 4 | 3 0 0 | 3 -----------+---------------------------------+---------Total | 22 2 2 | 26 -> tabulation of s2 by s4 Nicola Tommasi 103 .9. Analisi Quantitativa tab2 varlist if in weight . summarize e tabulate che restituisce le distribuzioni di frequenza per ciascuna coppia delle variabili specificate in varlist.1. . Tra le options inseriamo contents(clist) dove clist può essere scelto tra mean varname media di varname sd varname deviazione standard di varname sum varname sommatoria di varname n varname numero di casi (missing esclusi) di varname max varname valore massimo di varname min varname valore minimo di varname median varname mediana di varname p1 varname 1° percentile di varname p2 varname 2° percentile di varname ..1.1 Qualcosa di più avanzato Per produrre tabelle di statistiche più evolute possiamo ricorre al comando table table rowvar colvar supercolvar if in weight . p98 varname 98° percentile di varname p99 varname 98° percentile di varname iqr varname range interquartile (p75-p25) di varname si tenga presente che al massimo si possono inserire 5 statistiche in clist. Analisi Quantitativa | s4 s2 | 0 1 4 | Total -----------+---------------------------------+---------0 | 2 0 2 | 4 1 | 8 0 1 | 9 2 | 5 1 1 | 7 3 | 2 0 1 | 3 4 | 2 0 1 | 3 -----------+---------------------------------+---------Total | 19 1 6 | 26 -> tabulation of s3 by s4 | s4 s3 | 0 1 4 | Total -----------+---------------------------------+---------0 | 18 0 4 | 22 1 | 0 0 2 | 2 2 | 1 1 0 | 2 -----------+---------------------------------+---------Total | 19 1 6 | 26 9.. c(mean w_food mean w_cloth mean w_house 104 Nicola Tommasi .9. options dove in rowvar colvar supercolvar inseriamo variabili categoriche (fino ad un massimo di 3).. ..1. summarize e tabulate 9. table fsize. 198 0.139 | 0.149 0.152 0.397 0.373 0.132 0.328 | 0.138 0.328 0.132 5 | 0.433 0.072 0.373 | 0.108 3.132 6 | 0.243 | 0.133 0.134 0.527 0.393 0.154 0.171 0.078 2 9 | 0.137 0.394 0.527 0.373 0.196 0.699 5 | 0.123 0.154 0.109 10.145 0.131 0.131 0.105 4.151 | 0.111 0.215 0.130 0.328 0.243 0.357 0.784 -----------------------------------------------------------------.365 0.154 | 0.141 | Total | 0.243 0.248 0.416 0.138 3 | 0.175 3 | 0.373 0.130 4 | 0.416 0.117 1.140 0.107 0.139 0.142 0.103 162 7 | 0.152 0.139 0.129 0.393 Nicola Tommasi 105 .378 0. -------------------------------------------------------------------------------Numero di | component | i | mean(w_food) mean(w_cl~h) mean(w_ho~e) mean(w_tr~i) mean(w_ed~r) ----------+--------------------------------------------------------------------2 | 0.357 0.116 0.3f) row col -----------------------------------------------------------------Numero di | component | i | mean(w_food) iqr(w_food) sd(w_food) N(w_food) ----------+------------------------------------------------------2 | 0. c(mean w_food iqr w_food sd w_food n w_food) format(%5.154 0. table fsize nch05.139 0.159 0.217 0.142 | 0.328 0.162 0.144 0.128 8 | 0.220 0.109 26 8 | 0.149 0.219 | 0.133 0.217 | 0.378 0.151 0.198 0.132 | 5 | 0.138 0.133 0.363 0.357 | 0. table fsize.357 0.150 0. --------------------------------------------Numero di | component | Figli del capofamiglia <=5 i | 0 1 2 3 Total ----------+---------------------------------2 | 0.151 0.9. summarize e tabulate w_eduricr) format(%5.433 0.1. Analisi Quantitativa mean w_trasporti mean 9.139 9 | 0.135 0.107 1.203 0.3f) row col.166 0.176 2 | Total | 0.344 0.129 0.392 0.393 0.137 0.210 0.377 0.139 | 0.091 0.132 -------------------------------------------------------------------------------.224 0.138 | 3 | 0.132 0.219 0.115 6 | 0.366 0.366 0.130 | 4 | 0.137 0.224 0.137 | 0.134 7 | 0.3f) row col.142 0.209 0. c(mean w_food mean w_cloth mean w_house mean w_trasporti mean w_eduricr) format(%5.603 4 | 0. 205 0.122 0.173 0. Analisi Quantitativa Se invece abbiamo variabili continue di cui vogliamo avere ulteriori statistiche oltre a quelle fornite da summarize possiamo ricorrere a: tabstat varlist if in weight . options dove in varlist inseriamo la liste delle variabili continue e tra le options in statistics() possiamo scegliere tra: mean n sum max min sd variance cv coefficiente di variazione (sd/mean) semean errore standard della media (sd/sqrt(n)) skewness (indice di simmetria o indice di Pearson) kurtosis (indice di curtosi o di appiattimento) p1 p5 106 Nicola Tommasi .133 0.181 0.107 0.371 0.254 0.146 0.406 0.129 0.119 0.144 | 0.083 0.155 0.135 0.198 | 0.197 0.124 0.144 0.117 0.202 0.180 0.416 | 0.459 0.168 0.129 | 0.125 0.191 0.140 0.378 | 0.363 0.415 0.108 0.128 | 8 | 0.471 0.135 0.366 | 0.116 0.439 0.136 0.141 0.144 0.181 0.138 0.128 0.131 0.366 0.130 | 0.159 0.139 0.091 | 0.161 0.527 | 0.106 0.372 0.130 0.133 | 0.168 0.168 0.215 0. summarize e tabulate | 0.141 | Total | 0.433 | 0.115 0.139 | 9 | 0.140 0.186 0.161 0.203 | 0.157 0.117 0.125 0.133 | 0.187 0.107 | 0.126 0.178 0.133 0.120 0.126 0.130 0.061 0.9.161 0.209 | 0.075 0.132 0.132 | 6 | 0.134 | 7 | 0.099 0.220 | 0.142 0.116 | 0.502 0.460 0.122 0.123 | 0.1.522 0.150 | 0.022 0.171 | 0.215 | 0.139 | 0.240 0.184 0.132 --------------------------------------------- 9.119 0.134 0.415 0.147 0.313 0.105 0.225 0.119 0.152 0.582 0.157 0.134 0.197 0.139 0.072 | 0. 4204 -1.049721 0 2688.488 tax_6 | 64416.1.001891 -568.114 -41.11 799. prof_nmr variable | sum mean cv p1 p99 ----------------------+-------------------------------------------------6 tax_1 | 81598.488 tax_6 | 64416. 0 0 tax_5 | 36993.1 -210. 0 0 tax_5 | 36993.09 892. 0 0 tax_5 | 52293.899 tax_7 | 812.8 3285.64311 -201.779 1.068916 -58.31372 -1.034861 0 1938.4997 1. 0 0 tax_4 | 0 0 . tabstat tax_1-tax_8 if nfigli==1.0959 -1.11 362.160488 -68.315 0 tax_4 | 0 0 .008443 0 40.38464 -1.61 tax_2 | -1766 -17.5484 0 tax_4 | 0 0 .5 2174.7361 1.p25 q equivalente a p25 p50 p75 9.939 Nicola Tommasi 107 .049721 0 50.233 -39.099732 0 27.034861 0 28.034861 0 1113.946 11.804 tax_6 | 87770.9815 1. 0 0 tax_5 | 31253.96 tax_8 | 1199.034861 0 1113.034861 0 36.62974 1.1 -210.9. summarize e tabulate .592 tax_7 | 1360.049721 0 1543.15179 tax_8 | 1634.15 512.947 12.881 -42.958 tax_6 | 54422.132 1.1445 0 tax_3 | 0 0 .5 3763.378702 0 13930.62 tax_2 | -1770.256 tax_7 | 1310.5376 1.643618 -194.6776 1.min iqr = p75 .724 1.11 362.678715 -220.939 tax_7 | 962.6779 1.008443 0 2709.049721 0 40.85242 1.969212 1.73313 ----------------------+-------------------------------------------------7 tax_1 | 221761.5 2174.94 tax_2 | -21492.08936 -1. 0 0 tax_5 | 50404.432646 1.336498 0 12298.1299 9.234 16.4204 -1.983 16.099732 0 1039.008443 0 50.099732 0 33.33391 1.315 0 tax_4 | 0 0 .02925 1.409285 0 8196.132 1.47047 tax_8 | 1696.965136 0 5761.913 -17.86 494.97 860.83 631.018802 -565. by(prof_nmr) stats(sum mean cv p1 p99) col(stat) long notot.73045 0 tax_3 | -4191.1653 1.78 9.94 tax_2 | -21492.2259 0 tax_3 | -4326.83 631.409285 0 8196.678715 -220.707 tax_2 | -18165.034861 0 1938.099732 0 1810.36189 -1.07639 ----------------------+-------------------------------------------------10 tax_1 | 221761.7069 -1.008443 0 1556.6776 1.11824 ----------------------+-------------------------------------------------8 tax_1 | 383905. Analisi Quantitativa p10 p25 median p50 p75 p90 p95 p99 range = max .5376 1.76418 1.79 306.4097 1.84 533.04759 tax_8 | 1013.881 -42.87674 0 tax_3 | -4017.939017 1.5573 1.2259 0 tax_3 | -4326.78 -178.47383 ----------------------+-------------------------------------------------9 tax_1 | 335143.7069 -1.001891 -568.057 tax_6 | 91059.059 13.7244 0 tax_4 | 0 0 .8596 7. 2418301 .946 11.0000 q2a | -0.1764706 .034861 0 28.089826 . Le due opzioni più importanti sono means che visualizza la media.03182 q3a | -.059469 .1783809 0 1 q3a | .0000 q3b | -0.195046 .1299 9.0613 0.010535 1.0000 q3d | -0.114121 108 Nicola Tommasi .4870176 0 2 q2c | . corr basale q2a q2b q2c q3a q3b q3c q3d.0000 q2c | -0.5862195 0 3 q3c | .010793 . .106596 .04773 . Attenzione che correlate considera solo le osservazioni contemporaneamente valide per tutte le osservazioni.1571 0.015695 .76418 1.011653 .1748 0.034861 0 36.029412 . il minimo e il massimo delle variabili scelte e covariance che invece visualizza la matrice delle covarianze.002236 . Il primo è: correlate varlist if in weight .119797 q3d | -.1030 0.0653595 .845201 q2a | -.0804 0.7254902 .058222 .1190 0.01419 .2113 1. Dev.237186 q2c | -.9193483 0 3 q2a | .1045 0.0000 q3c | -0.5629453 0 2 q2b | .004291 0 5 q3b | . Analisi Quantitativa tax_7 | 962.0019 1. means (obs=153) Variable | Mean Std.2.96 tax_8 | 1199.051858 . la deviazione standard.036335 .3461171 0 3 q3d | .0743 0.2312 0.3276 1. covariance (obs=153) | basale q2a q2b q2c q3a q3b q3c q3d -----------+-----------------------------------------------------------------------basale | .0000 q3a | -0.0326797 .016985 .010707 .0000 q2b | 0.9.0703 0. Min Max -----------+---------------------------------------------------basale | .213493 .018361 .021586 .032766 .089611 .6797386 1.0759 0.1030 0.1032 0.432646 1.1585 0.1846 1.014706 .1149 1.0653 0.043344 .3313 1.1563 0.3142 0.2918 0.0133 0.1537 0.007353 .0588 1.0000 Qui un esempio di matrice delle correlazioni .5228758 .017587 . corr basale q2a q2b q2c q3a q3b q3c q3d.0086 q3b | -.343653 q3c | -.2 Analisi della correlazione Per l’analisi della correlazione abbiamo a disposizione due comandi. Analisi della correlazione 9.0317 0.11824 ------------------------------------------------------------------------- 9.0718954 . correlate_options che visualizza la matrice delle correlazioni o la matrice delle covarianze a seconda dell’opzione scelta.316907 q2b | .014792 .3378181 0 3 | basale q2a q2b q2c q3a q3b q3c q3d -----------+-----------------------------------------------------------------------basale | 1.000387 . 0000 | 0. Analisi outliers che analizza le correlazioni indipendentemente per ciascuna coppia di variabili.1102 0.0001 0.1163 0.0507 1. vediamo come Stata ci permette di identificarli.0000 | 0.1283 0.0002 0.9683 | 153 162 162 162 162 162 162 | q3d | -0.0189 0.1864* 1. pwcorr basale q2a q2b q2c q3a q3b q3c q3d.0000 | 153 162 162 162 162 162 | q3c | -0.3245 0.1766* 0.0000 | | 153 | q2a | 0.9.0634 0.0476 0.1642* 0.0000 | 0. Il comando ufficiale è: Nicola Tommasi 109 .7895 0.5338 | 153 162 | q2b | 0.1522 0. per cui la numerosità fa’ riferimento al numero di osservazioni valido per ciascuna coppia di variabili.9694 0.0368 0.1195 0.0000 | 0.4182 0.2148* 1.4464 | 153 162 162 162 162 | q3b | 0.3.0606 0.1228 0.0830 0.05) obs sig | valsalva q2a q2b q2c q3a q3b q3c q3d -----------+-----------------------------------------------------------------------valsalva | 1.0246 0.0501 0.7631 0.1587 0. star(0.0061 | 153 162 162 162 | q3a | -0.0175 | 153 162 162 162 162 162 162 162 | 9.1559* 0.3117* 0.2939 0.8115 0. Le opzioni principali sono: obs visualizza il numero di osservazioni per ciascuna coppia di variabili sig visualizza il livello di significatività della correlazione star(#) visualizza con * i livelli di significatività inferiori al valore # bonferroni usa il metodo di Bonferroni per correggere il livello di significatività sidak usa il metodo di Sidak per correggere il livello di significatività .1723 0.0031 1.2932* 0.1628 0.0000 | 0. Analisi Quantitativa Il secondo comando è: pwcorr varlist if in weight .0640 0.3270* 1.4232 0.0602 1.0031 0.1078 0.1814 0.1235 0.0779 0.0000 | 153 162 162 | q2c | 0.3 Analisi outliers Tralasciando tutta la teoria attinente al problema dei dati anomali (o outliers).1055 -0.0000 | 0.0246 0. pwcorr_options 9.3190* 1.4433 0.0218 0.0000 | 0. .977 | | 6878 93771.35 | | 6879 127160. 13234.19 | | 13234 73208. 13238. 13235.05: Outliers remaining: .63 | | 6880 127160. grubbs isee. Analisi Quantitativa p(#) dove la nuova variabile generata newvar1 (o le nuove variabili generate nel caso di analisi multivariata) sono delle dummy che identificato con 1 i valori candidati ad essere outliers. generate(newvar1 newvar2 ) 9. è: grubbs varlist if in .35 is an outlier 110 Nicola Tommasi . Beginning number of observations: Initially accepted: Expand to (n+k+1)/2: Expand. . Variable: isee (0/1 variable recording which observations are outliers: flag_isee). 33 seconds.203 | | 13239 88253. 13230. 13233..813 | | 13236 77971.93 | | 13235 73449. .7325 so 127160. che va aggiunto tramite ssc. .92 | | 6876 67414. list id isee if flag_isee==1.148 | | 13238 84195. . options dove tra le opzioni teniamo presenti: drop che elimina le osservazioni identificate come outliers generate(newvar1 . Il secondo comando. +-------------------+ | id isee | |-------------------| | 6874 63867.9.06 | | 6877 72366. 13228. 13237. 13229. hadimvo isee. drop flag_isee. Notate la differenza nei tempi di esecuzione tra i due comandi e il fatto che restituiscono il medesimo risultato. 13236. gen(flag_isee) log. local st = "$S_TIME". Elapsed time was 24 minutes. local st = "$S_TIME"..492 | | 13237 78410. p = . 13232. 13231. 13239.3.1 | | 6875 64486. gen(flag_isee). .35 | +-------------------+ 13239 2 6620 13226 13 13227. Analisi outliers hadimvo varlist if in . sep(0).) che crea variabili dummy per identificare i valori outliers log che il log delle iterazioni Come sempre segue l’esempio di utilizzo dei due comandi. Iteration = 1. T-value: 10. elapse `st´. in questo caso mi astengo dal fornirvi la descrizione dettagliata del comando. 8.valore della variaile al 25° percentile).0350 so 78410.63 is an outlier Iteration = 3. Vediamo adesso come identificare questi valori come segue: .203 is an outlier Iteration = 5. T-value: 4. No more outliers . gen flag_isee = 0 Nicola Tommasi 111 .9720 so 67414. I valori compresi tra il 75° percentile e + 3 (iqr) si definiscono valori adiacenti 2 superiori e graficamente sono rappresentati dal segmento superiore che parte dal box centrale. Data la comlessità della sintassi dei grafici. 4. sep(0). .6252 so 63867.813 | | 13236 77971. Elapsed time was 6 seconds. 13.35 | +-------------------+ 9.6833 so 64486. T-value: 7.1 | | 6875 64486.3.1 is an outlier 12 outliers. 11. T-value: 5. 2.148 is an outlier Iteration = 6.977 is an outlier Iteration = 4. 3. list id isee if flag_isee==1.492 | | 13237 78410.813 is an outlier Iteration = 8.9999 so 77971. mlabel(isee)) e otteniamo questa figura La scatola centrale si chiama box e la linea al suo interno identifica la mediana della variabile.93 | | 13235 73449. T-value: 6.5214 so 93771. 7.06 is an outlier Iteration = 11.35 | | 6880 127160.4617 so 72366.93 is an outlier Iteration = 9. I valori che inferiormente e superiormente sono oltre i valori adiacenti sono potenziali outliers e graficamente sono rappresentati con dei punti.19 | | 13234 73208.63 | | 6879 127160.92 is an outlier Iteration = 12.148 | | 13238 84195. marker(1.492 is an outlier Iteration = 7.9903 so 88253. T-value: 4. 9. Analisi Quantitativa Iteration = 2. T-value: 5. Infine vi presento un metodo grafico che si basa sull’utilizzo dei boxplot. T-value: 5. Impartiamo il seguente comando: graph box isee. 6. T-value: 6. T-value: 4. elapse `st´.5568 so 73449. T-value: 5.9. Analisi outliers 1. In maniera analoga i valori compresi tra il 25° percentile e . T-value: 6.5394 so 73208.92 | | 6876 67414.6000 so 84195. +-------------------+ | id isee | |-------------------| | 6874 63867. 12.977 | | 6878 93771.203 | | 13239 88253.3 2 (iqr) si definiscono valori adiacenti inferiori e graficamente sono rappresentati dal segmento inferiore che parte dal box centrale.19 is an outlier Iteration = 10. All’interno del box vi stanno tutti i valori compresi tra il 25° e il 75° percentile e si definisce tale intervallo come range interquartile (iqr = valore della variabile al 75° percentile . 5.06 | | 6877 72366. 10. 3.9. Analisi outliers 9.1: Box Plot 112 Nicola Tommasi . Analisi Quantitativa Figura 9. | 13233 62853. 13239.8533689 6.06 | | 6877 72366. 12952.9.3.39 | | 13117 42388.871 | | 13119 42405. sep(0) +-------------------+ | id isee | |-------------------| | 6716 42386.203 | | 13239 88253.205226 .63 127160.813 | | 13236 77971.35 | +-------------------+ Come si vede con questo metodo i valori indiziati di essere outliers sono assai più numerosi (289).63 | | 6879 127160. 13238. summ isee. 13231. 13228. 13234. replace flag_isee=1 if isee < r(p25)-3/2*(r(p75)-r(p25)) (0 real changes made) . 12955.102 | | 13116 42388. 13232. 12954.977 | | 6878 93771. Variance Skewness Kurtosis 17837. Dev. 13237. (output omitted ) 13226.492 | | 13237 78410.719 | | 6874 63867.33 46270. detail isee ------------------------------------------------------------Percentiles Smallest 1% 0 0 5% 1455.672 | 12951.98 93771.24 36165.4 Mean Std.08 Largest 88253. Analisi Quantitativa 9.28 23550.92 | | 6876 67414. Analisi outliers . replace flag_isee=1 if isee > r(p75)+3/2*(r(p75)-r(p25)) (289 real changes made) . Nicola Tommasi 113 .4 127160. 13229.96 30706. list id isee if flag_isee==1.18 1. 13233.04e+08 .19 | | 13234 73208.93 | | 13235 73449. 13236.11 0 Sum of Wgt.35 | | 6880 127160. 13239 50% 75% 90% 95% 99% 17076. 12953. 13235.32 10186. 13230. 13227.1 | | 6875 64486.148 | | 13238 84195.6 0 10% 5429 0 Obs 13239 25% 11021.102 | | 13118 42401. . Graficamente ciò che vogliamo ottenere è: +-------------+ | master | |-------------| | a b c | | | | 1 2 3 | | 4 5 6 | +-------------+ + +-------------+ | secondo | |-------------| | c b a | | | | 9 8 7 | | 12 11 10 | | 15 14 13 | +-------------+ ------->> +----------------+ | risultato | |----------------| | a b c | | | | 1 2 3 | | 4 5 6 | | 7 8 9 | | 10 11 12 | | 13 14 15 | +----------------+ Il primo passo è caricare il primo dataset. a. poi si aggiungono le osservazioni del secondo dataset tramite il comando: append using filename . mentre non è richiesto che siano nello stesso ordine di posizione. options 115 . b. vedi secondo dove la disposizione delle variabili è c.Capitolo 10 Trasformare Dataset 10.1 Aggiungere osservazioni In genere quando si aggiungono osservazioni provenienti da un altro dataset si richiede che le variabili abbiano lo stesso nome. Si tenga presente che se una variabile è presente in uno solo dei due dataset. 10. Trasformare Dataset dove in filename specifichiamo il dataset da aggiungere e dove tra le options c’è keep(varlist) dove è possibile specificare le variabili da prendere nel dataset che viene aggiunto. In Stata il comando che permettere di compiere questa operazione è merge . | | 10 11 12 . Aggiungere variabili 10. Qui si farà ricorso al comando mmerge. e solo indirettamente per aggiungere variabili. +-------------+ | secondo | |-------------| | a b c | | | | 7 8 9 | | 10 11 12 | | 13 14 15 | +-------------+ + ------>> +--------------+ | master | |--------------+ | a b c d | | | | 1 2 3 7 | | 4 5 6 8 | +--------------+ +------------------+ | risultato | |------------------| | a b c d | | | | 7 8 9 . nel dataset unione (risultato) per quella variabile ci saranno delle osservazioni missing in corrispondenza delle osservazioni del dataset in cui non era presente. | | 13 14 15 .10. Nelle versioni precedenti di Stata tale comando prevedeva che i dataset master e slave fossero già ordinati in base alle variabili chiave per cui non era molto agevole da usare.2 Aggiungere variabili Condizione necessaria per aggiungere ad un dataset (master) variabili provenienti da un altro dataset (slave) è che in entrambi siano presenti una o più variabili che permettano di stabilire una relazione biunivoca tra le osservazioni del primo e del secondo dataset.2. che permette di superare questa limitazione e che in più ha delle opzioni assai utili. In altre parole ci devono essere delle variabili chiave che mi permettano di assegnare ciascun valore Xij proveniente dal dataset slave ad una determinata osservazione del dataset master. | | 1 2 3 7 | | 4 5 6 8 | +------------------+ In conclusione il comando append serve essenzialmente per aggiungere osservazioni. 116 Nicola Tommasi . Ma se non fosse così.10. Quello mostrato è il caso più semplice in cui id è variabile chiave per entrambi i dataset. Trasformare Dataset 10.osservazione presente in entrambi i dataset (_merge=3) .osservazione presente solo nel dataset slave (_merge=2) . Aggiungere variabili Anche in questo caso diamo una rappresentazione grafica del problema da risolvere: +-------------+ | master | |-------------| | id a b | | | | 1 10 11 | | 2 12 13 | | 3 14 15 | | 5 16 17 | +-------------+ +------------+ | slave | |------------| | id d | | | | 1 18 | | 3 19 | | 4 20 | +------------+ +------------------------+ | risultato | |------------------------| | id a b d _merge | | | | 1 10 11 18 3 | | 2 12 13 . Con essa possiamo assegnare il valore 18 che troviamo in corrispondenza di id=1 in slave all’osservazione sempre con id=1 in master. 20 2 | | 5 16 17 . come mostrato di seguito? +---------------+ | master | |---------------| | f_id p_id a | | | | 1 1 18 | | 1 2 13 | | 1 3 15 | | 2 1 17 | | 2 2 16 | | 3 1 20 | +---------------+ Nicola Tommasi +------------+ | slave | |------------| | f_id b | | | | 1 18 | | 2 19 | | 3 20 | +------------+ +---------------------------+ | risultato | |---------------------------| | f_id p_id a b _merge | | | | 1 1 18 18 3 | | 1 2 13 18 3 | | 1 3 15 18 3 | | 2 1 17 19 3 | | 2 2 16 19 3 | | 3 1 20 20 3 | +---------------------------+ + = 117 .osservazione presente solo nel dataset master (_merge=1) Si può intuire dal dataset risultato cosa succede in termini di creazione di dati missing per i casi di _merge=1 e _merge=2. 1 | | 3 14 15 19 3 | | 4 . al quale vogliamo aggiungere la variabile d presente nel dataset slave. La variabile che ci permette di raccordare i due dataset è id. . Quando associamo le osservazioni si possono presentare 3 casi. 1 | +------------------------+ + = master è il dataset attualmente in memoria. .2. di usare sempre come master il dataset che ha il numero maggiore di variabili chiave. Di default il dataset master è inviolabile ossia nel dataset risultante dal merge saranno tenuti i valori delle variabili del dataset master anche se queste stesse sono presenti nello slave ed hanno valori diversi. verranno aggiunte tutte le variabili di filename. clist mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 S07 L12 L08 S33 E07 G02 fac M E S L L S E G 1. use SLAVE. Se viene specificata questa opzione verrà preso il valore del dataset using nel caso in cui nel master vi siano valori missing. clear . uname(stub) specifica il prefisso da aggiungere alle variabili importate dal dataset slave. . 3. update Piccola spiegazione.clear . 7. 5. clist mat corso fac disab partime 118 Nicola Tommasi . udrop(varlist) dove in varlist vengono indicate le variabili che non vogliamo aggiungere dal dataset filename. Consiglio. Comunque un valore non missing del master non verrà mai sostituito con un valore missing dello slave. Tra le principali options citiamo: ukeep(varlist) dove in varlist vengono indicate le variabili che vogliamo aggiungere dal dataset filename. per comodità. .10. options dove in match-variable(s) vanno indicate la/le variabile/i che servono da raccordo tra i due dataset. Se non viene indicato nulla. in filename il percorso e il nome del dataset che funge da slave. 6. Come accennato in precedenza il comando mmerge non prevede che i due dataset siano preventivamente ordinati. questa è la sua sintassi: mmerge match-variable(s) using filename . 4.2. 2. replace deve essere specificata anche l’opzione update. Aggiungere variabili 10. Trasformare Dataset In questo caso l’informazione contenuta in b si “spalma” su tutti i p_id che hanno lo stesso f_id di master. Con questa opzione i valori non missing del master saranno sostituiti con i corrispondenti valori non missing dello slave quando non corrispondenti. Alcune di queste opzioni sono un po’ complicate quindi vediamo alcuni esempi. 8. use master. 5. 6. 4. udrop(disab) ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER. 2. both both both both both both both both in in in in in in in in master master master master master master master master and and and and and and and and Opzione udrop(varlist) . 2. clist mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 S07 L12 L08 S33 E07 G02 fac M E S L L S E G disab 1 0 0 0 0 1 0 0 _merge using data using data using data using data using data using data using data using data 1. use MASTER. ukeep(disab) ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER.dta obs | 8 Nicola Tommasi 119 . 7. mmerge mat using SLAVE. 3.dta obs | 8 vars | 6 (including _merge) ------------+--------------------------------------------------------_merge | 8 obs both in master and using data (code==3) ------------------------------------------------------------------------------. use MASTER.10. Aggiungere variabili PT PT PT Opzione ukeep(varlist) . mmerge mat using SLAVE. 6. 5. VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 M50 E01 . clear . 4.dta obs | 8 vars | 2 (selection via udrop/ukeep) match vars | mat (key) ---------------------+--------------------------------------------------------result file | MASTER. L12 L08 S33 E07 G08 M E S L L S E G 1 0 0 0 0 1 0 0 10. clear . 8.dta obs | 8 vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE. 7. 8. 3.2. Trasformare Dataset 1. dta obs | 8 vars | 4 (selection via udrop/ukeep) match vars | mat (key) -------------------+--------------------------------------------------------common vars | corso fac ---------------------+--------------------------------------------------------result file | MASTER. 2. 5. Trasformare Dataset vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE.dta obs | 8 vars | 6 (including _merge) ------------+--------------------------------------------------------_merge | 8 obs both in master and using data (code==3) ------------------------------------------------------------------------------. clist mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 S07 L12 L08 S33 E07 G02 fac M E S L L S E G partime PT _merge using data using data using data using data using data using data using data using data 1.2.10. PT PT both both both both both both both both in in in in in in in in master master master master master master master master and and and and and and and and Opzione update (Prestate attenzione a cosa succede alla variabile corso) . clist mat corso fac disab partime 120 Nicola Tommasi . 4.dta obs | 8 vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE. 7. drop _merge . mmerge mat using SLAVE ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER.dta obs | 8 vars | 5 match vars | mat (key) -------------------+--------------------------------------------------------common vars | corso fac ---------------------+--------------------------------------------------------result file | MASTER. use MASTER.dta obs | 8 vars | 7 (including _merge) ------------+--------------------------------------------------------_merge | 8 obs both in master and using data (code==3) ------------------------------------------------------------------------------. 8. Aggiungere variabili 10. clear . 6. 3. Aggiungere variabili PT PT PT . 3. update ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER. 5. 2.dta obs | 8 vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE.2. VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 M50 S07 L12 L08 S33 E07 G02 M E S L L S E G 1 0 0 0 0 1 0 0 10. master disagrees with using data PT PT Opzione replace .10. 4. clear . Trasformare Dataset 1. master disagrees with using data (code==5) ------------------------------------------------------------------------------.dta obs | 8 vars | 5 match vars | mat (key) -------------------+--------------------------------------------------------common vars | corso fac ---------------------+--------------------------------------------------------result file | MASTER.dta obs | 8 vars | 7 (including _merge) ------------+--------------------------------------------------------_merge | 5 obs in both. mmerge mat using SLAVE. missing in master data updated in both. master agrees with using data in both. master agrees with using data in both. master agrees with using data in both. clist mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 E01 S07 L12 L08 S33 E07 G02 fac M E S L L S E G disab 1 0 0 0 0 1 0 0 partime PT _merge in both. use MASTER. master agrees with using data (code==3) | 1 obs in both. missing in master data updated (code==4) | 2 obs in both. master agrees with using data in both. 6. master agrees with using data in both. 7. mmerge mat using SLAVE.dta Nicola Tommasi 121 . clear . master disagrees with using data in both. 8. use MASTER. update replace ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER. Aggiungere variabili 10. drop _merge . master disagrees with using data PT PT Opzione uname(stub) . ukeep(corso fac disab) uname(chk_) ------------------------------------------------------------------------------merge specs | matching type | auto mv´s on match vars | none unmatched obs from | both ---------------------+--------------------------------------------------------master file | MASTER. master agrees with using data in both. mmerge mat using SLAVE. clear . missing in master data updated in both. master agrees with using data in both. L12 L08 S33 E07 G08 fac M E S L L S E G disab 1 0 0 0 0 1 0 0 partime PT _merge in both. master agrees with using data in both. master disagrees with using data in both.dta obs | 8 vars | 4 (selection via udrop/ukeep) match vars | mat (key) ---------------------+--------------------------------------------------------result file | MASTER.dta obs | 8 vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE. use MASTER.10.dta obs | 8 vars | 7 (including _merge) ------------+--------------------------------------------------------_merge | 5 obs in both. master agrees with using data in both.dta obs | 8 vars | 8 (including _merge) ------------+--------------------------------------------------------_merge | 8 obs both in master and using data (code==3) ------------------------------------------------------------------------------. clist mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 E01 . Trasformare Dataset obs | 8 vars | 3 match vars | mat (key) -------------------+--------------------------------------------------------using file | SLAVE.dta obs | 8 vars | 5 match vars | mat (key) -------------------+--------------------------------------------------------common vars | corso fac ---------------------+--------------------------------------------------------result file | MASTER. master agrees with using data (code==3) | 1 obs in both. clist 122 Nicola Tommasi . master agrees with using data in both.2. master disagrees with using data (code==5) ------------------------------------------------------------------------------. missing in master data updated (code==4) | 2 obs in both. . È il caso per esempio di un dataset con informazioni sugli individui che viene collassato in un dataset che contenga informazioni aggregate per singola famiglia di appartenenza. 3... 4. Il comando da usare è: collapse clist if in weight . Trasformare Dataset mat VR0001 VR0002 VR0003 VR0004 VR0005 VR0006 VR0007 VR0008 corso M50 S07 L12 L08 S33 E07 G02 fac M E S L L S E G chk_corso M50 E01 . e solo indirettamente per aggiungere osservazioni. . Nicola Tommasi 123 . options dove in clist si elencano le variabili che verranno collassate con la funzione da applicare secondo lo schema (stat) varlist o (stat) new_var=varname Le funzioni applicabili in stat sono: mean (opzione di default) sd sum count max min iqr median p1. Se ne deduce che questo tipo di trattamento è applicabile solo a variabili numeriche... 10. list.3. p2. L12 L08 S33 E07 G08 10. 2.3 Collassare un dataset Collassare un dataset vuol dire ridurre il numero delle sue osservazioni. p99 Infine in by vanno le variabili che faranno da variabili chiave per il dataset collassato.p50. trasformando le informazioni contenute nelle righe che si vanno ad eliminare secondo una certa funzione. p98. 7.10. In conclusione il comando mmerge serve essenzialmente per aggiungere variabili. .. le variabili che non vengono specificate in clist o in by verranno cancellate. Collassare un dataset chk_fac M E S L L S E G chk_di~b 1 0 0 0 0 1 0 0 1. 6.. 8. 5. 8 3.7 3.15 | +------------------------------------------------------+ 1.9 2. collapse (count) n_gpa=gpa (mean) gpa (min) mingpa=gpa (max) maxgpa=gpa (mean) meangpa=gpa.9 3.5 34 1 2 | | 2. 11. Quello che cambia è l’organizzazione delle informazioni. Si considerino i seguenti esempi di dataset: wide form: id sex inc80 inc81 ----------------------1 0 5000 5500 2 1 2000 2200 3 0 3000 2000 long form: id year sex inc ---------------------1 80 0 5000 1 81 0 5500 2 80 1 2000 2 81 1 2200 3 80 0 3000 3 81 0 2000 I due dataset sono identici.4. 2. 6.9 35 2 5 | | 3.7 30 3 4 | | 2. contengono le stesse informazioni. 10.1 30 1 4 | | 3.5 2. . Trasformare Dataset 1. +------------------------------------------------------+ | year n_gpa gpa mingpa maxgpa meangpa | |------------------------------------------------------| | 1 4 2. list. 7. Innanzitutto si noti che il passaggio da un form all’altro comporta un cambi124 Nicola Tommasi . In Stata esiste un comando per trasformare un dataset in wide form in un dataset in long form e viceversa.066667 | | 3 3 3.8 28 1 9 | | 2.4 reshape di un dataset Prima di spiegare il reshape.3 33 3 3 | |----------------------------| | 3. 10.066667 2. 5.2 3. occorre introdurre il concetto di wide form e di long form.9 | | 2 3 3.4 3. 2.2 30 1 3 | | 3. reshape di un dataset +----------------------------+ | gpa hour year number | |----------------------------| | 3.2 35 3 2 | | 3.5 30 2 4 | | 2. 4. 8.10. . 9.15 2.4 32 4 5 | | 2. 3. 3.1 3.8 29 2 3 | |----------------------------| | 2.9 31 4 2 | +----------------------------+ 10.066667 | | 4 2 3. 4. by(year).5 3. 12.066667 2. nel passaggio da long a wide viene eliminata e che andrà ad aggiungersi alle nuove variabili del gruppo Xij . reshape di un dataset amento delle variabili chiave (id in wide. id e year in long). desc rela* sesso* eta* statociv* titstu* conprof* ateco* posprof* presenza*. simple rela1 sesso11 statociv9 conprof7 posprof5 rela2 sesso12 statociv10 conprof8 posprof6 rela3 eta1 statociv11 conprof9 posprof7 rela4 eta2 statociv12 conprof10 posprof8 rela5 eta3 titstu1 conprof11 posprof9 rela6 eta4 titstu2 conprof12 posprof10 rela7 eta5 titstu3 ateco1 posprof11 rela8 eta6 titstu4 ateco2 posprof12 Nicola Tommasi 125 . le rimanenti variabili che non rientrano in nessuno dei precedenti gruppi e che rimangono costanti sia per i che per j La sintassi per il passaggio nelle due forme è: per passare da wide a long reshape long stubnames@. ovvero le variabili che costituiscono le variabili chiave in entrambi i formati (nel nostro esempio id) b. ovvero la variabile che: . Trasformare Dataset 10. il passaggio da long a wide la diminuzione del numero di osservazione e l’incremento del numero di variabili. i(varlist) j(varname) per passare da long a wide reshape wide stubnames. elemento i: variabile (o variabili) che denotano l’identificativo principale delle osservazioni. Nel caso non si volessero trasformare alcune variabili è bene cancellarle (drop) prima del reshape.nel passaggio da wide a long viene creata per comporre il gruppo delle nuove variabili chiave . nel nostro esempio year c. i(varlist) j(varname) in stubnames vanno le variabili dell’elemento Xij Nel nostro esempio sarà: reshape long
[email protected]. Esempio di reshape long . pena un messaggio di errore.j. elemento Xij : variabili il cui valore cambia per ciascun elemento i. Il tutto viene documentato dall’output del comando. elemento j: variabile che indica l’identificativo secondario delle osservazioni. i(id) j(year) reshape wide inc. Si tenga presente che tutte le variabili che apparterebbero al gruppo Xij vanno indicate. i(id) j(year) In conclusione il passaggio da wide a long. ha come effetto l’incremento del numero di osservazioni e la diminuzione del numero di variabili.4. Per applicare il comando dobbiamo definire tre elementi: a. 10.4. reshape di un dataset rela9 rela10 rela11 rela12 sesso1 sesso2 sesso3 sesso4 sesso5 sesso6 sesso7 sesso8 sesso9 sesso10 . clist eta7 eta8 eta9 eta10 eta11 eta12 statociv1 statociv2 statociv3 statociv4 statociv5 statociv6 statociv7 statociv8 titstu5 titstu6 titstu7 titstu8 titstu9 titstu10 titstu11 titstu12 conprof1 conprof2 conprof3 conprof4 conprof5 conprof6 ateco3 ateco4 ateco5 ateco6 ateco7 ateco8 ateco9 ateco10 ateco11 ateco12 posprof1 posprof2 posprof3 posprof4 10. Trasformare Dataset presenza1 presenza2 presenza3 presenza4 presenza5 presenza6 presenza7 presenza8 presenza9 presenza10 presenza11 presenza12 ID rela1 sesso1 eta1 rela2 sesso2 rela3 sesso3 in 1/10 ID 5546 4530 6419 23864 5622 8877 3867 16369 10748 17607 rela1 1 1 1 1 1 1 1 1 1 1 sesso1 2 1 1 1 1 1 1 1 1 1 eta1 62 71 51 69 62 42 70 40 64 40 rela2 . 2 2 5 5 2 2 2 2 2 sesso2 . 2 2 2 2 2 2 2 2 2 rela3 . 3 3 . . 3 . 3 . 3 sesso3 . 2 2 . . 2 . 2 . 2 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. . reshape long rela@ sesso@ eta@ statociv@ titstu@ conprof@ ateco@ posprof@ pres > enza@, i(ID) j(pers_id) (note: j = 1 2 3 4 5 6 7 8 9 10 11 12) Data wide -> long ----------------------------------------------------------------------------Number of obs. 10 -> 120 Number of variables 117 -> 19 j variable (12 values) -> pers_id xij variables: rela1 rela2 ... rela12 -> rela sesso1 sesso2 ... sesso12 -> sesso eta1 eta2 ... eta12 -> eta statociv1 statociv2 ... statociv12 -> statociv titstu1 titstu2 ... titstu12 -> titstu conprof1 conprof2 ... conprof12 -> conprof ateco1 ateco2 ... ateco12 -> ateco posprof1 posprof2 ... posprof12 -> posprof presenza1 presenza2 ... presenza12 -> presenza ----------------------------------------------------------------------------. drop if rela==. & sesso==. (93 observations deleted) . clist ID pers_id rela sesso rela eta in 1/20 ID 3867 3867 4530 4530 4530 5546 5622 5622 6419 pers_id 1 2 1 2 3 1 1 2 1 rela 1 2 1 2 3 1 1 5 1 sesso 1 2 1 2 2 2 1 2 1 rela 1 2 1 2 3 1 1 5 1 eta 70 72 71 69 35 62 62 76 51 1. 2. 3. 4. 5. 6. 7. 8. 9. 126 Nicola Tommasi 10. Trasformare Dataset 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 6419 6419 6419 8877 8877 8877 10748 10748 16369 16369 16369 2 3 4 1 2 3 1 2 1 2 3 2 3 4 1 2 3 1 2 1 2 3 2 2 2 1 2 2 1 2 1 2 2 2 3 4 1 2 3 1 2 1 2 3 10.4. reshape di un dataset 49 29 85 42 37 15 64 64 40 33 12 Esempio di reshape wide . clist nquest nord ireg anasc sesso eta staciv nquest 34 34 34 34 173 173 173 173 375 375 nord 1 2 3 4 1 2 3 4 1 2 ireg 8 8 8 8 18 18 18 18 16 16 anasc 1943 1944 1971 1973 1948 1950 1975 1978 1925 1926 sesso 1 2 1 1 1 2 1 1 2 1 eta 59 58 31 29 54 52 27 24 77 76 staciv 1 1 2 2 1 1 2 2 4 1 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. . reshape wide ireg anasc sesso eta , i(nquest) j(nord) (note: j = 1 2 3 4) staciv not constant within nquest Type "reshape error" for a listing of the problem observations. r(9); ** Ooops! ho dimenticato staciv. Adesso rimedio. . reshape wide ireg anasc sesso eta staciv, i(nquest) j(nord) (note: j = 1 2 3 4) Data long -> wide ----------------------------------------------------------------------------Number of obs. 10 -> 3 Number of variables 7 -> 21 j variable (4 values) nord -> (dropped) xij variables: ireg -> ireg1 ireg2 ... ireg4 anasc -> anasc1 anasc2 ... anasc4 sesso -> sesso1 sesso2 ... sesso4 eta -> eta1 eta2 ... eta4 staciv -> staciv1 staciv2 ... staciv4 ----------------------------------------------------------------------------. clist nquest anasc1 anasc2 anasc3 anasc4 nquest 34 173 375 anasc1 1943 1948 1925 anasc2 1944 1950 1926 anasc3 1971 1975 . anasc4 1973 1978 . 1. 2. 3. Nicola Tommasi 127 10.5. Contrarre un dataset 10. Trasformare Dataset 10.5 Contrarre un dataset La contrazione consiste nella sostituzione del dataset corrente con un nuovo dataset costituito da tutte le possibili combinazioni tra un gruppo di variabili a cui è possibile aggiungere anche nuove variabili con le frequenze e le percentuali di ciascuna combinazione. Per spiegare il fenomeno ricorriamo ad un piccolo esempio. Abbiamo un dataset che tra le altre variabili contiene le variabili dummy higher_edu_M_l e higher_edu_F_l dove il valore 1 significa che il soggetto è laureato, 0 non laureato: . tab1 higher_edu_M_l higher_edu_F_l, miss -> tabulation of higher_edu_M_l (mean) | higher_edu_ | M_l | Freq. Percent Cum. ------------+----------------------------------0 | 4,310 88.59 88.59 1 | 500 10.28 98.87 . | 55 1.13 100.00 ------------+----------------------------------Total | 4,865 100.00 -> tabulation of higher_edu_F_l (mean) | higher_edu_ | F_l | Freq. Percent Cum. ------------+----------------------------------0 | 4,387 90.17 90.17 1 | 443 9.11 99.28 . | 35 0.72 100.00 ------------+----------------------------------Total | 4,865 100.00 e questa è la frequenza combinata delle due variabili: . tab higher_edu_M_l higher_edu_F_l, miss (mean) | higher_edu | (mean) higher_edu_F_l _M_l | 0 1 . | Total -----------+---------------------------------+---------0 | 4,082 209 19 | 4,310 1 | 269 229 2 | 500 . | 36 5 14 | 55 -----------+---------------------------------+---------Total | 4,387 443 35 | 4,865 Quello che si vuole ottenere è un nuovo dataset che in questo caso sarà costituito da 9 osservazioni, ovvero da tutte le possibili combinazioni delle due variabili. Questo è possibile tramite il comando contract varlist if in weight , options dove le possibili options sono: freq(newvar) nome della variabile che contiene le frequenze della combinazione. Il nome di default è _freq 128 Nicola Tommasi 10. Trasformare Dataset 10.5. Contrarre un dataset cfreq(newvar) nome della variabile che contiene le frequenze cumulate della combinazione percent(newvar) nome della variabile che contiene le percentuali della combinazione cpercent(newvar) nome della variabile che contiene le percentuali cumulate della combinazione float fa in modo che le variabili delle percentuali siano in formato float format(format) formato di visualizzazione per le variabili delle percentuali: di default è format(%8.2f) zero include anche le combinazioni con frequenza zero nomiss cancella le osservazioni con valori missing Applichiamo il comando al nostro piccolo esempio . contract higher_edu_M_l higher_edu_F_l, freq(_freq) cfreq(_cfreq) percent(_perc) cpercent(_cperc); . clist; highe~M_l 0 0 0 1 1 1 . . . highe~F_l 0 1 . 0 1 . 0 1 . _freq 4082 209 19 269 229 2 36 5 14 _cfreq 4082 4291 4310 4579 4808 4810 4846 4851 4865 _perc 83.91 4.30 0.39 5.53 4.71 0.04 0.74 0.10 0.29 _cperc 83.91 88.20 88.59 94.12 98.83 98.87 99.61 99.71 100.00 1. 2. 3. 4. 5. 6. 7. 8. 9. oppure volendo escludere le osservazioni missing otterremo un dataset con 4 osservazioni . tab higher_edu_M_l higher_edu_F_l; (mean) | higher_edu | (mean) higher_edu_F_l _M_l | 0 1 | Total -----------+----------------------+---------0 | 4,082 209 | 4,291 1 | 269 229 | 498 -----------+----------------------+---------Total | 4,351 438 | 4,789 . contract higher_edu_M_l higher_edu_F_l, freq(_freq) cfreq(_cfreq) percent(_perc) cpercent(_cperc) nomiss; . clist; highe~M_l 0 0 1 1 highe~F_l 0 1 0 1 _freq 4082 209 269 229 _cfreq 4082 4291 4560 4789 _perc 85.24 4.36 5.62 4.78 _cperc 85.24 89.60 95.22 100.00 1. 2. 3. 4. Per un’applicazione pratica di contract vi rimando al capitolo 18 a pagina 175. Nicola Tommasi 129 format data_in data_out %td . clist data_in data_out in 1 data_in 1. desc data_in data_out storage display value variable name type format label variable label ------------------------------------------------------------------------------data_in long %dD_m_Y data_out long %dD_m_Y . 01 Jan 06 data_out 22 Feb 06 .Capitolo 11 Lavorare con Date e Orari 11. clist data_in data_out in 1 data_in 1January06 data_out 22February06 1. clist data_in data_out in 1 data_in 1. Prendiamo ad esempio le seguenti visualizzazioni di una data: . clist data_in data_out in 1 data_in 1. . format data_in data_out %tdddMonthYY . format data_in data_out %tdDD/NN/CCYY . 01/01/2006 data_out 22/02/2006 131 . 01jan2006 data_out 22feb2006 .1 La teoria Vi siete mai chiesti come vengono trattate le date e gli orari dai software? Ebbene bisogna scindere ciò che viene rappresentato a video da quello che il programma elabora. La stessa logica si applica ai dati rigurdanti le ore. 0 secondi e 0 millisecondi del 1 gennaio 1960. A seconda del formato che associamo al dato avremo le seguenti interpretazioni: Formato Rappresenta %tc orario Valore -1 31 Dicembre 1959 23:59:59:999 31 Dicembre 1959 23:59:59:999 31 Dicembre 1959 1959 settimana 52 1959 dicembre Valore 0 1 Gennaio 1960 00:00:00:000 1 Gennaio 1960 00:00:00:000 1 Gennaio 1960 1960 settimana 1 1960 gennaio Valore 1 1 Gennaio 1960 00:00:00:001 1 Gennaio 1960 00:00:00:001 1 Gennaio 1960 1960 settimana 2 1960 febbraio %tC orario %td giorni %tw settimane %tm mesi 132 Nicola Tommasi . 16854 16854 Infatti il meccanismo si basa sull’assegnazione alla data del 01/01/1960 del valore 0. al 02/01/1960 del valore 1 e così via. 16802 16802 data_out | 1 16854 . Min Max -------------+-------------------------------------------------------data_in | 1 16802 . Per i calcoli si considerino le seguenti equivalenze: 1 1 1 1 secondo = 1000ms minuto = 60sec × 1000ms = 60000ms ora = 60min × 60sec × 1000ms = 3600000ms giorno = 24h × 60min × 60sec × 1000ms = 86400000ms E per date e ore antecedenti il primo gennaio 1960? Ovviamente si ricorre a numeri interi negativi! In Stata sono possibili diversi sistemi di misura e a partire dalla versione 10 è stata introdotta anche la possibilità di usare la misura basata sulle ore.1. Quindi il calcolo dei giorni tra due date si riduce ad una differenza tra due numeri interi. Lavorare con Date e Orari Come vedete ci sono diverse visualizzazioni della stessa informazione che in realtà è un numero intero: .11. 0 minuti. La teoria 11. summ data_in data_out in 1 Variable | Obs Mean Std. In questo caso si ragiona in termine di millisecondi (ms) a partire dalle ore 0. Dev. gen double var3 = var1 . format var5 %tw . 8.11. 5. gen var4 = var1 . format var2 %tc . La teoria %tq quadrimestri 1959 quarto quadrimestre 1959 secondo semestre 1 ac -1 1960 primo quadrimestre 1960 primo semestre 0 0 1960 secondo quadrimestre 1960 secondo semestre 1 dc 1 %th semestri %ty %tg anni generico Vediamo adesso a cosa corripondono i valori di var1 in formato %tc e %tC: . 6. 31dec1959 01jan1960 01jan1960 01jan1960 01jan1960 01jan1960 02jan1960 03mar1963 31dec1959 01jan1960 01jan1960 01jan1960 01jan1960 01jan1960 02jan1960 03mar1963 A questo punto spieghiamo la differenza tra %tc e %tC. format var4 %td . gen double var2 = var1 . 3. Lavorare con Date e Orari 11. Per completare il quadro vediamo i valori dei rimanenti %t per diversi valori di var1: . 7. gen var5 = var1 . gen var5 = var1 . format var3 %tC . 2. format var6 %tm Nicola Tommasi 133 . Invece %tc si basa sull’orologio atomico (standard UTC). clist var1 -100000 0 100 1000 10000 100000 100000000 100000000000 var2 23:58:20 00:00:00 00:00:00 00:00:01 00:00:10 00:01:40 03:46:40 09:46:40 var3 23:58:20 00:00:00 00:00:00 00:00:01 00:00:10 00:01:40 03:46:40 09:46:40 1. 4.1. Le due configurazioni sono uguali eccetto per il fatto che %tC tiene conto anche dei secondi inseriti in seguito a correzioni astronomiche per la sincronizzazione con la rotazione della terra (standard GMT). gen var6 = var1 . february. Partiamo dalla seguente lista di codici: Codice CC cc YY yy JJJ jjj Mon Month mon month Rappresenta secolo .. format var8 %th . format var10 %tg . Feb. December jan. Lavorare con Date e Orari 31dec1959 01jan1960 01jan1960 01jan1960 01jan1960 01jan1960 02jan1960 03mar1963 31dec1959 01jan1960 01jan1960 01jan1960 01jan1960 01jan1960 02jan1960 03mar1963 var3 23:58:20 00:00:00 00:00:00 00:00:01 00:00:10 00:01:40 03:46:40 09:46:40 var4 22dec1959 01jan1960 11jan1960 10apr1960 19jul1960 15may1961 11mar1962 27sep1962 var5 1959w43 1960w1 1960w11 1961w49 1963w45 1969w33 1975w21 1979w13 . gen var7 = var1 . format var7 %tq ...... Visualizzazione delle date e delle ore . gen var9 = var1 . clist var1-var5..2.2 Visualizzazione delle date e delle ore Le possibilità di visualizzazione sono ampie e si basano sul concatenamento di diversi codici.. noobs var1 -10 0 10 100 200 500 800 1000 var6 1959m3 1960m1 1960m11 1968m5 1976m9 2001m9 2026m9 2043m5 var7 1957q3 1960q1 1962q3 1985q1 2010q1 2085q1 2160q1 2210q1 var8 1955h1 1960h1 1965h1 2010h1 2060h1 2210h1 2360h1 2460h1 var9 -10 0 10 0100 0200 0500 0800 1000 var10 -10 0 10 100 200 500 800 1000 11.1 secolo -1 anno a due cifre anno a due cifre giorno dell’anno giorno dell’anno mese mese mese mese 134 Visualizza 01-99 1-99 00-99 0-99 001-366 1-366 Jan. feb.. format var9 %ty . February..11... gen var10 = var1 . dec january. clist var1 var6-var10.. december Nicola Tommasi .... Dec January. gen var8 = var1 . noobs var1 -10 0 10 100 200 500 800 1000 var2 23:58:20 00:00:00 00:00:00 00:00:01 00:00:10 00:01:40 03:46:40 09:46:40 11. ... o P.. mo. Monday. Monday.M. mon. visualizza un punto visualizza una virgola visualizza i due punti visualizza un trattino visualizza uno spazio visualizza la barra inclinata a dx visualizza la barra inclinata a sx visualizza il carattere c separatore della sintassi1 Serve solo a separare i vari codici affinché siano più leggibili.0-.. : _ / \ !tc + 11.000-. Su.. visualizza AM o PM visualizza A.M. .. (allineato?) Sunday. o p.. AM A. .2.m.99 . .00-. ma non ha nessun effetto su quanto visualizzato 1 Nicola Tommasi 135 .. AM o PM A.s .. Mon. su. o P..ss . 1-2 1-4 01-52 1-52 00-23 00-12 0-23 0-12 00-59 0-59 00-60 0-60 .. .999 am o pm a..9 .M.m..11. : / \ c Rappresenta mese mese giorno del mese giorno del mese giorno della settimana giorno della settimana giorno della settimana giorno della settimana giorno della settimana giorno della settimana semestre quadrimestre settimana settimana ora ora ora ora minuti minuti secondi secondi decimi centesimi millesimi visualizza am o pm visualizza a.M. (non allineato?) Sun.sss am a.m. .. o p. Lavorare con Date e Orari Codice NN nn DD dd DAYNAME Dayname Day Da day da h q WW ww HH Hh hH hh MM mm SS ss . sun. Visualizzazione delle date e delle ore Visualizza 01-12 1-12 01-31 1-31 Sunday. .M.m. mo..m. 2. 4.3. 8. Ricavare date da variabili stringa 11. 3. 6. Lavorare con Date e Orari The maximum length of a format specifier is 48 characters.11. 5. 6. list da_nas %tdDD/NN/CCYY da_nas in 1/8. sep(0) 1. 4. +------------+ | data_nas~a | |------------| | 30/05/1982 | | 17/12/1982 | | 22/02/1982 | | 28/08/1981 | | 14/02/1982 | | 22/06/1982 | | 02/07/1982 | | 18/10/1982 | +------------+ da_nas %tdDD-NN-CCYY da_nas in 1/8. list 1. sep(0) 1. 7. desc data_nascita storage display value variable name type format label variable label ------------------------------------------------------------------------------------data_nascita str10 %10s . 2. 7. 3. 8. 11. sep(0) . 3."DMY") . gen double da_nas = date(data_nascita. 2. the example shown above is 34 characters. 5. format . list data_nascita in 1/8. 5. +------------+ | data_nas~a | |------------| | 30/05/1982 | | 17/12/1982 | | 22/02/1982 | | 28/08/1981 | | 14/02/1982 | | 22/06/1982 | | 02/07/1982 | | 18/10/1982 | +------------+ . +------------+ | da_nas | |------------| | 30-05-1982 | | 17-12-1982 | | 22-02-1982 | | 28-08-1981 | | 14-02-1982 | | 22-06-1982 | | 02-07-1982 | | 18-10-1982 | 136 Nicola Tommasi . 7. 8. format .3 Ricavare date da variabili stringa . 4. 6. 11.4. Visualizzazione delle ore 11.4 11. Lavorare con Date e Orari +------------+ 11.5 Visualizzazione delle ore Operazioni con date e ore Nicola Tommasi 137 . . local local local local global global global global A A B B A A B B 2+2 = 2+2 "hello world" = "hello world" 2+2 = 2+2 "hello world" = "hello world" Si vede che è possibile assegnare il contenuto alla macro sia con il segno = che senza. I modi per assegnare un contenuto sono diversi e comunque prevedono l’assegnazione di un nome. La distinzione tra le due è attinente alla programmazione per cui in questa sede le possiamo considerare come equivalenti. di "`B'" 4 139 . Per evitare problemi meglio scegliere nomi diversi da quelli assegnati alle variabili. local B = 2+2 . Vediamo un esempio: . La loro funzione è quella di un contenitore in cui inserire numeri o stringhe da richiamare in un secondo momento. La differenza è sostanziale quando si assegnano valori o espressioni numeriche.1 Macros In Stata esistono due tipi di macros: local e global. di "`A'" 2+2 .Capitolo 12 Macros e Cicli 12. di `A' 4 . local A 2+2 . di `B' 4 . 0000 0.0983748 . che sarà interpretato come operazione algebrica se lo uso direttamente (di `A').2539975 -.278 ------------------------------------------------------------------------------ 140 Nicola Tommasi .0340487 23.27 0.99 44469.1441902 .93 0 600000 inc1995 | 1413 30598.0438402 1. Std.034 -. Err. Con local B = 2+2 invece sarà sempre interpretato come operazione algebrica.49 0. Interval] -------------+---------------------------------------------------------------inc2001 | .7867e+12 1327 2.024027 .023 .53 0. regress inc2002 `list' Number of obs F( 7.69 0 480000 inc1998 | 1400 31550.15 37784. Macros e Cicli Con local A 2+2 sto’ assegnano ad A 2+2.77 40743.1391521 _cons | 3392. summ `list' Variable | Obs Mean Std.0328559 .0452349 -3.66 0 350000 -------------+-------------------------------------------------------inc1996 | 1364 32373. Macros 12.1999035 inc1999 | .1892526 -.le global si richiamano con l'espressione $local_name il simbolo ` si ottiene premendo ALT + 96 sul tastierino numerico Adesso vediamo qualche uso pratico.286 4874.2244e+12 7 3.0074971 inc1997 | .1777e+11 Residual | 5.1000e+09 -----------------------------------------------------------------------------inc2002 | Coef.12 0.222517 inc1996 | -.le local si richiamano con l'espressione `local_name' .000 .7971 20640 Source | SS df MS -------------+-----------------------------Model | 2.67 0 600000 inc1999 | 1393 31891.78 41724.1072529 .8675769 inc2000 | .000 -.226 -.126 -.000 .8007813 .0472282 2.65 0.12.0146023 .282 755.000 1910.0399267 3.7982 0. di "`list' inc2001 inc2000 inc1999 inc1998 inc1997 inc1996 inc1995 . 1320) Prob > F R-squared Adj R-squared Root MSE = = = = = = 1328 745.0765173 inc1995 | .21 0.90 0.03 0 480000 inc2000 | 1476 32833. Stesso discorso vale per le global. È importante essere a conoscenza di questa differenza nel momento in cui si richiamano le macros create perché sono diversi i contenuti di A.81 0 410000 inc1997 | 1369 31438.7339858 . come stringa se lo uso con (di `A'). Dev. Min Max -------------+-------------------------------------------------------inc2001 | 1460 32961.08 36889.0531481 .52 0.82 44145. Per esempio possiamo definire una lista di variabili da utilizzare successivamente in diverse situazioni: local list = "inc2001 inc2000 inc1999 inc1998 inc1997 inc1996 inc1995" .6234e+11 1320 426018392 -------------+-----------------------------Total | 2.4 0 360000 . Vediamo ora come richiamare le macros: .61 0.1942195 inc1998 | -. t P>|t| [95% Conf.0850962 .4408 4.0658633 .1652574 .1.4 40198.0463245 -2.0556251 1. .. II costruzione foreach lname of local lmacname { . Esso serve per assegnare valori numerici scalari e si costruisce così: scalar define scalar_name =exp . Sono possibili le seguenti costruzioni di foreach: I costruzione foreach lname in any_list { . Vediamo però anche come utilizzare un altro oggetto chiamato scalar. I cicli Vedremo tra poco come utilizzare le local all’interno dei cicli e successivamente come usarle per catturare e riutilizzare l’output dei comandi. possiamo utilizzare il suo contenuto in questo tipo di ciclo..2 I cicli I cicli sono delle procedure che permettono di compiere azioni ripetitive in maniera più veloce ed efficiente usando poche righe di codice. } lista di comandi È la costruzione più generale e in any_list possiamo inserire una qualsiasi lista: nomi di variabili. scalar q=3 . Nicola Tommasi 141 .. scalar t=w+q .. Macros e Cicli 12. I metodi di implementazione sono diversi a seconda del contesto in cui si vogliono utilizzare. scalar w=5 . } lista di comandi previa specificazione del contenuto di una local lmacname. di t 8 12. stringhe e numeri.12. Analizziamo adesso il metodo foreach la cui sintassi generale è: foreach lname {in|of listtype} list { commands referring to `lname' } in pratica succederà che di volta in volta tutti gli oggetti specificati in list verranno assegnati a lname e quindi eseguiti in base alla lista di comandi specificata tra le due parentesi graffe (commands referring to `lname')..2. gen `obj'_10 = `obj' / 10 4. Per capire meglio vediamo alcuni esempi..2868169 .. Dev.9990993 Variable | Obs Mean Std.. Min Max -------------+-------------------------------------------------------var1 | 888 ... IV costruzione foreach lname of varlist varlist { . } lista di comandi utilizzeremo questa costruzione solo quando faremo riferimento ad una serie di variabili già esistenti. possiamo utilizzare il suo contenuto in questo tipo di ciclo. Macros e Cicli previa specificazione del contenuto di una global gmacname. } Variable | Obs Mean Std.. Per la prima costruzione: ... Min Max -------------+-------------------------------------------------------var1_10 | 888 .0286817 . summ `obj'_10 5. Min Max 142 Nicola Tommasi . } lista di comandi 12. Dev.12..2. V costruzione foreach lname of newvarlist newvarlist { . foreach obj in var1 var2 var8 var10 { 2.0486854 .4868541 ..0003254 .0999099 Variable | Obs Mean Std. } lista di comandi che consente di sfruttare le proprietà delle numlist di Stata (che vedremo tra poco)... Dev. } lista di comandi costruzione poco usata dove in newvarlist si indica una lista di nuove variabili che verranno create all’interno del ciclo VI costruzione foreach lname of numlist numlist { . I cicli III costruzione foreach lname of global gmacname { .0000325 . summ `obj' 3. Min Max -------------+-------------------------------------------------------var8_10 | 888 . summ `obj' Nicola Tommasi 143 . var8 e infine var10 in questa maniera: primo ciclo (‘obj’ = var1): summ ‘obj’ gen ‘obj’_10 = ‘obj’ / 10 summ ‘obj’_10 summ var1 gen var1_10 = var1 / 10 summ var1_10 secondo ciclo (‘obj’ = var2): summ ‘obj’ summ var2 gen ‘obj’_10 = ‘obj’ / 10 gen var2_10 = var2 / 10 summ ‘obj’_10 summ var2_10 terzo ciclo (‘obj’ = var8): summ ‘obj’ gen ‘obj’_10 = ‘obj’ / 10 summ ‘obj’_10 summ var8 gen var8_10 = var8 / 10 summ var8_10 quarto e ultimo ciclo (‘obj’ = var10): summ ‘obj’ summ var10 gen ‘obj’_10 = ‘obj’ / 10 gen var10_10 = var10 / 10 summ ‘obj’_10 drop var10_10 Vediamo ora un esempio per la seconda costruzione.4839523 .0000549 .9985623 Variable | Obs Mean Std.004523 .0005486 . Min Max -------------+-------------------------------------------------------var2_10 | 888 . Dev.0278381 .0003708 .0291657 .4880482 .003708 .0004523 .2927765 .0999535 quello che accade è che ad ogni ciclo in obj viene sostituita in sequenza var1. Min Max -------------+-------------------------------------------------------var8 | 888 .9995353 Variable | Obs Mean Std. Min Max -------------+-------------------------------------------------------var10 | 888 .2. Min Max -------------+-------------------------------------------------------var10_10 | 888 . var2.0483952 .0999902 Variable | Obs Mean Std.0998562 Variable | Obs Mean Std. Dev.2783813 . Per prima cosa dobbiamo definire la local e poi rifacciamo lo stesso ciclo: local lista = "var1 var2 var8 var10" . I cicli -------------+-------------------------------------------------------var2 | 888 . Dev.0292776 .5048937 .9999023 Variable | Obs Mean Std.2916573 . foreach obj of local lista { 2. Macros e Cicli 12.0504894 .12. Dev.0488048 . Dev. Dev.9990993 Variable | Obs Mean Std.0004523 . Min Max -------------+-------------------------------------------------------var2 | 888 . idem come sopra Anche qui è da notare che la global viene richiamata senza il simbolo $ davanti.0286817 . i cicli possono essere inseriti all’interno di altri cicli): 144 Nicola Tommasi . Dev. I cicli 3.0003254 . vediamo un esempio della sesta..0483952 . Macros e Cicli Si noti che la local all’interno del ciclo foreach viene richiamata SENZA l’uso degli apostrofi.0488048 . Dev...4839523 .0999099 Variable | Obs Mean Std.12.4868541 . Min Max -------------+-------------------------------------------------------var2_10 | 888 . Tralasciando la quinta costruzione.0292776 .2868169 . Dev.4880482 . summ `obj' 3. Min Max -------------+-------------------------------------------------------var8 | 888 . summ `obj'_10 5.9999023 Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------var1_10 | 888 . Dev.0998562 Notare che var10 non viene considerata perchè non rientra in var?.. gen `obj'_10 = `obj' / 10 4. gen `obj'_10 = `obj' / 10 4. global lista = "var1 var2 var8 var10" . foreach obj of global lista { 2. tanto è uguale al precedente 12. } (output omitted ) . Per la terza costruzione definiamo la global .0005486 .0000325 . summ `obj'_10 5.2927765 . Per la quarta costruzione possiamo sfruttare le possibilità offerte da Stata in merito alla selezione delle variabili su cui eseguire i comandi: . gen `obj'_10 = `obj' / 10 4.0291657 .0486854 . annidandola però all’interno di un altro ciclo (ebbene sì. Min Max -------------+-------------------------------------------------------var8_10 | 888 . Min Max -------------+-------------------------------------------------------var1 | 888 .9985623 Variable | Obs Mean Std.2916573 .2. summ `obj'_10 5. } (output omitted ) . summ `obj' 3.0999902 Variable | Obs Mean Std. foreach obj of varlist var? { 2.004523 .0000549 . } Variable | Obs Mean Std. 1366885 .9857593 var11_4 | 888 .2923062 1.2929291 8.13e-13 .24e-18 .1923529 .10e-08 . Min Max -------------+-------------------------------------------------------var11_2 | 888 .3323266 .3057852 9.9717214 Variable | Obs Mean Std.9987798 var12_3 | 888 .60e-15 .56e-10 . Macros e Cicli .1528551 .229854 3.2533452 1.9990708 var10_3 | 888 . Dev.9963439 In pratica per ciascuna variabile il cui nome inizia var1# viene costruita una variabile con la sua trasformazione al quadrato.9981424 var10_6 | 888 .0000137 . Min Max -------------+-------------------------------------------------------var12_2 | 888 .2492659 7. Min Max -------------+-------------------------------------------------------var10_2 | 888 .9981703 var12_4 | 888 . I cicli Variable | Obs Mean Std.286364 . al cubo.224473 2. Dev.19e-12 . } 5.1938413 . } 12.9904835 var11_3 | 888 .2705386 5.33e-19 .2591221 .02e-07 .2448896 .997561 var12_6 | 888 . Dev. foreach obj of varlist var1? { 2.2770279 8.2443889 .9810576 var11_6 | 888 . gen `obj'_`expo' = `obj'^(`expo') 4.80e-09 .89e-10 . foreach expo of numlist 2/4 6 { 3.2098038 .2602036 2.48e-06 .9986064 var10_4 | 888 .2.2775777 1.341181 .9972148 Variable | Obs Mean Std. summ `obj'_* 6.12. alla quarta e alla sesta. Anche in questo caso esaminiamo la successione delle operazioni: primo loop del ciclo principale (‘obj’ = var10) primo loop del ciclo annidato (‘expo’ = 2) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var10_2 = var10^(2) secondo loop ciclo annidato (‘expo’ = 3) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var10_3 = var10^(3) terzo loop ciclo annidato (‘expo’ = 4) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var10_4 = var10^(4) quarto loop ciclo annidato (‘expo’ = 6) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var10_6 = var10^(6) chiusura loop del ciclo annidato summ ‘obj’_* summ var10_* secondo loop del ciclo principale (‘obj’ = var11) primo loop del ciclo annidato (‘expo’ = 2) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var11_2 = var11^(2) Nicola Tommasi 145 .3293853 .1330797 . var2.. var90.#1 #1 (#t ) : #2 : idem come sopra Un esempio: forvalues n = 1(1)90 { replace var`n' = var`n' + alvar`n' } che esegue il replace su sulle 90 variabili var1..12. I cicli 12.2. Macros e Cicli secondo loop ciclo annidato (‘expo’ = 3) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var11_3 = var11^(3) terzo loop ciclo annidato (‘expo’ = 4) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var11_4 = var11^(4) quarto loop ciclo annidato (‘expo’ = 6) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var11_6 = var11^(6) chiusura loop del ciclo annidato summ ‘obj’_* summ var11_* terzo loop del ciclo principale (‘obj’ = var12) primo loop del ciclo annidato (‘expo’ = 2) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var12_2 = var12^(2) secondo loop ciclo annidato (‘expo’ = 3) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var12_3 = var12^(3) terzo loop ciclo annidato (‘expo’ = 4) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var12_4 = var12^(4) quarto loop ciclo annidato (‘expo’ = 6) gen ‘obj’_‘expo’ = ‘obj’^(‘expo’) gen var12_6 = var12^(6) chiusura loop del ciclo annidato summ ‘obj’_* summ var12_* Infine esiste un’altra costruzione da usare però solo con serie numeriche: forvalues lname = range { commands referring to `lname' } dove range può assumere le seguenti configurazioni: #1 (#d )#2 : lname assume valori da #1 a #2 con passo pari a #d #1 /#2 : lname assume valori da #1 a #2 con passo pari a 1 #1 (#t ) to #2 : lname assume valori da #1 a #2 con passo pari a #t ... . 146 Nicola Tommasi . 496 3291 15906 .974268789 2949. Dev.Capitolo 13 Catturare Informazioni dagli Output Ogni volta che eseguite un comando.653434 4.256756756757 8699525. return list scalars: r(N) r(sum_w) r(mean) r(Var) r(sd) r(min) r(max) r(sum) . Variance Skewness Kurtosis 6165. Il comando per vedere l’elenco dei risultati salvati è return list: . Min Max -------------+-------------------------------------------------------price | 74 6165.257 2949. Dev.5 6342 11385 13466 15906 Largest 13466 13594 14500 15906 Mean Std.495884768919 3291 15906 456229 147 . summ price.819188 = = = = = = = = 74 74 6165. detail Price ------------------------------------------------------------Percentiles Smallest 1% 3291 3291 5% 3748 3299 10% 3895 3667 Obs 74 25% 4195 3748 Sum of Wgt. Stata salva parte dell’output del comando e altri valori che vengono calcolati durante l’esecuzione in particolari local che possono essere richiamate ed utilizzate.257 2949. summ price Variable | Obs Mean Std.496 8699526 1. 74 50% 75% 90% 95% 99% 5006. 256756756757 8699525.4493099 .48927 -0.01325 75. return list scalars: r(N) r(sum_w) r(mean) r(Var) r(sd) r(skewness) r(kurtosis) r(sum) r(min) r(max) r(p1) r(p5) r(p10) r(p25) r(p50) r(p75) r(p90) r(p95) r(p99) = = = = = = = = = = = = = = = = = = = 74 74 6165. ereturn list scalars: e(N) e(df_m) e(df_r) e(F) e(r2) e(rmse) e(mss) e(rss) e(r2_a) e(ll) e(ll_0) macros: e(cmdline) e(title) e(vce) e(depvar) : : : : "regress price mpg rep78 weight length foreign" "Linear regression" "ols" "price" = = = = = = = = = = = 69 5 63 15.34 0. 63) Prob > F R-squared Adj R-squared Root MSE = = = = = = 69 15.03725 5.6398259855126 -647.653433511704859 4.5579 0.90 0. t P>|t| [95% Conf.819187528464004 456229 3291 15906 3291 3748 3895 4195 5006.379 4929.006738 1.49588476892 1.5 6342 11385 13466 15906 Invece nel caso di una regressione si deve usare ereturn list: .77 0.5228 2011.005 -171.899719996595 321789308.278 -4875. regress price mpg rep78 weight length foreign Source | SS df MS -------------+-----------------------------Model | 321789308 5 64357861.97426879 2949.000 3.93396 8.732 -176.5921 4. Err.4202555 255007650.22 Number of obs F( 5.6208 881.8997005734978 .94 0.7986144493904 148 Nicola Tommasi .000 1677.56 -----------------------------------------------------------------------------.684 16668.213 813.48 -------------+-----------------------------Total | 576796959 68 8482308.6587 -32.0000 0.09 0.534 1.2199 34.5578900919500578 2011.74826 -2.78102 foreign | 3303.446 -392.84 rep78 | 244.4691 weight | 6.079516 length | -102.79 0.06 0. Catturare Informazioni dagli Output .5228020040095862 -619.047 _cons | 5896.787 0.13.8665 124.7 Residual | 255007650 63 4047740.438 5390. Interval] -------------+---------------------------------------------------------------mpg | -26.4242 318. Std.9 -----------------------------------------------------------------------------price | Coef. 4603429 Oppure se voglio salvare in una local la sommatoria di una variabile .2348927 . summ var1 Variable | Obs Mean Std. tutti gli r() sono dei risultati che possiamo richiamare all’interno dei comandi o che possiamo salvare in local.4676347 .0057233 .0369273088872433 . summ var1 Variable | Obs Mean Std. Infatti bisogna tener presente che i valori salvati in r() cambiano dopo l’esecuzione del comando e contengono solo quelli relativi all’ultimo comando eseguito. Dev.0369273 . Dev. Se per esempio voglio costruire una variabile (var3) che sia la moltiplicazione di una variabile (var2) per la media di un’altra (var1).284962332788415 . return list scalars: r(N) r(sum_w) r(mean) r(Var) r(sd) r(min) r(max) r(sum) = = = = = = = = 88 88 . Min Max -------------+-------------------------------------------------------var3 | 88 .0812035311082154 . Min Max -------------+-------------------------------------------------------var1 | 88 .4676347 . Min Max -------------+-------------------------------------------------------var2 | 88 .0026764 .9844069 .4676347244530916 . Dev. gen var3 = var2 * r(mean) . summ var2 Variable | Obs Mean Std. Catturare Informazioni dagli Output e(cmd) e(properties) e(predict) e(model) e(estat_cmd) matrices: e(b) : e(V) : functions: e(sample) 1 x 6 6 x 6 : : : : : "regress" "b V" "regres_p" "ols" "regress_estat" Ritornando al primo esempio.15185575187206 . summ var3 Variable | Obs Mean Std.0369273 .9763668 . return list Nicola Tommasi 149 .2882645 .13. Min Max -------------+-------------------------------------------------------var1 | 88 . Dev.2849623 .5022995 .9763667583465576 41. dovrò fare: .9763668 .2849623 .1348025 . 151856 150 Nicola Tommasi . di `sommatoria_var1' 41.9763667583465576 41.4676347244530916 .0812035311082154 .284962332788415 .0369273088872433 . Catturare Informazioni dagli Output scalars: r(N) r(sum_w) r(mean) r(Var) r(sd) r(min) r(max) r(sum) = = = = = = = = 88 88 .15185575187206 .13. local sommatoria_var1 = r(sum) . coordinates(filename) è il nome del nuovo dataset di Stata che conterrà le informazioni dello .shp database(filename) è il nome del nuovo dataset di Stata che conterrà le informazioni del .dbf file.shp file ovvero le coordinate per disegnare i confini degli oggetti da rappresentare. Il comando per convertire questo tipo di dati è mif2dta rootname. Per poterli utilizzare con spmap occorre convertirli in database di Stata.mid che contiene i dati riferiti alle aree geografiche. database(filename) coordinates(filename) replace genid(newvarname) gencentroids(stub) dove: shpfilename è il file con estensione . Per prima cosa bisogna procurarsi i dati geografici che in genere vi verranno forniti in uno dei due formati che sono standard di fatto: shape file e MapInfo Interchange Format. I valori assunti da questa variabile corrispondono a quelli della variabile _ID presente nel file coordinates(filename). replace sovrascrive i file specificati in database(filename) e in coordinates(filename). Gli shape file vengono convertiti attraverso il comando shp2dta using shpfilename .Capitolo 14 Mappe Ora anche in Stata è possibile rappresentare i dati su base geografica (georeferenziazione) grazie all’ottimo lavoro di Maurizio Pisati tramite il comando spmap.mif che contiene le coordinate dei poligoni da disegnare e l’altro con estensione . genid(newvarname) gencentroids(stub) 151 . gencentroids(stub) genera le variabili x_stub e y_stub in database(filename) che contengono le coordinate dei centroidi delle aree geografiche. I files MapInfo sono solitamente due con lo stesso nome ma uno con estensione . genid(newvarname) specifica il nome di una nuova variabile in database(filename) che sarà un identificativo delle diverse aree geografiche. dta. shp2dta using `PR'_comuni. id(_ID) fcolor(Blues2) clnumber(98) ocolor(white . use `PR'. replace y_c=y_c .mid genid(newvarname) specifica il nome di una nuova variabile che sarà un identificativo delle diverse aree geografiche.png.dta.png not found) (file map_pre. (1 real change made) .5) ) > legenda(off) title("`sch'". local PR "vr". (note: file map_pre.8)). replace y_c=y_c + 1100 if cod_com==30. adesso la serie di correzioni delle coordinate e il relativo risultato . . Questa operazione non è difficile dato che si basano su coordinate cartesiane. . replace. (1 real change made) . Bene! Ora abbiamo i files in formato Stata e pronti ad essere utilizzati con il comando spmap per la rappresentazione geografica. (1 real change made) . spmap sup using "`PR'_coord". 193) assieme ad alcuni esempi grafici.400 if cod_com==36. Il comando genera due database . rename ID _ID. OK.800 if cod_com==30.shp. size(*0. clear.14. .dta e rootnameCoordinates. Ecco un esempio pratico in cui si riportano le iniziali dei comuni della provincia di Verona. Le coordinate dei centroidi non sempre sono corrette nel posizionare gli elementi che si vogliono rappresentare al centro dell’area geografica per cui bisogna correggerli.. prima senza e poi con la correzione delle coordinate dei centroidi. (1 real change made) 152 Nicola Tommasi . gencentroids(stub) genera le variabili x_stub e y_stub in che contengono le coordinate dei centroidi delle aree geografiche. Qui si discuterà di alcuni aspetti inerenti l’utilizzo. . . /*** conversione shape file nel formato voluto da Stata per il comando spmap***/.) > label(label(nom_com_abb) x(x_c) y(y_c) size(1.dta: rootname-Database. graph export map_pre. spmap è veramente ricco di opzioni per cui ho riportato l’help del comando in Appendice (pag. database(`PR') coordinates(`PR'_coord) > replace genid(ID) gencentroids(c). . Mappe dove: rootname è il nome comune dei due files . comunque bisogna investirci un po’ di tempo.mif e . .png written in PNG format) e questa è la mappa risultante. replace x_c=x_c . replace x_c=x_c + 1000 if cod_com==36. 14.1: Mappa pre correzione Nicola Tommasi 153 . Mappe Figura 14. Potete apprezzare quanto appena detto nella figura prodotta da questo codice . Posso vedere la serie di tonalità nella local colors . Quando si rappresentano dati continui attraverso una choropleth map usando una delle combinazioni di colori previste dal programma.01). viceversa se il testo è di colore scuro sarà difficilmente leggibile nelle aree più scure. Pediatria | Freq.png.8) length(14)) > legenda(off) note("Da fuori regione `pedia_odpFP'%". local tit : variable label pedia_od.) > label(label(nom_com_abb) x(x_c) y(y_c) size(1. Ovvero se il testo è di colore chiaro sarà difficilmente leggibile nelle aree più chiare.8)). . tab pedia_od. local tit : variable label pedia_od.75).75 (local INTY =0. Come ovviare? Ricorrendo ad un trucchetto che ci consenta di determinare le tonalità più chiara e più scura! Nel codice che segue determino quanti colori diversi mi servono. . (1 real change made) . se c’è del testo da rappresentare ci può essere un problema di visualizzazione. spmap pedia_odp using coord_ulss. id(_ID) fcolor(Blues2) ocolor(black .600 if cod_com==56.png not found) (file map_post. (1 real change made) . Scelgo come colore di base navy (ocal rgb navy) e poi stabilisco che il colore più chiaro sarà di una intesità pari allo 0. mentre quello più scuro di 0.) > clmethod(unique) label(label(pedia_odpstr) x(x_c) y(y_c) size(1.dta.png written in PNG format) Altro problema. replace y_c=y_c + 400 if cod_com==10. replace y_c=y_c . . Mappe (output omitted ) . Questo accade perché il meccanismo di assegnazione dei colori attribuisce la tonalità più chiara ai valori minori e la tonalità più scura ai valori più elevati. 154 Nicola Tommasi . size(*0.1800 if cod_com==38. Percent Cum.. size(*0. graph export graph/ric_tot/pedia_od0. (note: file map_post. id(_ID) fcolor(Blues2) clnumber(98) ocolor(white . Entro questo intervallo determino le tonalità di colore necessarie per coprire gli altri valori attraverso uno passo pari a local step = (`INTY'-`inty') / `ncl'.png. . (1 real change made) .50)).png written in PNG format) le scritte in colore nero nelle aree più scure non si leggono molto bene usando la lista di colori Blues2. replace y_c=y_c . graph export map_post. replace. replace.. replace x_c=x_c + 400 if cod_com==26.5) ) > legenda(off) title("`sch'". Per esempio sulle 22 aree da rappresentare ce ne sono 4 con valore assegnato pari a uno e che quindi avranno colore uguale. spmap sup using "`PR'_coord". (1 real change made) .01 di navy (local inty =0. (file graph/ric_tot/pedia_od0.14. Mappe Figura 14.2: Mappa post correzione Nicola Tommasi 155 .14. 14. Mappe Figura 14.3: Mappa con colori predefiniti 156 Nicola Tommasi . local colors = "`colors'" + "`rgb'*`x' ".55 86. per passare ad un navy*. quindi a un navy*. > > spmap pedia_odp using coord_ulss.64 9 | 1 4.45 1022 | 1 4.55 1 | 4 18.91 526 | 1 4.82 59 | 1 4.25 navy*..55 > navy*.2. . . . size(*0.55 50. Nicola Tommasi 157 .00 ------------+----------------------------------Total | 22 100. local step = (`INTY'-`inty') / `ncl'.55 68.8) length(14)) legenda(off) split note("Da fuori regione `pedia_odpFP'%". ..55 36.09 45. local INTY =0.) clmethod(unique label(label(pedia_odpstr) x(x_c) y(y_c) size(1.0. replace.36 234 | 1 4. . di "`colors'".73 2 | 2 9.82 3 | 1 4.18 10 | 2 9.09 77.73 navy*.09 7 | 1 4. local x = `inty' + `step'*`c'.27 11 | 1 4.01).50)). navy*.19 navy*.01. forvalues c = 0(1)`ncl' .31 navy*.00 .13 navy*.13 e così via.61 navy*. .36 4 | 2 9. . local step = round(`step'.67 navy*.55 63.55 4.37 navy*..49 navy*.14.79 . (file graph/ric_tot/pedia_od1.55 90. local rgb navy.09 31.43 navy*.55 95.75. local inty =0.09 59.55 100. Mappe ------------+----------------------------------0 | 1 4. .png written in PNG format) e questo è il risultato: In particolare le aree con numrosità pari a zero saranno bianche fcolor(white ..0.45 5 | 1 4.00 6 | 2 9.07 navy*.55 81.01. .18 22.01 navy*. local x = round(`x'. id(_ID) fcolor(white `colors') ocolor(black . graph export graph/ric_tot/pedia_od1. local ncl = r(r) .dta.01).png. mentre la successiva parte da un valore navy*. local colors = "".07. . 14. Mappe Figura 14.4: Mappa con colori assegnati 158 Nicola Tommasi . Parte II Casi Applicati 159 . . uno in formato testo e il suo corrispettivo in formato Stata: . Attraverso il comando compress e codificando per quanto possibile le variabili stringa in categoriche si riesce a recuperare ulteriori risorse.. Questo file si compone di 256141 righe (una di intestazione. la soluzione migliore è quella di spezzare il caricamento in n parti selezionando le sole variabili di interesse. Oppure bisogna ricorrere al programma StatTransfer che converte i dati in maniera sequenziale senza problemi di RAM. salvare il file V. caricare la seconda metà delle osservazioni e selezionare le variabili di interesse IV.asc servono circa 1400 MB di RAM. Nel caso in esame abbiamo 2 file di dati.asc 2002. Purtroppo l’opzione varlist del comando insheet non funziona molto bene. unire i due dataset . set mem 740m 161 . le altre di dati) e di 684 variabili. Per caricare invece il file 2002. salvare il file III.2M 8/30/07 8/30/07 5/15/06 5/22/06 14:17 14:17 12:27 18:51 .dta abbiamo un maggior numero di possibilità. . caricare la prima metà delle osservazioni e selezionare le variabili di interesse II.dta Per caricare il file 2002.Capitolo 15 Dataset di Grandi Dimensioni Se la RAM a disposizione sul vostro computer è insufficiente a contenere una dataset di grandi dimensioni.8M 1370. La strategia per bypassare il collo di bottiglia della RAM consiste nello spezzare il file in 2. La prima è: I. 2002. ls <dir> <dir> 770. mantenendo la prima linea di intestazione per entrambi. keep h01 h03 h08 h12 22 May 2006 18:49 . use 2002.909M set memory 740M max.15. RHS vars in models 1. keep h01 h03 h08 h12 22 May 2006 18:49 .254M ----------743.4% of memory free) Sorted by: Note: dataset has changed since last saved La seconda strategia invece consiste nel leggere direttamente tutte le osservazioni per le sole variabili di interesse: 162 Nicola Tommasi .070 vars: 669 size: 718.dta obs: 256.070 vars: 669 size: 718. save tmp1.000M set matsize 400 max. desc. desc. save tmp2.856.856.dta obs: 128. compress h08 was str40 now str33 h12 was str15 now str14 .dta saved . short Contains data from tmp2.4% of memory free) Sorted by: .910 (7.dta saved . replace (note: file tmp2.4% of memory free) Sorted by: . desc. data space 740. append using tmp1 h08 was str33 now str40 h12 was str14 now str15 .140 vars: 4 30 Aug 2007 15:17 size: 35. short Contains data from 2002.910 (7.dta obs: 128.163M .dta not found) file tmp2. replace (note: file tmp1.dta not found) file tmp1.320 (95. use 2002. short Contains data from 2002.347.dta in 1/128070 . Dataset di Grandi Dimensioni Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------set maxvar 5000 max. variables allowed 1.dta in 128071/256140 . 347. clear . use h01 h03 h08 h12 using 2002.163M .dta.dta obs: 256.140 vars: 4 size: 35.320 (95.15. data space 740. RHS vars in models 1.254M ----------743. variables allowed 1. set mem 740m Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------set maxvar 5000 max. desc. short Contains data from 2002.000M set matsize 400 max.909M set memory 740M max.4% of memory free) Sorted by: 22 May 2006 18:49 Nicola Tommasi 163 . Dataset di Grandi Dimensioni . . possiamo ridurle in maniera semplice in una sola.1 Fondere variabili stringa con numeriche Se ci si trova con due variabili che contengono la stessa informazione ma in una espressa in forma numerica e nell’altra espressa come stringa.Capitolo 16 Da Stringa a Numerica 16. Se per esempio abbiamo due variabili con questi possibili valori: cod_reg 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 regione Piemonte Valle d’Aosta Lombardia Trentino-Alto Adige Veneto Friuli-Venezia Giulia Liguria Emilia-Romagna Toscana Umbria Marche Lazio Abruzzo Molise Campania Puglia Basilicata Calabria Sicilia Sardegna 165 . utilizzando l’informazione della variabile stringa per costruire il label define per la variabile numerica. 610 3.76 Basilicata | 26.88 14.66 68.04 53.25 6 | 44.14 Lazio | 76.96 7 | 47.44 13 | 61.610 3.16.472 1.88 70.21 21.806 100.18 39.692 3.14 60.612 14.696 19.18 83.116 3.78 Umbria | 18.478 4.41 Puglia | 52.81 Marche | 49.80 Liguria | 47.24 Sicilia | 78.52 Piemonte | 243.68 55.18 90..116 3.154 4.43 Campania | 111.65 78.692 3.38 Calabria | 82. tab1 regione cod_reg -> tabulation of regione regione | Freq.07 9 | 57.70 48.62 5.584 1. Percent Cum. 20 "Sardegna".238 2.21 56.948 0.356 4.974 3.68 73.92 Valle d´Aosta | 14.10 50.87 166 Nicola Tommasi . Da Stringa a Numerica e vogliamo assegnare come label dei valori di cod_reg la descrizione contenuta nella variabile regione.362 7.60 Trentino-Alto Adige | 68.91 92.80 17.00 ----------------------+----------------------------------Total | 1.74 11 | 49..81 83. oppure installare il comando labutil ssc inst labutil e poi .80 3 | 312. Percent Cum.00 -> tabulation of cod_reg cod_reg | Freq.80 80.882 4.612 14.1.90 4 | 68.618 5.76 72.88 2 | 14.470 2.76 3.90 31.54 86.17 100. ------------+----------------------------------1 | 243. ----------------------+----------------------------------Abruzzo | 61.21 14 | 27.238 2.86 8 | 68.78 12 | 76.10 34.472 1.70 24.59 Sardegna | 76.54 59..356 4.18 73.948 0.08 5 | 117.61 10 | 18.83 Veneto | 117.04 63.23 Emilia-Romagna | 68.302 6.362 7.780 4.462 1.882 4.974 3.44 Friuli-Venezia Giulia | 44.90 51.70 Lombardia | 312.69 16 | 52. fare: label define cod_reg 1 "Piemonte" 2 "Valle d´Aosta" . label values cod_reg cod_reg.06 Toscana | 57.66 28..17 46. possiamo.478 4. Fondere variabili stringa con numeriche 16.696 19.05 10.89 15 | 111. in maniera pedante.636.84 Molise | 27.302 6.584 1.91 15.470 2.14 91. 7% of memory free) Sorted by: Note: dataset has changed since last saved semplice.16.618 5.618 5.07 Toscana | 57.90 Trentino-Alto Adige | 68.472 1. tab cod_reg cod_reg | Freq. short Contains data from ita_82-06. senza perdere nessuna informazione dato che il contenuto della variabile regione è stato trasferito nella label di cod_reg.494.61 Umbria | 18.35 20 | 76.356 4.050 (38.390 vars: 33 4 Jul 2007 13:19 size: 126.392.25 Friuli-Venezia Giulia | 44.780 4.35 Sardegna | 76.08 Veneto | 117.302 6.21 Molise | 27.709. desc.dta obs: 1. short Contains data from ita_82-06.462 1.974 3.90 51.69 Puglia | 52. costruire un label define per venti specificazioni non comporta un eccessivo spreco di Nicola Tommasi 167 .74 Marche | 49.154 4.76 72.00 .81 95. Percent Cum.88 14.21 56.948 0.806 100.86 Emilia-Romagna | 68. drop regione .1.68 73.636.54 59.470 2.49 Calabria | 82.860 (51. Inoltre eliminando la variabile stringa regione abbiamo ridotto il dataset di quasi 36Mb.65 100.00 ------------+----------------------------------Total | 1.462 1.80 Lombardia | 312. veloce e pulito!.62 85.806 100.18 39.05 90. In questo caso il vantaggio nell’utilizzo di labmask è relativo.780 4.10 34.53 Sicilia | 78. values(regione) . desc.696 19.00 .17 46.00 ----------------------+----------------------------------Total | 1.80 80. Fondere variabili stringa con numeriche 17 | 26.44 Abruzzo | 61.709.04 63.62 85.66 68.88 Valle d´Aosta | 14.584 1.612 14.1% of memory free) Sorted by: Note: dataset has changed since last saved .636.05 90.390 vars: 34 4 Jul 2007 13:19 size: 162.154 4.882 4.89 Campania | 111.78 Lazio | 76. ----------------------+----------------------------------Piemonte | 243.53 19 | 78.692 3. Da Stringa a Numerica 16.70 48.478 4.362 7.81 95.dta obs: 1.87 Basilicata | 26.14 60.49 18 | 82.65 100.91 15.18 83.96 Liguria | 47.116 3.610 3.238 2. labmask cod_reg. 16.2. Da stringa a numerica categorica 16. Da Stringa a Numerica tempo, ma pensate se dovete fare la stessa cosa per il label delle provincie italiane (più di cento) o dei comuni italiani che sono più di ottomila!!! (io l’ho fatto e ottomila comuni sono tanti). 16.2 Da stringa a numerica categorica Supponiamo di avere una variabile stringa (basale) che assume le seguenti specificazioni: NO SHUNT <10 >10 SINGLE SPIKES >10 SHOWER O CURTAIN e che vogliamo trasformarla in una variabile numerica categorica con queste assegnazioni: 0 1 2 3 per per per per "NO SHUNT" "<10" ">10 SINGLE SPIKES" ">10 SHOWER O CURTAIN" Invece di ricorrere alla costruzione replace basale="0" if basale=="NO SHUNT"; replace basale="1" if basale=="<10"; replace basale="2" if basale==">10 SINGLE SPIKES"; replace basale="3" if basale==">10 SHOWER O CURTAIN"; destring basale valsalva, replace; label define shunt 0 "no shunt" 1 "<10" 2 ">10 SINGLE SPIKES" 3 ">10 SHOWER O CURTAIN"; label values basale shunt; possiamo fare: label define shunt 0 "no shunt" 1 "<10" 2 ">10 SINGLE SPIKES" 3 ">10 SHOWER O CURTAIN"; encode basale, gen(basale_n) label(shunt); dove in gen() si mette la nuova variabile numerica che verrà creata e i cui valori corrispondono a quelli definiti in label define. Notare che è obbligatorio creare una nuova variabile perché al momento il comando encode non prevede l’opzione replace. 168 Nicola Tommasi Capitolo 17 Liste di Files e Directory Il problema da risolvere è l’acquisizione e la riunione in un unico dataset delle informazioni contenute in un elevato numero di files. In questo caso abbiamo le venti regioni italiane . dir, wide <dir> . <dir> basilicata <dir> emilia_romagna <dir> liguria <dir> molise <dir> sardegna <dir> trentino <dir> veneto <dir> <dir> <dir> <dir> <dir> <dir> <dir> .. calabria friuli lombardia piemonte sicilia umbria <dir> <dir> <dir> <dir> <dir> <dir> <dir> abruzzo campania lazio marche puglia toscana vda All’interno di ciascuna regione abbiamo un cartella per ciascuna provincia di quella regione: . cd abruzzo G:\projects\popolazione\pop_res\com_82-01\abruzzo . dir <dir> <dir> <dir> <dir> <dir> <dir> 7/04/07 7/04/07 7/04/07 7/04/07 7/04/07 7/04/07 10:36 10:36 10:35 10:36 10:36 10:36 . .. chieti laquila pescara teramo All’interno di ciascuna cartella delle provincie, una cartella dati che contiene 2 tipi di dati: - una serie di files con estensione .TXT, con dati in formato testo delimitati da virgola. Per ogni comune della provincia c’è un file che contiene i dati inerenti alle femmine (*_F.TXT) e un file con i dati inerenti i maschi (*_M.TXT). - una serie di files con estensione .csv, con dati in formato testo delimitati da virgola. In questo caso c’è un unico file per ciascun anno dal dal 1992 al 2001 con i dati sia dei maschi che delle femmine. 169 17. Liste di Files e Directory . cd chieti/dati G:\projects\popolazione\pop_res\com_82-01\abruzzo\chieti\dati . dir, wide <dir> . 4.2k 069001_M.TXT 3.8k 069003_F.TXT 3.7k 069004_M.TXT 3.7k 069006_F.TXT 3.5k 069007_M.TXT 3.5k 069009_F.TXT 3.8k 069010_M.TXT 3.6k 069012_F.TXT 3.7k 069013_M.TXT 4.3k 069015_F.TXT 4.2k 069016_M.TXT 4.3k 069018_F.TXT 3.5k 069019_M.TXT 3.7k 069021_F.TXT 5.1k 069022_M.TXT 3.7k 069024_F.TXT 3.5k 069025_M.TXT 4.3k 069027_F.TXT 4.3k 069028_M.TXT 4.0k 069030_F.TXT 3.9k 069031_M.TXT 4.3k 069033_F.TXT 3.5k 069034_M.TXT 3.7k 069036_F.TXT 4.0k 069037_M.TXT 3.5k 069039_F.TXT 4.0k 069040_M.TXT 3.7k 069042_F.TXT 4.3k 069043_M.TXT 3.8k 069045_F.TXT 5.1k 069046_M.TXT 3.5k 069048_F.TXT 3.6k 069049_M.TXT 3.7k 069051_F.TXT 3.5k 069052_M.TXT 3.6k 069054_F.TXT 4.1k 069055_M.TXT 4.3k 069057_F.TXT 5.0k 069058_M.TXT 3.9k 069060_F.TXT 3.8k 069061_M.TXT 3.5k 069063_F.TXT 3.5k 069064_M.TXT 3.8k 069066_F.TXT 3.6k 069067_M.TXT 3.7k 069069_F.TXT 3.6k 069070_M.TXT 4.3k 069072_F.TXT 4.0k 069073_M.TXT 3.9k 069075_F.TXT 4.1k 069076_M.TXT 3.5k 069078_F.TXT 3.7k 069079_M.TXT 4.3k 069081_F.TXT 3.5k 069082_M.TXT 3.7k 069084_F.TXT 4.2k 069085_M.TXT 4.3k 069087_F.TXT 4.0k 069088_M.TXT 4.3k 069090_F.TXT <dir> 4.2k 3.8k 4.3k 3.6k 4.3k 3.5k 3.5k 3.6k 3.7k 4.3k 4.3k 4.3k 4.2k 3.7k 3.5k 3.6k 3.5k 4.3k 3.5k 3.9k 3.7k 4.3k 4.9k 3.7k 3.8k 3.5k 4.3k 3.7k 3.5k 3.8k 3.5k 3.5k 4.3k 3.7k 3.5k 3.6k 4.0k 4.3k 4.3k 3.8k 3.7k 3.5k 3.9k 3.7k 4.2k 3.6k 3.9k 4.3k 4.2k 3.8k 3.5k 3.5k 3.5k 4.3k 4.7k 3.7k 4.3k 4.3k 3.5k 4.3k .. 069002_F.TXT 069003_M.TXT 069005_F.TXT 069006_M.TXT 069008_F.TXT 069009_M.TXT 069011_F.TXT 069012_M.TXT 069014_F.TXT 069015_M.TXT 069017_F.TXT 069018_M.TXT 069020_F.TXT 069021_M.TXT 069023_F.TXT 069024_M.TXT 069026_F.TXT 069027_M.TXT 069029_F.TXT 069030_M.TXT 069032_F.TXT 069033_M.TXT 069035_F.TXT 069036_M.TXT 069038_F.TXT 069039_M.TXT 069041_F.TXT 069042_M.TXT 069044_F.TXT 069045_M.TXT 069047_F.TXT 069048_M.TXT 069050_F.TXT 069051_M.TXT 069053_F.TXT 069054_M.TXT 069056_F.TXT 069057_M.TXT 069059_F.TXT 069060_M.TXT 069062_F.TXT 069063_M.TXT 069065_F.TXT 069066_M.TXT 069068_F.TXT 069069_M.TXT 069071_F.TXT 069072_M.TXT 069074_F.TXT 069075_M.TXT 069077_F.TXT 069078_M.TXT 069080_F.TXT 069081_M.TXT 069083_F.TXT 069084_M.TXT 069086_F.TXT 069087_M.TXT 069089_F.TXT 069090_M.TXT 4.2k 4.2k 3.7k 4.3k 3.5k 4.3k 3.8k 3.5k 3.8k 3.7k 4.2k 4.3k 3.5k 4.2k 5.2k 3.5k 3.5k 3.5k 4.3k 3.5k 4.0k 3.6k 3.5k 4.9k 4.1k 3.8k 4.0k 4.3k 4.3k 3.5k 5.1k 3.5k 3.6k 4.3k 3.5k 3.5k 4.1k 4.0k 5.1k 4.3k 3.8k 3.7k 3.5k 3.9k 3.6k 4.2k 3.6k 3.9k 4.0k 4.2k 4.1k 3.5k 3.8k 3.5k 3.6k 4.7k 4.2k 4.3k 4.1k 3.5k 4.3k 069001_F.TXT 069002_M.TXT 069004_F.TXT 069005_M.TXT 069007_F.TXT 069008_M.TXT 069010_F.TXT 069011_M.TXT 069013_F.TXT 069014_M.TXT 069016_F.TXT 069017_M.TXT 069019_F.TXT 069020_M.TXT 069022_F.TXT 069023_M.TXT 069025_F.TXT 069026_M.TXT 069028_F.TXT 069029_M.TXT 069031_F.TXT 069032_M.TXT 069034_F.TXT 069035_M.TXT 069037_F.TXT 069038_M.TXT 069040_F.TXT 069041_M.TXT 069043_F.TXT 069044_M.TXT 069046_F.TXT 069047_M.TXT 069049_F.TXT 069050_M.TXT 069052_F.TXT 069053_M.TXT 069055_F.TXT 069056_M.TXT 069058_F.TXT 069059_M.TXT 069061_F.TXT 069062_M.TXT 069064_F.TXT 069065_M.TXT 069067_F.TXT 069068_M.TXT 069070_F.TXT 069071_M.TXT 069073_F.TXT 069074_M.TXT 069076_F.TXT 069077_M.TXT 069079_F.TXT 069080_M.TXT 069082_F.TXT 069083_M.TXT 069085_F.TXT 069086_M.TXT 069088_F.TXT 069089_M.TXT 069091_F.TXT 170 Nicola Tommasi 17. Liste di Files e Directory 4.3k 3.8k 4.2k 3.6k 3.5k 5.1k 3.6k 3.9k 3.5k 59.2k 59.2k 59.1k 59.0k 069091_M.TXT 069093_F.TXT 069094_M.TXT 069096_F.TXT 069097_M.TXT 069099_F.TXT 069100_M.TXT 069102_F.TXT 069103_M.TXT ch1992.csv ch1995.csv ch1998.csv ch2001.csv 4.1k 3.8k 4.0k 3.5k 3.9k 5.0k 4.2k 3.8k 3.5k 59.2k 59.2k 59.1k 069092_F.TXT 069093_M.TXT 069095_F.TXT 069096_M.TXT 069098_F.TXT 069099_M.TXT 069101_F.TXT 069102_M.TXT 069104_F.TXT ch1993.csv ch1996.csv ch1999.csv 4.0k 4.2k 3.9k 3.5k 3.9k 3.6k 4.1k 3.5k 3.5k 59.2k 59.2k 59.1k 069092_M.TXT 069094_F.TXT 069095_M.TXT 069097_F.TXT 069098_M.TXT 069100_F.TXT 069101_M.TXT 069103_F.TXT 069104_M.TXT ch1994.csv ch1997.csv ch2000.csv per un totale di 16172 files .TXT e 1030 files .csv. Usare il comando insheet scrivendo il nome di tutti i files .TXT e .csv è la soluzione adottata da chi dispone di molto tempo ed è veloce nella digitazione. Io che non ho il primo e sono scarso nella seconda preferisco agire così. Per prima cosa acquisisco all’interno di una local i nomi di tutti i files in formato .TXT: . local files: dir . files "*.txt" . di `"`files'"' "069001_f.txt" "069001_m.txt" "069002_f.txt" "069002_m.txt" "069003_f.txt" "0690 > 03_m.txt" "069004_f.txt" "069004_m.txt" "069005_f.txt" "069005_m.txt" "069006_ > f.txt" "069006_m.txt" "069007_f.txt" "069007_m.txt" "069008_f.txt" "069008_m.t > xt" "069009_f.txt" "069009_m.txt" "069010_f.txt" "069010_m.txt" "069011_f.txt" > "069011_m.txt" "069012_f.txt" "069012_m.txt" "069013_f.txt" "069013_m.txt" "0 > 69014_f.txt" "069014_m.txt" "069015_f.txt" "069015_m.txt" "069016_f.txt" "0690 > 16_m.txt" "069017_f.txt" "069017_m.txt" "069018_f.txt" "069018_m.txt" "069019_ > f.txt" "069019_m.txt" "069020_f.txt" "069020_m.txt" "069021_f.txt" "069021_m.t > xt" "069022_f.txt" "069022_m.txt" "069023_f.txt" "069023_m.txt" "069024_f.txt" > "069024_m.txt" "069025_f.txt" "069025_m.txt" "069026_f.txt" "069026_m.txt" "0 > 69027_f.txt" "069027_m.txt" "069028_f.txt" "069028_m.txt" "069029_f.txt" "0690 > 29_m.txt" "069030_f.txt" "069030_m.txt" "069031_f.txt" "069031_m.txt" "069032_ > f.txt" "069032_m.txt" "069033_f.txt" "069033_m.txt" "069034_f.txt" "069034_m.t > xt" "069035_f.txt" "069035_m.txt" "069036_f.txt" "069036_m.txt" "069037_f.txt" > "069037_m.txt" "069038_f.txt" "069038_m.txt" "069039_f.txt" "069039_m.txt" "0 > 69040_f.txt" "069040_m.txt" "069041_f.txt" "069041_m.txt" "069042_f.txt" "0690 > 42_m.txt" "069043_f.txt" "069043_m.txt" "069044_f.txt" "069044_m.txt" "069045_ > f.txt" "069045_m.txt" "069046_f.txt" "069046_m.txt" "069047_f.txt" "069047_m.t > xt" "069048_f.txt" "069048_m.txt" "069049_f.txt" "069049_m.txt" "069050_f.txt" > "069050_m.txt" "069051_f.txt" "069051_m.txt" "069052_f.txt" "069052_m.txt" "0 > 69053_f.txt" "069053_m.txt" "069054_f.txt" "069054_m.txt" "069055_f.txt" "0690 > 55_m.txt" "069056_f.txt" "069056_m.txt" "069057_f.txt" "069057_m.txt" "069058_ > f.txt" "069058_m.txt" "069059_f.txt" "069059_m.txt" "069060_f.txt" "069060_m.t > xt" "069061_f.txt" "069061_m.txt" "069062_f.txt" "069062_m.txt" "069063_f.txt" > "069063_m.txt" "069064_f.txt" "069064_m.txt" "069065_f.txt" "069065_m.txt" "0 > 69066_f.txt" "069066_m.txt" "069067_f.txt" "069067_m.txt" "069068_f.txt" "0690 > 68_m.txt" "069069_f.txt" "069069_m.txt" "069070_f.txt" "069070_m.txt" "069071_ > f.txt" "069071_m.txt" "069072_f.txt" "069072_m.txt" "069073_f.txt" "069073_m.t > xt" "069074_f.txt" "069074_m.txt" "069075_f.txt" "069075_m.txt" "069076_f.txt" > "069076_m.txt" "069077_f.txt" "069077_m.txt" "069078_f.txt" "069078_m.txt" "0 > 69079_f.txt" "069079_m.txt" "069080_f.txt" "069080_m.txt" "069081_f.txt" "0690 > 81_m.txt" "069082_f.txt" "069082_m.txt" "069083_f.txt" "069083_m.txt" "069084_ > f.txt" "069084_m.txt" "069085_f.txt" "069085_m.txt" "069086_f.txt" "069086_m.t > xt" "069087_f.txt" "069087_m.txt" "069088_f.txt" "069088_m.txt" "069089_f.txt" > "069089_m.txt" "069090_f.txt" "069090_m.txt" "069091_f.txt" "069091_m.txt" "0 > 69092_f.txt" "069092_m.txt" "069093_f.txt" "069093_m.txt" "069094_f.txt" "0690 > 94_m.txt" "069095_f.txt" "069095_m.txt" "069096_f.txt" "069096_m.txt" "069097_ > f.txt" "069097_m.txt" "069098_f.txt" "069098_m.txt" "069099_f.txt" "069099_m.t Nicola Tommasi 171 17. Liste di Files e Directory > xt" "069100_f.txt" "069100_m.txt" "069101_f.txt" "069101_m.txt" "069102_f.txt" > "069102_m.txt" "069103_f.txt" "069103_m.txt" "069104_f.txt" "069104_m.txt" La costruzione local files: dir . files *.txt rientra nelle funzioni estese delle macro di Stata ([P] macro)1 . A questo punto per poter fare l’append dei dati devo partire con il primo file, salvarlo e poi fare l’append dei successivi file. Per fare ciò, estraggo dalla local che ho chiamato files il suo primo elemento, lo assegno alla local che chiamerò primo e contestualmente lo tolgo dalla local files per non leggere due volte lo stesso file di dati `' . local primo : word 1 of `files' . di "`primo'" 069001_f.txt . local files : list files - primo /* tolgo da `files' il suo primo elemento */ /* primo elemento di `files' */ Anche la costruzione local primo : word 1 of `files' appartiene alle funzioni estese delle macro di Stata. A questo punto leggo i dati del primo file (quello indicato dalla local primo), genero la variabile sex, le assegno valore 2 e lo salvo in un file temporaneo: . insheet using `primo', clear (14 vars, 87 obs) . gen sex=2 . save temp, replace (note: file temp.dta not found) file temp.dta saved Ora posso leggere e fare l’append in sequenza di tutti gli altri file indicati nella local files. Devo però distinguere i files con dati riferiti alle femmine dai files con dati riferiti ai maschi. Come? Se nel nome del file c’è _m saranno dati riferiti a maschi e quindi assegnerò valore uno alla variabile sex, se c'è _f saranno dati riferiti alle femmine e quindi assegnerò valore due alla variabile sex. La costruzione local meccia = strmatch(`f',*_m*) mi permette di distinguere tra le 2 possibilità e quindi di agire di conseguenza sul valore da assegnare alla variabile sex. foreach f in `files' {; insheet using dati/`f', clear; local meccia = strmatch("`f'","*_m*"); if `meccia'==1 {; /* se trova _m nel nome del file */ gen sex=1; /* assegna a sex il valore 1 */ }; else if `meccia'==0 {; /* altrimenti */ gen sex=2; /* assegna a sex il valore 2 */ }; append using temp; save temp, replace; }; 1 Notare la particolare sintassi usata per fare il display della local files!! 172 Nicola Tommasi do in questo modo: foreach regio in `regioni' {. cd `regio'.75696 452. dirs "*".94828 437.17.TXT e . cd . basta sfruttare la funzione dir . Min Max -------------+-------------------------------------------------------v1 | 0 v2 | 18096 69052. `diry' {.58709 449.0427 0 29125 v8 | 18096 41.5 . risolto il problema dei files.csv. Dev.02166 69001 69104 v3 | 0 v4 | 18096 43. di `"`regioni'"'.5657 0 29404 v13 | 18096 42.30836 444.46795 446. dirs "*".5 30. No problem.40616 0 99 v5 | 18096 40. ..66225 450. }. Il file prov..2414 0 29067 v7 | 18096 41.16534 441. Nicola Tommasi 173 .2125 0 29479 v14 | 18096 42.6736 0 29273 -------------+-------------------------------------------------------v11 | 18096 41. di `"`diry'"'.5000138 1 2 Bene. local regioni : dir .7315 0 29183 v9 | 18096 41.089 0 29241 v10 | 18096 41. cd . Liste di Files e Directory .6105 0 29311 v12 | 18096 41. ma vorrei potermi muovere anche tra le venti cartelle delle regioni e tra le cartelle delle provincie sfruttando lo stesso meccanismo. local diry : dir .do. do prov.05449 458.1408 460. do read. summ Variable | Obs Mean Std..5124 0 29005 -------------+-------------------------------------------------------v6 | 18096 41..14943 25.do a sua volta raccoglie l’elenco delle cartelle delle provincie e lancia il file read. }.do.91943 455. "chieti" "laquila" "pescara" "teramo" foreach prv in cd `prv'. "abruzzo" "basilicata" "calabria" "campania" "emilia_romagna" "friuli" "lazio" "liguria" "lombardia" "marche" "molise" "piemonte" "puglia" "sardegna" "sicilia" "toscana" "trentino" "umbria" "vda" "veneto" Adesso facciamo in modo di entrare in ciascuna cartella delle regione e lanciare il file prov. dirs: .1403 0 29603 sex | 18096 1.do che si occupa di leggere i dati dai files . . 3052275 0 1 higher_e~F_l | 4830 .4989591 0 1 du_dip_F | 4859 . 18.2886579 0 1 du_dip_M | 4845 .4828634 0 1 . Vediamo una descrizione delle variabili utilizzate e il risultato della stima probit: .70504 175 .5330315 . Si vuole stimare attraverso un modello probit la probabilità di separazione di un gruppo di coppie in base ad un ridotto numero di variabili esplicative. Per fare ciò ricorreremo al comando contract. a matrici e al comando aggiuntivo prchange implementato da J.19595 log likelihood = -702.4934783 0 1 du_self_M | 4845 . Dev.0917184 .1039501 . ad un ciclo foreach. Scott Long e Jeremy Freese. In realtà le variabili esplicative sarebbero molto più numerose ma in questo esempio utilizziamo solo quelle necessarie per produrre un insieme di probabilità di separazione data da tutte le possibili combinazioni delle variabili esplicative. summ separazione higher_edu_M_l higher_edu_F_l > du_dip_M du_self_M du_nw_F du_dip_F.4407253 0 1 -------------+-------------------------------------------------------du_nw_F | 4859 .0341213 .1 Introduzione Spiego brevemente il contesto e il problema che si vuole risolvere.580805 .2 La stima del modello Come già detto stimiamo un versione ridotta del modello.1815593 0 1 higher_e~M_l | 4810 . probit separazione sons_M_l higher_edu_M_l higher_edu_F_l du_dip_M > du_self_M du_nw_F du_dip_F.Capitolo 18 Previsioni Multiple 18.2637771 . Iteration 0: Iteration 1: log likelihood = -721. Min Max -------------+-------------------------------------------------------separazione | 4865 . Variable | Obs Mean Std.370035 . 0294371 .0638657 du_dip_F | .5448156 higher_e~F_l | -.1) Alla fine devo ottenere un dataset con 4×2×2×2×2×2×2 = 256 osservazioni.18.0706227 higher_e~M_l | . No Working (NW) se du_dip_M==0 & du_self_M==0 2.1692472 .1204811 1. Std.2.84 0.1253214 . Self-Employed (SE) se du_dip_M==0 & du_self_M==1 La combinazione delle dummy du_nw_F e du_dip_F individua questi tre profili occupazionali per la donna: 1.72 0.1.2141355 .3278412 .0939599 du_dip_M | .0943842 .1637689 .1) du_nw_F assume 2 valori (0.003 . Previsioni Multiple Probit regression Log likelihood = -702.155 -.42 0.000 -.79 0.1120967 0.0000 0.213 -.401059 ------------------------------------------------------------------------------ La combinazione delle dummy du_dip_M e du_self_M individua questi tre profili occupazionali per l’uomo: 1.1314967 -1.1491936 -11.36044 18.25 0.2217886 -.35 0.67 0.1189374 -1.96 0. z P>|z| [95% Conf.0184736 .4214978 .876 -.1) du_dip_F assume 2 valori (0.000 -1.0261 -----------------------------------------------------------------------------separazione | Coef.3606 log likelihood = -702. La stima del modello Iteration 2: Iteration 3: log likelihood = -702.1107032 2. Posso ottenere quanto mi prefiggo tramite il comando contract come segue 176 Nicola Tommasi .1) du_self_M assume 2 valori (0.36044 Number of obs LR chi2(7) Prob > chi2 Pseudo R2 = = = = 4789 37.086 -. Employed (E) se du_nw_F==0 & du_dip_F==1 3.4023601 . Dato che • • • • • • • sons_M_l assume 4 valori diversi (0. No Working (NW) se du_nw_F==1 & du_dip_F==0 2. Employed (E) se du_dip_M==1 & du_self_M==0 3.985887 -1.3140898 du_self_M | .693473 .2067016 . Interval] -------------+---------------------------------------------------------------sons_M_l | -. Self-Employed (SE) se du_nw_F==0 & du_dip_F==0 Ora modifichiamo il dataset in modo da ottenere una osservazione per ciascuna possibile combinazione dei valori delle nostre variabili esplicative.1186803 0.1) du_dip_M assume 2 valori (0.1) higher_edu_F_l assume 2 valori (0.16 0.4428402 du_nw_F | -.3) higher_edu_M_l assume 2 valori (0. Err.2510828 _cons | -1.1462057 .2.0385635 -3.1108669 . Si tenga presente anche che nel dataset non esistono tutte queste combinazioni (_freq = 0).400 -. 10. 14. 31. 34. 43.2. 59. 40. La stima del modello . 46. 23. nomiss zero. 29. 54. 33. 56. 38. 8. 2. 17. 26. 12. 39. clist sons_M_l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 highe~M_l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 highe~F_l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 du_dip_M 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 du_sel~M 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 du_dip_F 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 du_nw_F 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 _freq 8 26 105 0 39 77 60 0 31 222 162 0 0 0 0 0 1 1 0 0 7 7 3 0 4 22 10 0 0 0 0 0 1 2 1 0 4 3 8 0 2 15 8 0 0 0 0 0 0 0 0 0 1 8 1 0 6 13 8 1. . 47. 58. 18. 21. 42. 6. 32. 13. 24. 52. 53. 28. 22. 5. 30. 41. 16. 7. 51. 44. 35. 25. 48. Nicola Tommasi 177 . 49. 15. 55. 20. contract sons_M_l higher_edu_M_l higher_edu_F_l du_dip_M > du_self_M du_nw_F du_dip_F.18. 27. 36. 3. 37. Previsioni Multiple 18. 57. 45. 11. 19. 4. 50. 9. 67. 123. 117. 105. 70. 111. 106. 121. 83. 74. 119. 104. 69. La stima del modello 60. 107. 118. 85. 77. 76. 100. 96. 99. Previsioni Multiple 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 20 57 180 0 73 89 167 0 33 335 405 0 0 0 0 0 0 1 3 0 6 12 7 0 2 33 10 0 0 0 0 0 0 1 0 0 3 14 11 0 4 31 20 0 0 0 0 0 1 0 1 0 6 9 8 0 4 40 17 0 178 Nicola Tommasi . 62. 102. 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 18. 73. 68. 86. 81. 82. 120. 103. 116. 95. 110. 78. 80. 91.18. 108. 115. 75. 98. 72. 101. 71. 84. 87. 88. 66. 64. 94. 92. 93. 122. 124. 79. 90. 65. 89. 97. 63. 61. 109. 114.2. 113. 112. 164. 138. 179. Previsioni Multiple 125. 140. 167. 170. 154. 161. 165. 173. 131. 128. 137. 187. 150.18. 129. 185. 177. 166. 139. 159. 126. 172. 146. 156. 188. 169. 136. 162. 145. 143. 127. 180. 178. 155. 158. 152. 153. 130. 181. 148. 168. 133. 151. 160. 147.2. 184. 157. 144. 149. 163. 186. 175. 141. 176. La stima del modello 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 16 54 174 0 72 84 232 0 39 302 521 0 0 0 0 0 0 2 1 0 4 14 4 0 1 33 8 0 0 0 0 0 0 6 3 0 6 13 7 0 3 44 29 0 0 0 0 0 0 0 1 0 7 11 7 0 5 39 5 0 0 Nicola Tommasi 179 . 171. 135. 189. 182. 174. 142. 183. 132. 134. 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 18. 217. 192. 201.18. 235. 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 18. 233. 191. 236. 194. 254. 208. 232. 218. 229. 249. 247. 244. 196. 197. 221. 251. 231. 248. 212. 216. 207. 203. 199. 222. 227. 234. 252. 200. 225. 209. 198. 223. 239. Previsioni Multiple 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 6 17 50 0 38 24 102 0 5 71 186 0 0 0 0 0 0 1 0 0 1 1 3 0 0 6 1 0 0 0 0 0 0 2 2 0 0 2 4 0 0 9 11 0 0 0 0 0 0 0 0 0 3 3 0 0 3 17 5 0 0 0 180 Nicola Tommasi . 206. 214. 230. 246. 226. 228.2. 195. 250. 202. 238. 193. 240. 245. 215. 237. 224. 205. 241. 213. 253. 210. 242. La stima del modello 190. 220. 211. 219. 204. 243. Previsioni Multiple 255. local sons_M_l = comb[`riga'.2]. x(sons_M_l higher_edu_M_l higher_edu_F_l du_dip_M du_self_M du_nw_F du_dip_F = = = = = = = 0 0 0 0 0 0 0). prchange. Determiniamo il numero di righe della matrice comb e costruiamo un ciclo foreach per passare i parametri al comando. In pratica si dovrebbe applicare il comando per le 256 combinazioni. x(sons_M_l higher_edu_M_l higher_edu_F_l du_dip_M du_self_M du_nw_F du_dip_F = = = = = = = 3 1 1 1 1 1 1). local higher_edu_M_l = comb[`riga'. Questi parametri vengono passati a prchange attraverso delle local (local sons_M_l . local du_dip_F = comb[`riga'.3]. passandogli come parametri i valori in base ai quali calcolare le probabilità.6]. . Adesso voglio calcolare la probabilità associata a ciascuna delle 256 combinazioni ed aggiungerla come nuova variabile.18. local higher_edu_F_l = comb[`riga'. foreach riga of numlist 1/`r_comb' . **set trace on. Possiamo fare questo con il comando prchange.4]. local du_dip_F) i cui valori vengono prelevati dalla matrice comb: local r_comb = rowsof(comb). A questo punto diventa più semplice usare le matrici. partendo dalla prima combinazione: prchange.7]. local du_dip_M = comb[`riga'.1]. nella return list del comando troviamo il vettore r(predval) che come secondo elemento contiene la probabilità stimata che ci interessa.5]. x(sons_M_l =`sons_M_l' higher_edu_M_l =`higher_edu_M_l' higher_edu_F_l =`higher_edu_F_l' du_dip_M =`du_dip_M' du_self_M =`du_self_M' Nicola Tommasi 181 . 3 3 1 1 1 1 1 1 18. per finire con l’ultima combinazione prchange. Per prima cosa trasformiamo il dataset in una matrice che chiameremo comb: mkmat sons_M_l higher_edu_M_l higher_edu_F_l du_dip_M du_self_M du_nw_F du_dip_F. il dataset è nella forma adatta ai nostri scopi. matrix(comb). local du_nw_F = comb[`riga'. La stima del modello 1 1 0 1 1 1 0 0 OK. 256. .2. local du_self_M = comb[`riga'. 05490045 . matrix comb_pr`riga' = comb[`riga'.03850239 .04518275 .03428787 .04209995 . pred[1.03163838 .18. 18. matrix drop pred.01727403 .2].] .02667329 .01966359 ..01579133 .01649973 .2. matrix list comb_pr.02456796 . La stima del modello du_nw_F =`du_nw_F' du_dip_F =`du_dip_F')..0469672 ..01490165 . pred[1. comb_pr[256. ovvero il secondo valore del vettore r(predval) viene aggiunto come nuovo elemento al vettore riga dei valori delle variabili matrix comb_pr`riga' = comb[`riga'.2].01305687 .0277755 . matrix pred = r(predval).8] sons_M_l r1 0 r2 1 r3 2 r4 3 r5 0 r6 1 r7 2 r8 3 r9 0 r10 1 r11 2 r12 3 r13 0 r14 1 r15 2 r16 3 r17 0 r18 1 r19 2 r20 3 r21 0 r22 1 r23 2 r24 3 r25 0 r26 1 r27 2 r28 3 r29 0 r30 1 r31 2 r32 3 r33 0 r34 1 r35 2 r36 3 r37 0 r38 1 r39 2 r40 3 r41 0 r42 1 r43 2 r44 3 high~_M_l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 high~_F_l 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 du_dip_M 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 du_self_M 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 du_nw_F 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 du_dip_F 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 c8 .2].05698306 .00684864 .01884039 .02933957 .04054608 .01653719 .03053238 .0106863 .02227251 .02173155 ..01138162 . . qui mat comb_pr= (nullmat(comb_pr) comb_pr`riga').01084198 .03297465 .04046682 ..1.00887669 .03125083 .02927882 . .02352309 .01020022 .02135735 .02357369 .02256464 .01451788 182 Nicola Tommasi .02078969 .01365868 . Previsioni Multiple al termine di ogni esecuzione di prchange il valore di pred[1.02083529 . Infine tutte le righe vengono combinate assieme per ottenere la matrice finale comb_pr.1.] .01557578 .03290772 . 05133273 .02421956 .05629028 .0453811 .07486377 .02568178 . La stima del modello 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 .04364548 .03439569 .03706785 .02826582 .06540354 .01196023 .03382808 . Previsioni Multiple r45 r46 r47 r48 r49 r50 r51 r52 r53 r54 r55 r56 r57 r58 r59 r60 r61 r62 r63 r64 r65 r66 r67 r68 r69 r70 r71 r72 r73 r74 r75 r76 r77 r78 r79 r80 r81 r82 r83 r84 r85 r86 r87 r88 r89 r90 r91 r92 r93 r94 r95 r96 r97 r98 r99 r100 r101 r102 r103 r104 r105 r106 r107 r108 r109 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 18.06853762 .0630826 .03559617 .02812697 .02714735 .05123693 .03566756 .06528763 .04885904 .03011463 .03767958 .03575507 .06115075 .2.0415562 .04941624 .08896469 .04469279 .03760492 .03424177 .06767102 .01919419 .02561526 .0232372 .04874634 .04637326 .04690768 .06240681 .03618798 .01385122 .0486544 .05320916 .10514402 .08090958 .10182033 .0710117 .05054738 .03252943 .0173347 .08602732 .05432799 Nicola Tommasi 183 .02453301 .05894887 .0270904 .02464971 .0181017 .01992651 .02601101 .03914384 .18.01628823 .03896226 .01834679 .07817525 . 09205978 .02783366 .07334241 .08190262 .04007105 .0598355 .07018927 .09296776 .05691365 .04646172 .04372974 . La stima del modello r110 r111 r112 r113 r114 r115 r116 r117 r118 r119 r120 r121 r122 r123 r124 r125 r126 r127 r128 r129 r130 r131 r132 r133 r134 r135 r136 r137 r138 r139 r140 r141 r142 r143 r144 r145 r146 r147 r148 r149 r150 r151 r152 r153 r154 r155 r156 r157 r158 r159 r160 r161 r162 r163 r164 r165 r166 r167 r168 r169 r170 r171 r172 r173 r174 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1 18.11212215 .09514806 .03063037 184 Nicola Tommasi .09607838 .08393377 .07092933 .10864002 .03863135 .0304905 .04001869 .05639349 .05507191 .07830834 .02053213 .06206314 .05918708 .04068058 .12324235 .08473428 .03909247 .06470847 .18.10966442 .0613959 .03582672 .11316993 .09910604 .05069501 .2.04222742 .14354074 .03178672 .02232083 .02893543 .07594781 .08112232 .05255296 .03257362 .07751009 .07564123 .04391757 .05314341 .04204545 . Previsioni Multiple 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 0 .12704809 .05075834 .04383302 .0590559 .02676854 .05715961 .06785662 .09592332 .07346918 .03718279 .07031184 .05517336 .14776383 . 04601374 .03186632 .06424052 .02427141 .03354997 .04610165 .0372321 .08754214 .03316559 .2.0641643 .0635929 .05265072 .02897554 .04819519 .02529023 .06651596 .04557462 .01071203 .11299532 .18.04322468 .03017682 . La stima del modello 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 .06132231 .02303382 .03389654 .04776399 .06195188 .01121921 Nicola Tommasi 185 .06581173 .04434379 .0152314 .0873974 .08379353 .04782438 .02793236 .03321049 .03523976 .02680613 .02278574 .03226015 .07270885 .01814223 .05841413 .01561142 .08464009 .02573625 .0545651 .09036943 .02180528 .01970707 .0205622 .01254771 .03193149 .03361796 .06881309 .01631292 .04731152 .06347949 . Previsioni Multiple r175 r176 r177 r178 r179 r180 r181 r182 r183 r184 r185 r186 r187 r188 r189 r190 r191 r192 r193 r194 r195 r196 r197 r198 r199 r200 r201 r202 r203 r204 r205 r206 r207 r208 r209 r210 r211 r212 r213 r214 r215 r216 r217 r218 r219 r220 r221 r222 r223 r224 r225 r226 r227 r228 r229 r230 r231 r232 r233 r234 r235 r236 r237 r238 r239 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 18.01369051 .02327058 .04551652 .04163717 .03870767 .02146415 .08667391 .11657615 . 01595458 . Previsioni Multiple 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 .18.03139766 .01431736 . La stima del modello r240 r241 r242 r243 r244 r245 r246 r247 r248 r249 r250 r251 r252 r253 r254 r255 r256 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 18.2.00933016 .0345546 186 Nicola Tommasi .04962935 .04907022 .06639852 .02406044 .04722175 .03495214 .02375207 .01893949 .04020426 .02273657 .00720989 .01705406 . In particolare DM Duration .0g DE000WLB8FC4_SP double %10. Abbiamo il seguente dataset: .0g DE000WLB8FC4_RYIB double %10.7 pagina 32).400 (85.0g DE000WLB8FC4_MV double %10.0g DE000WLB8FC4_AC double %10. desc DE000WLB8FC4_DM-DE000WLB8FC4_MV. quella dopo l’“_”. desc.0g DE000WLB8FC4_SWSP double %10. Le variabili riguardano indici relativi ad una serie di titoli bond e si presentano in gruppi di 8. short Contains data from dta/ts.0g DE000WLB8FC4_IBOX double %10.511 24 May 2008 10:27 size: 22. è l’indice relativo al titolo.dta obs: 800 vars: 3. dove per ciascun titolo si riportano 8 indici: .4 pagina 124). fullnames storage display value variable name type format label variable label ----------------------------------------------------------------------DE000WLB8FC4_DM double %10. la seconda parte.0g DE000WLB8FC4_RI double %10. Purtroppo per specificare questa lista di variabili non possiamo fare ricorso ai caratteri jolly e alle sequenze di variabili (vedi capitolo 5.450.Capitolo 19 reshape su Molte Variabili Per l’esecuzione dei comandi reshape long e reshape wide è necessario specificare tutte le variabili che abbiamo definito del gruppo Xij (vedi capitolo 10.7% of memory free) Sorted by: Note: dataset has changed since last saved di cui dobbiamo fare un reshape long sul gruppo di 3500 variabili Xij .Modified IBOX iBoxx End-Of-Day Mid Price 187 .0g La prima parte del nome della variabile è l’identificativo del titolo. Come fare nel caso in cui le variabili del gruppo Xij siano molto numerose? Cerchiamo di spiegarlo tramite un caso applicato. la variabile data è l’elemento i.19. quindi elimino la parte terminale AC del nome delle variabili. Con keep *_AC prendo una sola occorrenza tra le 8 di ciascun titolo. Analizziamolo. reshape su Molte Variabili SP Spread Over Benchmark Curve SWSP Spread Over Swap Curve RI Total Return Index AC Accrued Interest RYIB IBoxx . Teoricamente si dovrebbe fare il reshape scrivendo circa 440 variabili!. DE000WLB8FC4_ XS0308936037_ DE000A0NUMG1_ XS0222695008_ XS0188 > 568751_ DE0009168062_ DE0007009482_ DE000A0DXH13_ DE000A0DAL (output omitted ) > 0185415139_ XS0173128983_ XS0328609580_ XS0312464158_ Ok ci siamo. i(data) j(tipo) string. (note: j = AC DM IBOX MV RI RYIB SP SWSP) (note: ES0312342001_DM not found) (note: ES0312298005_DM not found) (note: DE000LBW6062_DM not found) (note: ES0312342001_IBOX not found) (note: ES0312298005_IBOX not found) (note: ES0370148001_IBOX not found) (note: DE000LBW6062_IBOX not found) (note: DE000LBW3DR8_IBOX not found) (note: DE000HBE0D55_IBOX not found) (note: DE000WLB6EG2_IBOX not found) (note: XS0282598167_IBOX not found) (note: DE000NWB2846_IBOX not found) (note: DE000DHY1149_IBOX not found) (note: DE000MHB3018_IBOX not found) (note: DE000LBW6062_MV not found) (note: DE000LBW6062_RI not found) (note: ES0312342001_RYIB not found) (note: ES0312298005_RYIB not found) (note: ES0370148001_RYIB not found) (note: DE000LBW6062_RYIB not found) (note: DE000LBW3DR8_RYIB not found) (note: DE000HBE0D55_RYIB not found) 188 Nicola Tommasi . ds *_. keep *_AC. restore. indichiamo con tipo l’elemento j e aggiungiamo l’opzione string dato che l’identificativo Xij non è numerico: . Con il comando ds ottengo la lista delle variabili che vengono salvare nella local r(varlist) . renvars . di "`r(varlist)'".Yield MV Market Value (Capital) e rappresentano l’elemento j. di "`r(varlist)'". postsub(_AC _). reshape long "`r(varlist)'" . Con questo pezzo di codice però riesco ad ottenere la lista che mi serve: preserve. reshape su Molte Variabili (note: (note: (note: (note: (note: (note: (note: DE000WLB6EG2_RYIB not found) XS0282598167_RYIB not found) DE000NWB2846_RYIB not found) DE000DHY1149_RYIB not found) DE000MHB3018_RYIB not found) DE000LBW6062_SP not found) DE000LBW6062_SWSP not found) Data wide -> long ----------------------------------------------------------------------------Number of obs. 800 -> 6400 Number of variables 3511 -> 447 j variable (8 values) -> tipo xij variables: DE000WLB8FC4_AC DE000WLB8FC4_DM .19.... DE000WLB8FC4_SWSP->DE000WLB8FC4_ XS0308936037_AC XS0308936037_DM .. XS0308936037_SWSP->XS0308936037_ (output omitted ) XS0241183804_AC XS0241183804_DM . XS0169374443_SWSP->XS0169374443_ ----------------------------------------------------------------------------- Nicola Tommasi 189 ... XS0241183804_SWSP->XS0241183804_ XS0169374443_AC XS0169374443_DM ... . Parte III Appendici 191 . . 1. basemap_options polygon(polygon_suboptions) line(line_suboptions) point(point_suboptions) diagram(diagram_suboptions) arrow(arrow_suboptions) label(label_suboptions) scalebar(scalebar_suboptions) graph_options A.1 Main basemap_options id(idvar) 1 1 base map polygon identifier Required option 193 .it A.Italy
[email protected] A spmap: Visualization of spatial data Autore: Maurizio Pisati Department of Sociology and Social Research University of Milano Bicocca .0) spmap attribute .1 Syntax if in using basemap (Version 1.1. A. Syntax Cartogram A.1. max) attribute range for eqint classification method kmiter(#) number of iterations for kmeans classification method ndfcolor(colorstyle) fill color of empty (no data) base map polygons ndocolor(colorstyle) outline color of empty (no data) base map polygons ndsize(linewidthstyle) outline thickness of empty (no data) base map polygons ndlabel(string) legend label of empty (no data) base map polygons Format fcolor(colorlist) fill color of base map polygons ocolor(colorlist) outline color of base map polygons osize(linewidthstyle_list) outline thickness of base map polygons Legend legenda(on|off) display/hide base map legend legtitle(string) base map legend title leglabel(string) single-key base map legend label legorder(hilo|lohi) base map legend order legstyle(0|1|2|3) base map legend style legjunction(string) string connecting lower and upper class limits in base map legend labels when legstyle(2) legcount display number of base map polygons belonging to each class A.1. where method is one of the following: quantile. eqint. spmap: Visualization of spatial data area(areavar) draw base map polygons with area proportional to variable areavar split split multipart base map polygons map(backgroundmap) draw background map defined in Stata dataset backgroundmap mfcolor(colorstyle) fill color of the background map mocolor(colorstyle) outline color of the background map mosize(linewidthstyle) outline thickness of the background map mopattern(linepatternstyle) outline pattern of the background map Choropleth map clmethod(method) attribute classification method. kmeans.2 Main polygon_suboptions 2 data(polygon) 2 Stata dataset defining one or more supplementary polygons Required when option polygon() is specified 194 Nicola Tommasi . custom. stdev. unique clnumber(#) number of classes clbreaks(numlist) custom class breaks eirange(min. boxplot. 3 Main line_suboptions data(line) 3 Stata dataset defining one or more polylines to be superimposed onto the base map select(command) keep/drop specified records of dataset line by(byvar_ln) group polylines by variable byvar_ln Format color(colorlist) polyline color size(linewidthstyle_list) polyline thickness pattern(linepatternstyle_list) polyline pattern Legend legenda(on|off) display/hide polyline legend legtitle(string) polyline legend title leglabel(string) single-key polyline legend label legshow(numlist) display only selected keys of polyline legend legcount display number of polylines belonging to each group A. Syntax to be superimposed onto the base map select(command) keep/drop specified records of dataset polygon by(byvar_pl) group supplementary polygons by variable byvar_pl Format fcolor(colorlist) fill color of supplementary polygons ocolor(colorlist) outline color of supplementary polygons osize(linewidthstyle_list) outline thickness of supplementary polygons Legend legenda(on|off) display/hide supplementary-polygon legend legtitle(string) supplementary-polygon legend title leglabel(string) single-key supplementary-polygon legend label legshow(numlist) display only selected keys of supplementary-polygon legend legcount display number of supplementary polygons belonging to each group A.1. spmap: Visualization of spatial data A.4 Main point_suboptions data(point) Stata dataset defining one or more points to be superimposed onto the base map 3 Required when option line() is specified Nicola Tommasi 195 .A.1.1. 1. Syntax A.5 Main diagram_suboptions data(diagram) Stata dataset defining one or more diagrams to be superimposed onto the base map at given reference points select(command) keep/drop specified records of dataset diagram by(byvar_dg) group diagrams by variable byvar_dg 4 5 Required when option point() is specified Required when option point() is specified 196 Nicola Tommasi . max) normalization range of variable propvar_pn psize(relative|absolute) reference system for drawing point markers Deviation deviation(devvar_pn) draw point markers as deviations from given reference value of variable devvar_pn refval(mean|median|#) reference value of variable devvar_pn refweight(weightvar_pn) compute reference value of variable devvar_pn weighting observations by variable weightvar_pn dmax(#) absolute value of maximum deviation Format size(markersizestyle_list) size of point markers shape(symbolstyle_list) shape of point markers fcolor(colorlist) fill color of point markers ocolor(colorlist) outline color of point markers osize(linewidthstyle_list) outline thickness of point markers Legend legenda(on|off) display/hide point legend legtitle(string) point legend title leglabel(string) single-key point legend label legshow(numlist) display only selected keys of point legend legcount display number of points belonging to each group A.1.A. spmap: Visualization of spatial data select(command) keep/drop specified records of dataset point by(byvar_pn) group points by variable byvar_pn xcoord(xvar_pn) 4 variable containing the x-coordinate of points ycoord(yvar_pn) 5 variable containing the y-coordinate of points Proportional size proportional(propvar_pn) draw point markers with size proportional to variable propvar_pn prange(min. 1. spmap: Visualization of spatial data A.A. Syntax xcoord(xvar_dg) 6 variable containing the x-coordinate of diagram reference points ycoord(yvar_dg) 7 variable containing the y-coordinate of diagram reference points variables(diagvar_dg) 8 variable or variables to be represented by diagrams type(frect|pie) diagram type Proportional size proportional(propvar_dg) draw diagrams with area proportional to variable propvar_dg prange(min. max) reference range of variable diagvar_dg refval(mean|median|#) reference value of variable diagvar_dg refweight(weightvar_dg) compute the reference value of variable diagvar_dg weighting observations by variable weightvar_dg refcolor(colorstyle) color of the line representing the reference value of variable diagvar_dg refsize(linewidthstyle) thickness of the line representing the reference value of variable diagvar_dg Format size(#) diagram size fcolor(colorlist) fill color of the diagrams ocolor(colorlist) outline color of the diagrams osize(linewidthstyle_list) outline thickness of the diagrams Legend legenda(on|off) display/hide diagram legend legtitle(string) diagram legend title legshow(numlist) display only selected keys of diagram legend legcount display number of diagrams belonging to each group A. max) reference range of variable propvar_dg Framed-rectangle chart range(min.6 Main arrow_suboptions data(arrow) 9 Stata dataset defining one or more arrows to be superimposed onto the base map 6 7 Required Required 8 Required 9 Required when when when when option option option option diagram() is specified diagram() is specified diagram() is specified arrow() is specified Nicola Tommasi 197 .1. spmap: Visualization of spatial data select(command) keep/drop specified records of dataset arrow by(byvar_ar) group arrows by variable byvar_ar Format direction(directionstyle_list) arrow direction. Syntax A.A. where directionstyle is one of the following: 1 (monodirectional arrow). 2 (bidirectional arrow) hsize(markersizestyle_list) arrowhead size hangle(anglestyle_list) arrowhead angle hbarbsize(markersizestyle_list) size of filled portion of arrowhead hfcolor(colorlist) arrowhead fill color hocolor(colorlist) arrowhead outline color hosize(linewidthstyle_list) arrowhead outline thickness lcolor(colorlist) arrow shaft line color lsize(linewidthstyle_list) arrow shaft line thickness lpattern(linepatternstyle_list) arrow shaft line pattern Legend legenda(on|off) display/hide arrow legend legtitle(string) arrow legend title leglabel(string) single-key arrow legend label legshow(numlist) display only selected keys of arrow legend legcount display number of arrows belonging to each group A.1. where lengthstyle is any integer>0 size(textsizestyle_list) label size color(colorlist) label color 10 11 Required when option label() is specified Required when option label() is specified 12 Required when option label() is specified 198 Nicola Tommasi .1.7 Main label_suboptions data(label) Stata dataset defining one or more labels to be superimposed onto the base map at given reference points select(command) keep/drop specified records of dataset label by(byvar_lb) group labels by variable byvar_lb xcoord(xvar_lb) 10 variable containing the x-coordinate of label reference points ycoord(yvar_lb) 11 variable containing the y-coordinate of label reference points label(labvar_lb) 12 variable containing the labels Format length(lengthstyle_list) maximum number of label characters. A. spmap: Visualization of spatial data A.2. description position(clockpos_list) position of labels relative to their reference point gap(relativesize_list) gap between labels and their reference point angle(anglestyle_list) label angle A.1.8 Main scalebar_suboptions units(#) 13 scale bar extent scale(#) ratio of scale bar units to map units xpos(#) scale bar horizontal position relative to plot region center ypos(#) scale bar vertical position relative to plot region center Format size(#) scale bar height multiplier fcolor(colorstyle) fill color of scale bar ocolor(colorstyle) outline color of scale bar osize(linewidthstyle) outline thickness of scale bar label(string) scale bar label tcolor(colorstyle) color of scale bar text tsize(textsizestyle) size of scale bar text A.1.9 Main graph_options polyfirst draw supplementary polygons before the base map gsize(#) length of shortest side of available area (in inches) freestyle ignore built-in graph formatting presets and restrictions twoway_options any options documented in [G] twoway_options, except for axis_options, aspect_option, scheme_option, by_option, and advanced_options A.2 description 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. spmap functioning rests on three basic principles: - First, a base map representing a given region of interest R made up of N polygons is drawn. 13 Required when option scalebar() is specified Nicola Tommasi 199 A.3. Spatial data format A. spmap: Visualization of spatial data - Second, at the user’s choice, one or more kinds of additional spatial objects may be superimposed onto the base map. In the current version of spmap, six different kinds of spatial objects can be superimposed onto the base map: polygons (via option polygon()), polylines (via option line()), points (via option point()), diagrams (via option diagram()), arrows (via option arrow()), and labels (via option label()). - Third, at the user’s choice, one or more additional map elements may be added, such as a scale bar (via option scalebar()), a title, a subtitle, a note, and a caption (via title_options). Proper specification of spmap options and suboptions, combined with the availability of properly formatted spatial data, allows the user to draw several kinds of maps, including choropleth maps, proportional symbol maps, pin maps, pie chart maps, and noncontiguous area cartograms. While providing sensible defaults for most options and supoptions, spmap gives the user full control over the formatting of almost every map element, thus allowing the production of highly customized maps. A.3 Spatial data format spmap requires that the spatial data to be visualized be arranged into properly formatted Stata datasets. Such datasets can be classified into nine categories: master, basemap, backgroundmap, polygon, line, point, diagram, arrow, label. The master dataset is the dataset that resides in memory when spmap is invoked. At the minimum, it must contain variable idvar, a numeric variable that uniquely identifies the polygon or polygons making up the base map. If a choropleth map is to be drawn, then the master dataset should contain also variable attribute, a numeric variable expressing the values of the feature to be represented. Additionally, if a noncontiguous area cartogram is to be drawn - i.e., if the polygons making up the base map are to be drawn with area proportional to the values of a given numeric variable areavar - then the master dataset should contain also variable areavar. A basemap dataset is a Stata dataset that contains the definition of the polygon or polygons making up the base map. A basemap dataset is required to have the following structure: _ID _X _Y _EMBEDDED ------------------------------------1 . . 0 1 10 30 0 1 10 50 0 200 Nicola Tommasi A. spmap: Visualization of spatial data 1 30 50 0 1 30 30 0 1 10 30 0 2 . . 0 2 10 10 0 2 10 30 0 2 18 30 0 2 18 10 0 2 10 10 0 2 . . 0 2 22 10 0 2 22 30 0 2 30 30 0 2 30 10 0 2 22 10 0 3 . . 1 3 15 35 1 3 15 45 1 3 25 45 1 3 25 35 1 3 15 35 1 ------------------------------------- A.3. Spatial data format _ID is required and is a numeric variable that uniquely identifies the polygons making up the base map. _X is required and is a numeric variable that contains the x-coordinate of the nodes of the base map polygons. _Y is required and is a numeric variable that contains the y-coordinate of the nodes of the base map polygons. Finally, _EMBEDDED is optional and is an indicator variable taking value 1 if the corresponding polygon is completely enclosed in another polygon, and value 0 otherwise. The following should be noticed: - Both simple and multipart polygons are allowed. In the example above, polygons 1 and 3 are simple (i.e., they consist of a single area), while polygon 2 is multipart (i.e., it consists of two distinct areas). - The first record of each simple polygon or of each part of a multipart polygon must contain missing x- and y-coordinates. - The non-missing coordinates of each simple polygon or of each part of a multipart polygon must be ordered so as to correspond to consecutive nodes. - Each simple polygon or each part of a multipart polygon must be “closed”, i.e., the last pair of non-missing coordinates must be equal to the first pair. Nicola Tommasi 201 A.3. Spatial data format A. spmap: Visualization of spatial data - A basemap dataset is always required to be sorted by variable _ID. A backgroundmap dataset is a Stata dataset that contains the definition of the polygon or polygons making up the background map (a map that can be optionally drawn as background of a noncontiguous area cartogram). A backgroundmap dataset has exactly the same structure as a basemap dataset, except for variable _EMBEDDED that is never used. A polygon dataset is a Stata dataset that contains the definition of one or more supplementary polygons to be superimposed onto the base map. A polygon dataset is required to have the following structure: _ID _X _Y byvar_pl ------------------------------------1 . . 1 1 20 40 1 1 20 42 1 1 25 42 1 1 25 40 1 1 20 40 1 2 . . 1 2 11 20 1 2 11 25 1 2 13 25 1 2 13 20 1 2 11 20 1 3 . . 2 3 25 25 2 3 25 35 2 3 30 35 2 3 30 25 2 3 25 25 2 ------------------------------------Variables _ID, _X, and _Y are defined exactly in the same way as in a basemap dataset, with the sole exception that only simple polygons are allowed. In turn, byvar_pl is a placeholder denoting an optional variable that can be specified to distinguish different kinds of supplementary polygons. A line dataset is a Stata dataset that contains the definition of one or more polylines to be superimposed onto the base map. A line dataset is required to have the following structure: _ID _X _Y byvar_ln 202 Nicola Tommasi A. spmap: Visualization of spatial data ------------------------------------1 . . 1 1 11 30 1 1 12 33 1 1 15 33 1 1 16 35 1 1 18 40 1 1 25 38 1 1 25 42 1 2 . . 2 2 12 20 2 2 18 15 2 3 . . 2 3 27 28 2 3 27 25 2 3 28 27 2 3 29 25 2 ------------------------------------- A.3. Spatial data format _ID is required and is a numeric variable that uniquely identifies the polylines. _X is required and is a numeric variable that contains the x-coordinate of the nodes of the polylines. _Y is required and is a numeric variable that contains the y-coordinate of the nodes of the polylines. Finally, byvar_ln is a placeholder denoting an optional variable that can be specified to distinguish different kinds of polylines. The following should be noticed: - The first record of each polyline must contain missing x- and y-coordinates. - The non-missing coordinates of each polyline must be ordered so as to correspond to consecutive nodes. A point dataset is a Stata dataset that contains the definition of one or more points to be superimposed onto the base map. A point dataset is required to have the following structure: xvar_pn yvar_pn byvar_pn propvar_pn devvar_pn weightvar_pn ----------------------------------------------------------------11 30 1 100 30 1000 20 34 1 110 25 1500 25 40 1 90 40 1230 25 45 2 200 10 950 15 20 2 50 70 600 ----------------------------------------------------------------Nicola Tommasi 203 . yvar_pn is a placeholder denoting a required numeric variable that contains the y-coordinate of the points. devvar_pn is a placeholder denoting an optional variable that. A diagram dataset is required to have the following structure: xvar_dg yvar_dg byvar_dg diagvar_dg propvar_dg weightvar_dg -----------------------------------------------------------------15 30 1 . Finally. byvar_pn is a placeholder denoting an optional variable that can be specified to distinguish different kinds of points.. yvar_dg is a placeholder denoting a required numeric variable that contains the y-coordinate of the diagram reference points.. requests that the point markers be drawn as deviations from a given reference value of devvar_pn. 10 950 15 20 2 .. weightvar_dg is a placeholder denoting an optional variable that. when specified. A diagram dataset is a Stata dataset that contains the definition of one or more diagrams to be superimposed onto the base map at given reference points. 25 1500 20 45 1 . requests that the reference value of devvar_pn be computed weighting observations by variable weightvar_pn. It is important to note that the required and optional variables making up a point dataset can either reside in an external dataset or be part of the master dataset.. Spatial data format A. when specified. requests that the reference value of the diagrams be computed weighting observations by variable weightvar_dg (this applies only to framed-rectangle charts).3. propvar_pn is a placeholder denoting an optional variable that. requests that the diagrams be drawn with area proportional to propvar_dg. when specified. when specified.. requests that the point markers be drawn with size proportional to propvar_pn. 70 600 -----------------------------------------------------------------xvar_dg is a placeholder denoting a required numeric variable that contains the x-coordinate of the diagram reference points. 30 1000 18 40 1 .. propvar_dg is a placeholder denoting an optional variable that.A.. when specified. spmap: Visualization of spatial data xvar_pn is a placeholder denoting a required numeric variable that contains the x-coordinate of the points. 40 1230 25 45 2 .. diagvar_dg is a placeholder denoting one or more variables to be represented by the diagrams. 204 Nicola Tommasi .. byvar_dg is a placeholder denoting an optional variable that can be specified to distinguish different groups of diagrams. It is important to note that the required and optional variables making up a diagram dataset can either reside in an external dataset or be part of the master dataset. weightvar_pn is a placeholder denoting an optional variable that. Finally. _Y2 is required and is a numeric variable that contains the y-coordinate of the ending point of the arrows. byvar_ar is a placeholder denoting an optional variable that can be specified to distinguish different kinds of arrows.3. Finally. spmap: Visualization of spatial data A. _X1 is required and is a numeric variable that contains the x-coordinate of the starting point of the arrows. byvar_lb is a placeholder denoting an optional variable that can be specified to distinguish different kinds of labels. A label dataset is required to have the following structure: xvar_lb yvar_lb byvar_lb labvar_lb --------------------------------------11 33 1 Abcde 20 37 1 Fgh 25 43 1 IJKL 25 48 2 Mnopqr 15 22 2 stu --------------------------------------xvar_lb is a placeholder denoting a required numeric variable that contains the x-coordinate of the label reference points. _Y1 is required and is a numeric variable that contains the y-coordinate of the starting point of the arrows. It is important to note that the required and optional variables making up a label dataset can either reside in an external dataset or be part of the master dataset. An arrow dataset is required to have the following structure: _ID _X1 _Y1 _X2 _Y2 byvar_ar --------------------------------------------------------1 11 30 18 30 1 2 15 40 15 45 1 3 15 40 25 40 1 4 20 35 28 45 2 5 17 20 20 11 2 --------------------------------------------------------_ID is required and is a numeric variable that uniquely identifies the arrows. _X2 is required and is a numeric variable that contains the x-coordinate of the ending point of the arrows. yvar_lb is a placeholder denoting a required numeric variable that contains the y-coordinate of the label reference points. labvar_lb is a placeholder denoting the variable that contains the labels. Spatial data format An arrow dataset is a Stata dataset that contains the definition of one or more arrows to be superimposed onto the base map. Nicola Tommasi 205 . A label dataset is a Stata dataset that contains the definition of one or more labels to be superimposed onto the base map at given reference points. Finally.A. 4 Color lists Some spmap options and suboptions request the user to specify a list of one or more colors. the user is required to specify a standard colorstyle. and its source. When the list includes only one color. the maximum number of different colors it allows. On the other hand. spmap: Visualization of spatial data A. or specify the name of a predefined color scheme. indicating the name of each scheme. The following table lists the predefined color schemes available in the current version of spmap.4. Color lists A.A. NAME MAXCOL TYPE SOURCE -----------------------------------------------Blues 9 Sequential Brewer Blues2 99 Sequential Custom BuGn 9 Sequential Brewer BuPu 9 Sequential Brewer GnBu 9 Sequential Brewer Greens 9 Sequential Brewer Greens2 99 Sequential Custom Greys 9 Sequential Brewer Greys2 99 Sequential Brewer Heat 16 Sequential Custom OrRd 9 Sequential Brewer Oranges 9 Sequential Brewer PuBu 9 Sequential Brewer PuBuGn 9 Sequential Brewer PuRd 9 Sequential Brewer Purples 9 Sequential Brewer Rainbow 99 Sequential Custom RdPu 9 Sequential Brewer Reds 9 Sequential Brewer Reds2 99 Sequential Custom Terrain 16 Sequential Custom Topological 16 Sequential Custom YlGn 9 Sequential Brewer YlGnBu 9 Sequential Brewer YlOrBr 9 Sequential Brewer YlOrRd 9 Sequential Brewer BrBG 11 Diverging Brewer BuRd 11 Diverging Custom BuYlRd 11 Diverging Custom PRGn 11 Diverging Brewer 206 Nicola Tommasi . the user can either specify a standard colorstyle list. its type. when the list includes two or more colors. .g.org. each census tract) of a given region of interest (e. a choropleth map is a base map whose constituent polygons are colored according to the values taken on by attribute. in turn. To draw the desired choropleth map. a city) is colored or shaded with an intensity proportional to the value taken on by a given quantitative variable in that subarea (Slocum et al. Pennsylvania.. A. 2005).g. Choropleth maps PiYG 11 Diverging Brewer PuOr 11 Diverging Brewer RdBu 11 Diverging Brewer RdGy 11 Diverging Brewer RdYlBu 11 Diverging Brewer RdYlGn 11 Diverging Brewer Spectral 11 Diverging Brewer Accent 8 Qualitative Brewer Dark2 8 Qualitative Brewer Paired 12 Qualitative Brewer Pastel1 9 Qualitative Brewer Pastel2 8 Qualitative Brewer Set1 9 Qualitative Brewer Set2 8 Qualitative Brewer Set3 12 Qualitative Brewer -----------------------------------------------Following Brewer (1999). In spmap. spmap: Visualization of spatial data A. so that higher data values are represented by darker colors. Cynthia A. sequential schemes are typically used to represent ordered data. USA (Brewer et al.5 Choropleth maps A choropleth map can be defined as a map in which each subarea (e. Brewer’s permission and are taken from the ColorBrewer map design tool available at ColorBrewer. Since choropleth maps are one of the most popular means for representing the spatial distribution of quantitative variables. a numeric variable that must be contained in the master dataset and specified immediately after the main command (see syntax diagram above). The Pennsylvania State University. 2003). spmap first groups the values taken on by variable attribute into k classes Nicola Tommasi 207 . University Park. qualitative schemes are generally used to represent unordered.5. categorical data. it is worth noting the way spmap can be used to draw this kind of map.A. The color schemes whose source is indicated as Brewer were designed by Dr. Brewer. diverging schemes are used when there is a meaningful midpoint in the data. to emphasize progressive divergence from this midpoint in the two opposite directions. These color schemes are used with Dr. finally. Department of Geography. A.6 -----------Class intervals are centered on the arithmetic mean m. The current version of spmap offers six methods for determining class breaks: . so that each class includes approximately the same number of polygons.5*iqr. p75 + 1.Equal intervals: class breaks correspond to values that divide the distribution of variable attribute into k equal-width intervals.Boxplot: the distribution of variable attribute is divided into 6 classes defined as follows: [min. the lowest and highest classes are open-ended (Evans 1977).1. 208 Nicola Tommasi .8 8 0. . 2003) is used. where iqr = interquartile range. .5*iqr]. The clustering procedure is applied several times to variable attribute. (p50. p50]. max].Standard deviates: the distribution of variable attribute is divided into k classes (2 <= k <= 9) whose width is defined as a fraction p of its standard deviation sd. . In this case.5*iqr] and (p75 + 1.2 4 1. p25 .8 7 0. and then assigns a different color to each class. (p75.k-means: the distribution of variable attribute is divided into k classes using k-means partition cluster analysis.Quantiles: class breaks correspond to quantiles of the distribution of variable attribute.0 5 0. Choropleth maps A.Custom: class breaks are specified by the user. . which is a class midpoint if k is odd and a class boundary if k is even. . Following the suggestions of Evans (1977).8 6 0. spmap allows the user to leave the values of variable attribute ungrouped. (p25. Alternatively.5. (p25 . and the solution that maximizes the goodness-of-variance fit (Armstrong et al.1. p25]. p75]. spmap: Visualization of spatial data defined by a given set of class breaks.5*iqr. this proportion p varies with k as follows: k p -----------2 inf 3 1.6 9 0. attribute is treated as a categorical variable and a different color is assigned to each of its values. clmethod(kmeans) requests that the k-means method be used. idvar must be contained in the master dataset. clmethod(boxplot) requests that the boxplot method be used. before drawing a noncontiguous area cartogram.A. all multipart base map polygons be split into their constituent parts. Cartogram area(areavar) requests that the polygons making up the base map be drawn with area proportional to the values taken on by numeric variable areavar. each of which will then be treated as a distinct simple polygon. The default is mosize(thin). clmethod(custom) requests that class breaks be specified by the user with option clbreaks(numlist). clmethod(quantile) is the default and requests that the quantiles method be used. The default is mfcolor(none). and its values must correspond to the values taken on by variable _ID contained in the basemap dataset. mfcolor(colorstyle) specifies the fill color of the background map.6 Main Options for drawing the base map id(idvar) specifies the name of a numeric variable that uniquely identifies the polygon or polygons making up the base map. map(backgroundmap) requests that. Options for drawing the base map A. The default is mopattern(solid). mopattern(linepatternstyle) specifies the outline pattern of the background map. so that a noncontiguous area cartogram (Olson 1976) is obtained. Choropleth map clmethod(method) specifies the method to be used for classifying variable attribute and representing its spatial distribution as a choropleth map. clmethod(eqint) requests that the equal intervals method be used. when drawing a noncontiguous area cartogram. mosize(linewidthstyle) specifies the outline thickness of the background map. Nicola Tommasi 209 . The default is mocolor(black). split requests that. the polygons making up the base map be superimposed onto a background map defined in Stata dataset backgroundmap. spmap: Visualization of spatial data A. areavar must be contained in the master dataset. clmethod(unique) requests that each value of variable attribute be treated as a distinct class. clmethod(stdev) requests that the standard deviates method be used.6. mocolor(colorstyle) specifies the outline color of the background map. When the quantiles. When no choropleth map is drawn. the list should be either composed of k elements. The default is ndfcolor(white). Format fcolor(colorlist) specifies the list of fill colors of the base map polygons. suppose we want to group the values of variable attribute into the following four classes: [10. the list should include only one element. standard deviates. The default is ndsize(thin). ndlabel(string) specifies the legend label to be attached to the empty (no data) polygons of the choropleth map. for this we must specify clbreaks(10 15 20 25 50).A. eirange(min. This option overrides the default range [min(attribute). max) specifies the range of values (minimum and maximum) to be considered in the calculation of class breaks when option clmethod(eqint) is specified. clbreaks(numlist) is required when option clmethod(custom) is specified. Options for drawing the base map A. or represented by the name of a predefined color scheme.15].25] and (25. the default argument is a color scheme that depends on the classification method specified in option clmethod(method): Classification Default method color scheme ---------------------------------210 Nicola Tommasi . this option is inactive and k equals the number of different values taken on by variable attribute. the second to kth elements are the class breaks. The default is kmiter(20). or k-means classification method is chosen. (20. numlist should be specified so that the first element is the minimum value of variable attribute to be considered.20]. When the unique classification method is chosen. kmiter(#) specifies the number of times the clustering procedure is applied when option clmethod(kmeans) is specified.50]. the default is clnumber(4). The default is ndocolor(black). ndsize(linewidthstyle) specifies the outline thickness of the empty (no data) polygons of the choropleth map. For example. (15. and the last element is the maximum value of variable attribute to be considered.6. The default is ndlabel(No data). this option is inactive and k=6. It defines the custom class breaks to be used for classifying variable attribute. When the boxplot classification method is chosen. ndfcolor(colorstyle) specifies the fill color of the empty (no data) polygons of the choropleth map. On the other hand. this option is inactive and k equals the number of elements of numlist specified in option clbreaks(numlist) minus 1. ndocolor(colorstyle) specifies the outline color of the empty (no data) polygons of the choropleth map. When the custom classification method is chosen. equal intervals. The default fill color is none. spmap: Visualization of spatial data clnumber(#) specifies the number of classes k in which variable attribute is to be divided. when a choropleth map is drawn. max(attribute)]. When a choropleth map is drawn. the default specification is ocolor(black .. legorder(lohi) requests that the keys of the base map legend be displayed in ascending order of variable attribute. the list should include only one element. The default outline thickness is thin. This is the default when no choropleth map is drawn. Legend legenda(on|off) specifies whether the base map legend should be displayed or hidden. legenda(off) requests that the base map legend be hidden. When a choropleth map is drawn.. Nicola Tommasi 211 . When no choropleth map is drawn.6.). the list should be either composed of k elements. the list should include only one element. This is the default when option clmethod(unique) is specified.A. On the other hand. or represented by the name of a predefined color scheme. The default outline color is black. legorder(hilo) is the default and requests that the keys of the base map legend be displayed in descending order of variable attribute. the list should be composed of k elements. This is the default when a choropleth map is drawn. the default specification is osize(thin . This option is required when option legenda(on) is specified and no choropleth map is drawn. Options for drawing the base map quantile Greys boxplot BuRd eqint Greys stdev BuRd kmeans Greys custom Greys unique Paired ---------------------------------ocolor(colorlist) specifies the list of outline colors of the base map polygons... On the other hand. when a choropleth map is drawn. option legtitle(varlab) requests that the label of variable attribute be used as the legend title. leglabel(string) specifies the label to be attached to the single key of the base map legend when no choropleth map is drawn. when a choropleth map is drawn. osize(linewidthstyle_list) specifies the list of outline thicknesses of the base map polygons.). legorder(hilo|lohi) specifies the display order of the keys of the base map legend when a choropleth map is drawn. legtitle(string) specifies the title of the base map legend. legenda(on) requests that the base map legend be displayed. When no choropleth map is drawn. spmap: Visualization of spatial data A. when suboption by(byvar_pl) is specified. when a choropleth map is drawn. The default fill color is none. the default specification is fcolor(none . the list should include only one element. legstyle(3) requests that only the first and last keys of the base map legend be labelled.A. by(byvar_pl) indicates that the supplementary polygons defined in dataset polygon belong to kpl different groups specified by variable byvar_pl. Format fcolor(colorlist) specifies the list of fill colors of the supplementary polygons. the last key is labelled with the upper limit of the corresponding class interval. the number of base map polygons belonging to each class of variable attribute be displayed in the legend. then the resulting label will be “20 . ocolor(colorlist) specifies the list of outline colors of the supplementary polygons. On the other hand. select(command) requests that a given subset of records of dataset polygon be selected using Stata commands keep or drop. if ll=20. the list should be either composed of kpl elements.35]). legstyle(1) is the default and requests that the keys of the base map legend be labelled using the standard mathematical notation for value intervals (e. For example.7. A. legjunction(string) specifies the string to be used as separator when option legstyle(2) is specified. When suboption by(byvar_pl) is not specified.).35”. and &=“ .: (20. the list should include only one element. where ll denotes the lower limit of the class interval.g.7 Main Option polygon() suboptions data(polygon) requests that one or more supplementary polygons defined in Stata dataset polygon be superimposed onto the base map. ul=35. When suboption by(byvar_pl) is not specified. legstyle(0) requests that the keys of the base map legend not be labelled.”. when suboption by(byvar_pl) 212 Nicola Tommasi . the first key is labelled with the lower limit of the corresponding class interval... or represented by the name of a predefined color scheme. legcount requests that. ul denotes the upper limit of the class interval. The default is legjunction(“ . and & denotes a string that separates the two values. legstyle(2) requests that the keys of the base map legend be labelled using the notation ll&ul.“). On the other hand. Option polygon() suboptions A. spmap: Visualization of spatial data legstyle(0|1|2|3) specifies the way the keys of the base map legend are labelled when a choropleth map is drawn. Option line() suboptions is specified.. legtitle(string) specifies the title of the supplementary-polygon legend. by(byvar_ln) indicates that the polylines defined in dataset line belong to kln different groups specified by variable byvar_ln. or represented by the name of a predefined color scheme. when suboption by(byvar_pl) is specified. the default specification is osize(thin . legcount requests that the number of supplementary polygons be displayed in the legend. legshow(numlist) requests that. legenda(off) is the default and requests that the supplementary-polygon legend be hidden. osize(linewidthstyle_list) specifies the list of outline thicknesses of the supplementary polygons. spmap: Visualization of spatial data A. the default specification is ocolor(black .. legenda(on) requests that the supplementary-polygon legend be displayed.. the list should be either composed of kpl elements. Format Nicola Tommasi 213 . On the other hand. the list should be composed of kpl elements. leglabel(string) specifies the label to be attached to the single key of the supplementary-polygon legend when suboption by(byvar_pl) is not specified.). only the keys included in numlist be displayed in the supplementarypolygon legend. When suboption by(byvar_pl) is not specified.). The default outline color is black. The default outline thickness is thin.. when suboption by(byvar_pl) is specified. the list should include only one element. When suboption by(byvar_pl) is specified. Legend legenda(on|off) specifies whether the supplementary-polygon legend should be displayed or hidden. This suboption is required when suboption legenda(on) is specified and suboption by(byvar_pl) is not specified. suboption legtitle(varlab) requests that the label of variable byvar_pl be used as the legend title.8 Main Option line() suboptions data(line) requests that one or more polylines defined in Stata dataset line be superimposed onto the base map. A.8.A. select(command) requests that a given subset of records of dataset line be selected using Stata commands keep or drop. The default pattern is solid.). the default specification is pattern(solid . legcount requests that the number of polylines be displayed in the legend. size(linewidthstyle_list) specifies the list of polyline thicknesses. select(command) requests that a given subset of records of dataset point be selected using Stata commands keep or drop. pattern(linepatternstyle_list) specifies the list of polyline patterns..).). Option point() suboptions A. the list should include only one element. the list should include only one element. legenda(on) requests that the polyline legend be displayed. or represented by the name of a predefined color scheme. the default specification is color(black . On the other hand. when suboption by(byvar_ln) is specified. legenda(off) is the default and requests that the polyline legend be hidden. legtitle(string) specifies the title of the polyline legend.. When suboption by(byvar_ln) is not specified.A. When suboption by(byvar_ln) is not specified. This suboption is required when suboption legenda(on) is specified and suboption by(byvar_ln) is not specified. When suboption by(byvar_ln) is specified. 214 Nicola Tommasi . the list should be composed of kln elements. suboption legtitle(varlab) requests that the label of variable (byvar_ln) be used as the legend title. the default specification is size(thin . On the other hand. spmap: Visualization of spatial data color(colorlist) specifies the list of polyline colors. when suboption by(byvar_ln) is specified.9 Main Option point() suboptions data(point) requests that one or more points defined in Stata dataset point be superimposed onto the base map. On the other hand. leglabel(string) specifies the label to be attached to the single key of the polyline legend when suboption by(byvar_ln) is not specified. The default thickness is thin. When suboption by(byvar_ln) is not specified.. Legend legenda(on|off) specifies whether the polyline legend should be displayed or hidden.. when suboption by(byvar_ln) is specified.9. legshow(numlist) requests that. when suboption by(byvar_ln) is specified.. the list should include only one element. the list should be either composed of kln elements. the list should be composed of kln elements. only the keys included in numlist be displayed in the polyline legend.. The default color is black. A. spmap: Visualization of spatial data A. whereas points associated with negative deviations are represented by hollow markers of the same shape. This is the best choice when there is no need to compare the map at hand with other maps of the same kind.9. psize(relative) is the default and requests that the point markers be drawn using relative minimum and maximum reference values. When this suboption is specified.A. This suboption overrides the default normalization based on range [0. Then. prange(min. ycoord(yvar_pn) specifies the name of the variable containing the y-coordinate of each point. psize(relative|absolute) specifies the reference system for drawing the point markers. max) requests that variable propvar_pn specified in suboption proportional(propvar_pn) be normalized based on range [min. in the first place the values of variable devvar_pn are re-expressed as deviations from the chosen reference value. psize(absolute) requests that the point markers be drawn using absolute minimum and maximum reference values. Option point() suboptions by(byvar_pn) indicates that the points defined in dataset point belong to kpn different groups specified by variable byvar_pn. Deviation deviation(devvar_pn) requests that the point markers be drawn as deviations from a reference value of numeric variable devvar_pn specified in option refval(). in both cases. xcoord(xvar_pn) specifies the name of the variable containing the x-coordinate of each point. refval(mean|median|#) specifies the reference value of variable devvar_pn for computing deviations. Nicola Tommasi 215 . Proportional size proportional(propvar_pn) requests that the point markers be drawn with size proportional to the values taken on by numeric variable propvar_pn. max]. This suboption is incompatible with suboption proportional(propvar_pn). max(propvar_pn)]. This is the best choice when the map at hand is to be compared with other maps of the same kind. refval(mean) is the default and requests that the arithmetic mean of variable devvar_pn be taken as the reference value. refval(median) requests that the median of variable devvar_pn be taken as the reference value. markers are drawn with size proportional to the absolute value of the deviation. points associated with positive deviations are represented by solid markers. )..). The default size is *1. the default specification is ocolor(none . When suboption by(byvar_pn) is not specified. Format size(markersizestyle_list) specifies the list of point marker sizes.. the list should be either composed of kpn elements.. osize(linewidthstyle_list) specifies the list of outline thicknesses of the point markers.). When suboption deviation(devvar_pn) is specified. On the other hand. dmax(#) requests that the point markers be drawn using value #as the maximum absolute deviation of reference. When suboption by(byvar_pn) is not specified...). The default fill color is black. the default specification is fcolor(black . the default specification is size(*1 . when suboption by(byvar_pn) is specified. the list should include only one element. On the other hand. Legend legenda(on|off) specifies whether the point legend should be displayed or hidden. When suboption by(byvar_pn) is not specified. The default shape is o. shape(symbolstyle_list) specifies the list of point marker shapes. the list should include only one element. when suboption by(byvar_pn) is specified. or represented by the name of a predefined color scheme.A.. Option point() suboptions A. the list should be composed of kpn elements. The default outline thickness is thin. or represented by the name of a predefined color scheme. The default outline color is none. the default specification is shape(o . On the other hand..). the list should be composed of kpn elements. the list should be composed of kpl elements. this suboption accepts only solid symbolstyles written in short form: O D T S o d t s. the list should include only one element. ocolor(colorlist) specifies the list of outline colors of the point markers. the list should be either composed of kpn elements. On the other hand. spmap: Visualization of spatial data refval(#) requests that an arbitrary real value #be taken as the reference value. the default specification is osize(thin . 216 Nicola Tommasi . when suboption by(byvar_pn) is specified. when suboption by(byvar_pn) is specified.. refweight(weightvar_pn) requests that the reference value of variable devvar_pn be computed weighting observations by values of variable weightvar_pn. On the other hand... the list should include only one element. when suboption by(byvar_pn) is specified. fcolor(colorlist) specifies the list of fill colors of the point markers. When suboption by(byvar_pn) is not specified. When suboption by(byvar_pn) is not specified. the list should include only one element.9. A. the variables specified in suboption variables(diagvar_dg) are rescaled so that they sum to 1 within each observation. by(byvar_dg) indicates that the diagrams defined in dataset diagram belong to kdg different groups specified by variable byvar_dg.10. legcount requests that the number of points be displayed in the legend. legshow(numlist) requests that. legenda(off) is the default and requests that the point legend be hidden. When option type(pie) is specified. Proportional size Nicola Tommasi 217 . Cleveland 1994) be used. suboption legtitle(varlab) requests that the label of variable byvar_pn be used as the legend title. This suboption is required when suboption legenda(on) is specified and suboption by(byvar_pn) is not specified. Option diagram() suboptions legenda(on) requests that the point legend be displayed. select(command) requests that a given subset of records of dataset diagram be selected using Stata commands keep or drop. spmap: Visualization of spatial data A. ycoord(yvar_dg) specifies the name of the variable containing the y-coordinate of each diagram reference point. legtitle(string) specifies the title of the point legend. type(frect|pie) specifies the type of diagram to be used. This option is active only when just one variable is specified in suboption variables(diagvar_dg).10 Main Option diagram() suboptions data(diagram) requests that one or more diagrams defined in Stata dataset diagram be superimposed onto the base map at given reference points. variables(diagvar_dg) specifies the list of variables to be represented by the diagrams. type(pie) is the default (and the only possibility) when two or more variables are specified in suboption variables(diagvar_dg) and requests that pie charts be used. only the keys included in numlist be displayed in the point legend. when suboption by(byvar_pn) is specified. xcoord(xvar_dg) specifies the name of the variable containing the x-coordinate of each diagram reference point. leglabel(string) specifies the label to be attached to the single key of the point legend when suboption by(byvar_pn) is not specified. When suboption by(byvar_pn) is specified.A. type(frect) is the default when only one variable is specified in suboption variables(diagvar_dg) and requests that framed-rectangle charts (Cleveland and McGill 1984. refval(mean) is the default and requests that the arithmetic mean of variable diagvar_dg be taken as the reference value. max]. fcolor(colorlist) specifies the list of fill colors of the diagrams. the default specification when J=1 is fcolor(black . the list should include only one element. max(diagvar_dg)]. when J>1 variables are specified in suboption variables(diagvar_dg). Framed-rectangle chart range(min. This suboption overrides the default normalization based on range [0. max) requests that variable propvar_dg specified in suboption proportional(propvar_dg) be normalized based on range [min. refcolor(colorstyle) specifies the color of the reference line. refval(#) requests that an arbitrary real value #be taken as the reference value. The default fill color is black. The default is refcolor(black). or represented by the name of a predefined color scheme.5) requests that the default size of all the diagrams be increased by 50%. max) requests that variable diagvar_dg specified in suboption variables(diagvar_dg) be normalized based on range [min. The default is refsize(medium). When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is specified.A. spmap: Visualization of spatial data proportional(propvar_dg) requests that the diagrams be drawn with size proportional to the values taken on by numeric variable propvar_dg..10. This suboption overrides the default normalization based on range [0. Option diagram() suboptions A. When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is not specified. refval(mean|median|#) specifies the reference value of variable diagvar_dg for drawing the reference line. The default is size(1). max]. For example. or represented by the name of a predefined color scheme. prange(min. Finally. the list should be either composed of kdg elements. refval(median) requests that the median of variable diagvar_dg be taken as the reference value. refsize(linewidthstyle) specifies the thickness of the reference line.. refweight(weightvar_dg) requests that the reference value of variable diagvar_dg be computed weighting observations by values of variable weightvar_dg. and the default specification when J>1 is fcolor(red blue orange green lime navy 218 Nicola Tommasi . the list should be either composed of J elements. Format size(#) specifies a multiplier that affects the size of the diagrams. max(propvar_dg)]. size(1.). osize(linewidthstyle_list) specifies the list of outline thicknesses of the diagrams.11 Main Option arrow() suboptions data(arrow) requests that one or more arrows defined in Stata dataset arrow be superimposed onto the base map. when J>1 variables are specified in suboption variables(diagvar_dg). When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is not specified. the list should be either composed of J elements. or represented by the name of a predefined color scheme. Nicola Tommasi 219 . ocolor(colorlist) specifies the list of outline colors of the diagrams. the list should be composed of J elements. When just one variable is specified in suboption variables(diagvar_dg). legenda(on) requests that the diagram legend be displayed.). the list should include only one element. the default specification is ocolor(black . legcount requests that the number of diagrams be displayed in the legend.11. When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is specified. the list should include only one element. the list should be either composed of kdg elements. The default outline thickness is thin. A.. Finally. legenda(off) is the default and requests that the point diagram be hidden.A. Legend legenda(on|off) specifies whether the diagram legend should be displayed or hidden. spmap: Visualization of spatial data A. select(command) requests that a given subset of records of dataset arrow be selected using Stata commands keep or drop. When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is specified. when J>1 variables are specified in suboption variables(diagvar_dg). or represented by the name of a predefined color scheme. The default fill color is black. Finally. suboption legtitle(varlab) requests that the label of variable diagvar_dg be used as the legend title. the list should be composed of kdg elements. the default specification is osize(thin . When just one variable is specified in suboption variables(diagvar_dg) and suboption by(byvar_dg) is not specified.).. legtitle(string) specifies the title of the diagram legend... legshow(numlist) requests that only the keys included in numlist be displayed in the diagram legend. Option arrow() suboptions sienna ltblue cranberry emerald eggshell magenta olive brown yellow dkgreen). When suboption by(byvar_ar) is not specified. When suboption by(byvar_ar) is not specified. the list should include only one element. when suboption by(byvar_ar) is specified. the list should be composed of kar elements.). When suboption by(byvar_ar) is not specified.. On the other hand. The default fill color is black. When suboption by(byvar_ar) is not specified. hocolor(colorlist) specifies the list of arrowhead outline colors.64 . the list should include only one element.).. When suboption by(byvar_ar) is not specified. On the other hand.64.). when suboption by(byvar_ar) is specified. the list should include only one element. On the other hand.. or represented by the name of a predefined color scheme.. Format direction(directionstyle_list) specifies the list of arrow directions.. When suboption by(byvar_ar) is not specified.. the list should include only one element. the list should include only one element. the default specification is hsize(1. the list should be composed of kar elements.5 . where directionstyle is one of the following: 1 (monodirectional arrow). The default outline color is black. the list should include only one element.. hangle(anglestyle_list) specifies the list of arrowhead angles. On the other hand.). The default size is 1. Option arrow() suboptions A.A. lcolor(colorlist) specifies the list of arrow shaft line colors. the list should be either composed of kar elements. the list should include only one element.5 . 2 (bidirectional arrow).. On the other hand.). the list should include only one element. when suboption by(byvar_ar) is specified..). When suboption by(byvar_ar) is not specified. the list should be composed of kar elements. 220 Nicola Tommasi . the list should be composed of kar elements. when suboption by(byvar_ar) is specified. On the other hand.. hbarbsize(markersizestyle_list) specifies the list of sizes of the filled portion of arrowheads.. or represented by the name of a predefined color scheme... hosize(linewidthstyle_list) specifies the list of arrowhead outline thicknesses.). The default angle is 28. The default size is 1. When suboption by(byvar_ar) is not specified.. the default specification is hbarbsize(1. the list should be composed of kar elements.5. when suboption by(byvar_ar) is specified.11. the default specification is direction(1 . the list should be either composed of kar elements. when suboption by(byvar_ar) is specified. hfcolor(colorlist) specifies the list of arrowhead fill colors. the default specification is hocolor(black . The default direction is 1. the default specification is hfcolor(black . The default outline thickness is thin. On the other hand. the default specification is hosize(thin .5. hsize(markersizestyle_list) specifies the list of arrowhead sizes. the default specification is hangle(28. spmap: Visualization of spatial data by(byvar_ar) indicates that the arrows defined in dataset arrow belong to kar different groups specified by variable byvar_ar. when suboption by(byvar_ar) is specified. the default specification is lcolor(black . the default specification is lpattern(solid . Legend legenda(on|off) specifies whether the arrow legend should be displayed or hidden. legshow(numlist) requests that... The default thickness is thin. When suboption by(byvar_ar) is not specified. the list should be either composed of kar elements. On the other hand. suboption legtitle(varlab) requests that the label of variable byvar_ar be used as the legend title. lsize(linewidthstyle_list) specifies the list of arrow shaft line thicknesses.. lpattern(linepatternstyle_list) specifies the list of arrow shaft line patterns.. A. legenda(on) requests that the arrow legend be displayed. select(command) requests that a given subset of records of dataset label be selected using Stata commands keep or drop.12 Main Option label() suboptions data(label) requests that one or more labels defined in Stata dataset label be superimposed onto the base map at given reference points. when suboption by(byvar_ar) is specified. the list should include only one element.).. Nicola Tommasi 221 . the default specification is lsize(thin . leglabel(string) specifies the label to be attached to the single key of the arrow legend when suboption by(byvar_ar) is not specified. The default pattern is solid. the list should include only one element. legtitle(string) specifies the title of the arrow legend. On the other hand.A. the list should be composed of kar elements. When suboption by(byvar_ar) is not specified. or represented by the name of a predefined color scheme. Option label() suboptions On the other hand. when suboption by(byvar_ar) is specified. legenda(off) is the default and requests that the arrow legend be hidden. legcount requests that the number of arrows be displayed in the legend. only the keys included in numlist be displayed in the arrow legend.). when suboption by(byvar_ar) is specified. spmap: Visualization of spatial data A.12.. This suboption is required when suboption legenda(on) is specified and suboption by(byvar_ar) is not specified. by(byvar_lb) indicates that the labels defined in dataset label belong to klb different groups specified by variable byvar_lb. The default color is black. the list should be composed of kar elements. when suboption by(byvar_ar) is specified.). When suboption by(byvar_ar) is specified. . The default label position is 0. size(textsizestyle_list) specifies the list of label sizes. color(colorlist) specifies the list of label colors. On the other hand. the list should include only one element. the default specification is gap(*1 . when suboption by(byvar_lb) is specified. angle(anglestyle_list) specifies the list of label angles. On the other hand. The default label gap is *1. the default specification is angle(horizontal . the list should include only one element.A....). The default label color is black.. when suboption by(byvar_lb) is specified. the default specification is color(black . When suboption by(byvar_lb) is not specified. when suboption by(byvar_lb) is specified.. When suboption by(byvar_lb) is not specified.. The default label lenght is 12.). the list should be composed of klb elements.. The default label angle is horizontal. the default specification is length(12 . the default specification is position(0 .. On the other hand. when suboption by(byvar_lb) is specified.). gap(relativesize_list) specifies the list of gaps between labels and their reference point.12.). the list should be composed of klb elements. when suboption by(byvar_lb) is specified. the list should include only one element. position(clockpos_list) specifies the list of label positions relative to their reference point. On the other hand. the list should include only one element. the list should include only one element. the list should be composed of klb elements. the list should be composed of klb elements.. the list should be either composed of klb elements. label(labvar_lb) specifies the name of the variable containing the labels. the list should be composed of klb elements.. or represented by the name of a predefined color scheme. where lengthstyle is any integer greater than 0 indicating the maximum number of characters of the labels. On the other hand. When suboption by(byvar_lb) is not specified. the list should include only one element.). ycoord(yvar_lb) specifies the name of the variable containing the y-coordinate of each label reference point. 222 Nicola Tommasi . the default specification is size(*1 . When suboption by(byvar_lb) is not specified.). On the other hand. The default label size is *1. When suboption by(byvar_lb) is not specified. when suboption by(byvar_lb) is specified. spmap: Visualization of spatial data xcoord(xvar_lb) specifies the name of the variable containing the x-coordinate of each label reference point. Option label() suboptions A.. When suboption by(byvar_lb) is not specified. Format length(lengthstyle_list) specifies the list of label lengths. For example. if. size(1. scale(#) specifies the ratio of scale bar units to map units.A. expressed as percentage of half the total height of the plot region. The default is label(Units). suppose map coordinates are expressed in meters: if the scale bar length is to be expressed in meters too. on the other hand. then the ratio of scale bar units to map units will be 1/1000. A. The default is size(1). whereas negative values request that the distance be computed from the center to the left. ypos(#) specifies the distance of the scale bar from the center of the plot region on the vertical axis. then the ratio of scale bar units to map units will be 1. Positive values request that the distance be computed from the center to the right. whereas negative values request that the distance be computed from the center to the bottom.13. osize(linewidthstyle) specifies the outline thickness of the scale bar.13 Main Option scalebar() suboptions units(#) specifies the length of the scale bar expressed in arbitrary units. Positive values request that the distance be computed from the center to the top. ocolor(colorstyle) specifies the outline color of the scale bar. The default is tcolor(black). expressed as percentage of half the total width of the plot region. label(string) specifies the descriptive label of the scale bar. The default is tsize(*1). Format size(#) specifies a multiplier that affects the height of the scale bar. The default is fcolor(black). The default is ypos(-110). Option scalebar() suboptions A. The default is scale(1). For example. The default is osize(vthin). The default is xpos(0). tsize(textsizestyle) specifies the size of the scale bar text. The default is ocolor(black). fcolor(colorstyle) specifies the fill color of the scale bar. spmap: Visualization of spatial data A.5) requests that the default height of the scale bar be increased by 50%. tcolor(colorstyle) specifies the color of the scale bar text. xpos(#) specifies the distance of the scale bar from the center of the plot region on the horizontal axis.14 Main Graph options Nicola Tommasi 223 . the scale bar length is to be expressed in kilometers. scheme_option. These include added_line_options. name(). all the formatting presets and restrictions built in spmap be ignored. twoway_options include all the options documented in [G] twoway_options. and region_options. Alternatively. legend_options.A. except for axis_options.14. when drawing the graph. By default. spmap presets the values of some graph options and restricts the use of some others. By default. the base map is drawn before any other spatial object. aspect_option. By specifying option freestyle. depending on the aspect ratio of the map. 224 Nicola Tommasi . title_options. the user loses this feature but gains full control over most of the graph formatting options. added_text_options. as well as options nodraw. and advanced_options. so as to produce a “nice” graph automatically. spmap: Visualization of spatial data polyfirst requests that the supplementary polygons specified in option polygon() be drawn before the base map. by_option. The default ranges from 1 to 4. the height and width of the graph available area can be set using the standard xsize() and ysize() options. and saving(). Graph options A. gsize(#) specifies the length (in inches) of the shortest side of the graph available area (the lenght of the longest side is set internally by spmap to minimize the amount of blank space around the map). freestyle requests that. 14. spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates.1: Choropleth maps Nicola Tommasi 225 . Graph options Figura A.dta". id(id). A.A. 2: Choropleth maps 226 Nicola Tommasi .14.dta". Catholics without reservations".8)) subtitle("Italy.A. size(*0. spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates. 1994-98" " ". size(*0. Figura A.8)). id(id) title("Pct. Graph options A. A. Figura A. spmap: Visualization of spatial data A.8)) subtitle("Italy.14.3: Choropleth maps Nicola Tommasi 227 . Graph options spmap relig1 using "Italy-RegionsCoordinates.dta". id(id) title("Pct. 1994-98" " ".8)) legstyle(2) legend(region(lcolor(black))). size(*0. Catholics without reservations". size(*0. Figura A.dta". Catholics without reservations".8)) legstyle(2) legend(region(lcolor(black))).8)) subtitle("Italy. size(*0.A.14. 1994-98" " ". Graph options A. id(id) ndfcolor(red) title("Pct.4: Choropleth maps 228 Nicola Tommasi . spmap: Visualization of spatial data spmap relig1m using "Italy-RegionsCoordinates. size(*0. 14. size(*0. 1994-98" " ". Figura A.8)) legstyle(2) legend(region(lcolor(black))).8)) subtitle("Italy.dta". size(*0. Catholics without reservations". Graph options spmap relig1 using "Italy-RegionsCoordinates. id(id) clmethod(eqint) clnumber(5) eirange(20 70) title("Pct.A. spmap: Visualization of spatial data A.5: Choropleth maps Nicola Tommasi 229 . Catholics without reservations". spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates..6: Choropleth maps 230 Nicola Tommasi . 1994-98" " ". size(*0. id(id) clnumber(20) fcolor(Reds2) ocolor(none .A.dta". Figura A.14.8)) legstyle(3).) title("Pct.8)) subtitle("Italy. size(*0. Graph options A. 7: Choropleth maps Nicola Tommasi 231 . Figura A. Graph options spmap relig1 using "Italy-RegionsCoordinates.14.A. 1994-98" " ". spmap: Visualization of spatial data A. size(*0.8)) subtitle("Italy. Catholics without reservations".8)) legstyle(3) legend(ring(1) position(3))..) title("Pct.dta". size(*0. id(id) clnumber(20) fcolor(Reds2) ocolor(none . Figura A..14.8)) legstyle(3) legend(ring(1) position(3)) plotregion(margin(vlarge)).A.8)) subtitle("Italy. size(*0.8: Choropleth maps 232 Nicola Tommasi . 1994-98" " ".dta". Graph options A. Catholics without reservations". id(id) clnumber(20) fcolor(Reds2) ocolor(none . spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates. size(*0.) title("Pct. 8)) subtitle("Italy. 1994-98" " ". size(*0. size(*0. Catholics without reservations". spmap: Visualization of spatial data A.14.) title("Pct.dta". Figura A.A. id(id) clnumber(20) fcolor(Reds2) ocolor(none .9: Choropleth maps Nicola Tommasi 233 .8)) legstyle(3) legend(ring(1) position(3)) plotregion(icolor(stone)) graphregion(icolor(stone)).. Graph options spmap relig1 using "Italy-RegionsCoordinates. 8)) subtitle("Italy..) osize(medthin . size(*0. spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates. Catholics without reservations".8)) legstyle(3) legend(ring(1) position(3)) plotregion(icolor(stone)) graphregion(icolor(stone)). id(id) clnumber(20) fcolor(Greens2) ocolor(white .. Figura A.A.10: Choropleth maps 234 Nicola Tommasi .dta". 1994-98" " ". size(*0. Graph options A.) title("Pct.14. Figura A.dta". id(id) clnumber(20) fcolor(Greens2) ocolor(white . Graph options spmap relig1 using "Italy-RegionsCoordinates..14.8)) subtitle("Italy.11: Choropleth maps Nicola Tommasi 235 . size(*0.) osize(thin .A.dta") ocolor(white) osize(medthick)).) title("Pct. spmap: Visualization of spatial data A.. size(*0. Catholics without reservations".8)) legstyle(3) legend(ring(1) position(3)) plotregion(icolor(stone)) graphregion(icolor(stone)) polygon(data("Italy-Highlights. 1994-98" " ". Catholics without reservations".8)) legstyle(3) legend(ring(1) position(3)) plotregion(icolor(stone)) graphregion(icolor(stone)) scalebar(units(500) scale(1/1000) xpos(-100) label(Kilometers)). size(*0.dta".12: Choropleth maps 236 Nicola Tommasi . size(*0.) osize(medthin .) title("Pct. id(id) clnumber(20) fcolor(Greens2) ocolor(white ..8)) subtitle("Italy. 1994-98" " ". spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates..A. Graph options A.14. Figura A. 8)) subtitle("Italy. Figura A. Catholics without reservations". spmap: Visualization of spatial data A. size(*0.A.dta") xcoord(xcoord) ycoord(ycoord) proportional(relig1) fcolor(red) size(*1. Graph options spmap using "Italy-OutlineCoordinates. size(*0.8)) point(data("Italy-RegionsData.5)).dta". 1994-98" " ".13: Proportional symbol maps Nicola Tommasi 237 .14. id(id) title("Pct. A.14: Proportional symbol maps 238 Nicola Tommasi . id(id) title("Pct. Graph options A.8)) point(data("Italy-RegionsData.5) shape(s)).8)) subtitle("Italy.dta".dta") xcoord(xcoord) ycoord(ycoord) proportional(relig1) fcolor(red) size(*1. size(*0. spmap: Visualization of spatial data spmap using "Italy-OutlineCoordinates. Figura A. size(*0. Catholics without reservations". 1994-98" " ".14. dta".dta") xcoord(xcoord) ycoord(ycoord) label(relig1) color(white) size(*0.8)) point(data("Italy-RegionsData. size(*0. 1994-98" " ". Graph options spmap using "Italy-OutlineCoordinates.14.15: Proportional symbol maps Nicola Tommasi 239 . size(*0. id(id) title("Pct. spmap: Visualization of spatial data A.7)). Catholics without reservations".dta") xcoord(xcoord) ycoord(ycoord) proportional(relig1) fcolor(red) ocolor(white) size(*3)) label(data("Italy-RegionsData.8)) subtitle("Italy.A. Figura A. Graph options A.dta") xcoord(xcoord) ycoord(ycoord) deviation(relig1) fcolor(red) dmax(30) legenda(on) leglabel(Deviation from the mean)).14. size(*0. 1994-98" " ". Figura A.8)) subtitle("Italy. Catholics without reservations".A. size(*0. spmap: Visualization of spatial data spmap using "Italy-OutlineCoordinates.8)) point(data("Italy-RegionsData. id(id) title("Pct.16: Proportional symbol maps 240 Nicola Tommasi .dta". 14. replace) nodraw. size(*0. size(*0. graph combine g1 g2 g3. replace) nodraw.A.6) plotregion(margin(medsmall) style(none)) graphregion(margin(zero) style(none)) scheme(s1mono). Figura A.6)) plotregion(margin(medium) color(stone)) graphregion(fcolor(stone) lcolor(black)) name(g3. Graph options spmap using "Italy-OutlineCoordinates. size(*0. spmap using "Italy-OutlineCoordinates.9) box bexpand span margin(medsmall) fcolor(sand)) subtitle(" ") point(data("Italy-RegionsData.17: Proportional symbol maps Nicola Tommasi 241 . replace) nodraw.6)) plotregion(margin(medium) color(stone)) graphregion(fcolor(stone) lcolor(black)) name(g1.dta". 1994-98" " ") xsize(5) ysize(2.dta".dta") xcoord(xcoord) ycoord(ycoord) proportional(relig1) prange(0 70) psize(absolute) fcolor(red) ocolor(white) size(*0. id(id) fcolor(white) title("Other".6)) plotregion(margin(medium) color(stone)) graphregion(fcolor(stone) lcolor(black)) name(g2.9) box bexpand span margin(medsmall) fcolor(sand)) subtitle(" ") point(data("Italy-RegionsData.dta") xcoord(xcoord) ycoord(ycoord) proportional(relig3) prange(0 70) psize(absolute) fcolor(blue) ocolor(white) size(*0.9) box bexpand span margin(medsmall) fcolor(sand)) subtitle(" ") point(data("Italy-RegionsData. rows(1) title("Religious orientation") subtitle("Italy. spmap: Visualization of spatial data A. spmap using "Italy-OutlineCoordinates. id(id) fcolor(white) title("Catholics with reservations".dta". id(id) fcolor(white) title("Catholics without reservations".dta") xcoord(xcoord) ycoord(ycoord) proportional(relig2) prange(0 70) psize(absolute) fcolor(green) ocolor(white) size(*0. 18: Other maps 242 Nicola Tommasi . Graph options A. spmap: Visualization of spatial data spmap using "Italy-RegionsCoordinates. id(id) fcolor(stone) title("Pct.A. Catholics without reservations".dta".8)) diagram(variable(relig1) range(0 100) refweight(pop98) xcoord(xcoord) ycoord(ycoord) fcolor(red)). size(*0. size(*0. 1994-98" " ".14. Figura A.8)) subtitle("Italy. id(id) fcolor(stone) diagram(variable(relig1 relig2 relig3) proportional(fortell) xcoord(xcoord) ycoord(ycoord) legenda(on)) legend(title("Religious orientation".dta".14. Graph options spmap using "Italy-RegionsCoordinates. Figura A.19: Other maps Nicola Tommasi 243 .A. size(*0. spmap: Visualization of spatial data A.75)).5) bexpand justification(left))) note(" " "NOTE: Chart size proportional to number of fortune tellers per million population". size(*0. spmap: Visualization of spatial data spmap relig1 using "Italy-RegionsCoordinates. Catholics without reservations". 1994-98" " ".8)) subtitle("Italy.14. size(*0.A.20: Other maps 244 Nicola Tommasi .75)). Graph options A.8)) area(pop98) note(" " "NOTE: Region size proportional to population".dta". size(*0. id(id) clmethod(stdev) clnumber(5) title("Pct. Figura A. size(*0. Catholics without reservations". size(*0. Figura A. Graph options spmap relig1 using "Italy-RegionsCoordinates. id(id) clmethod(stdev) clnumber(5) title("Pct. spmap: Visualization of spatial data A.dta".75)).8)) area(pop98) map("Italy-OutlineCoordinates. 1994-98" " ".14. size(*0.8)) subtitle("Italy. size(*0.A.dta") mfcolor(stone) note(" " "NOTE: Region size proportional to population".21: Other maps Nicola Tommasi 245 . 14. id(id) fc(bluishgray) ocolor(none) title("Provincial capitals" " ". size(*0. Figura A. Graph options A. spmap: Visualization of spatial data spmap using "Italy-OutlineCoordinates.dta".dta") xcoord(xcoord) ycoord(ycoord) fcolor(emerald)) plotregion(margin(medium) icolor(dknavy) color(dknavy)) graphregion(icolor(dknavy) color(dknavy)).A.22: Other maps 246 Nicola Tommasi .9) color(white)) point(data("Italy-Capitals. 23: Other maps Nicola Tommasi 247 .dta".) legenda(on)) legend(title("Population 1998". Figura A. id(id) fc(bluishgray) ocolor(none) title("Provincial capitals" " ".dta") xcoord(xcoord) ycoord(ycoord) by(size) fcolor(orange red maroon) shape(s . spmap: Visualization of spatial data A. size(*0.9) color(white)) point(data("Italy-Capitals. size(*0. Graph options spmap using "Italy-OutlineCoordinates.5) bexpand justification(left)) region(lcolor(black) fcolor(white)) position(2)) plotregion(margin(medium) icolor(dknavy) color(dknavy)) graphregion(icolor(dknavy) color(dknavy))..14.A. A. size(*0.dta". Graph options A.dta") color(blue) ). spmap: Visualization of spatial data spmap using "Italy-OutlineCoordinates.9)) polygon(data("Italy-Lakes.14.dta") fcolor(blue) ocolor(blue)) line(data("Italy-Rivers. Figura A. id(id) fc(sand) title("Main lakes and rivers" " ".24: Other maps 248 Nicola Tommasi . . spmap relig1 using "Italy-RegionsCoordinates. size(*0.8)) polygon(data("Italy-OutlineCoordinates. Catholics without reservations".dta" if zone==1. spmap: Visualization of spatial data A.dta") fcolor(gs12) ocolor(white) osize(medthin)) polyfirst. id(id) fcolor(Blues2) ocolor(white . size(*0.14.) osize(medthin .) title("Pct.A. Figura A.dta".25: Other maps Nicola Tommasi 249 . 1994-98" " ".8)) subtitle("Northern Italy.. clear. Graph options use "Italy-RegionsData. 9)) polygon(data("Italy-Lakes. clear.26: Other maps 250 Nicola Tommasi .dta". spmap using "Italy-OutlineCoordinates. spmap: Visualization of spatial data use "Italy-OutlineData. id(id) fc(sand) title("Main lakes and rivers" " ". size(*0. Figura A.dta".A.14.dta") fcolor(blue) ocolor(blue)) line(data("Italy-Rivers.4) xlab(400000 900000 1400000.dta") color(blue) ) freestyle aspect(1. Graph options A. grid). and the participants in the 3rd German Stata Users Group Meeting: many thanks to all of them.15. I also thank Kevin Crow. the participants in the 1st Italian Stata Users Group Meeting. Ian Evans. the predecessor of spmap. The development of spmap benefitted from suggestions by Joao Pedro Azevedo. Derek Wagner.15 Acknowledgments I wish to thank Nick Cox. Kevin Crow. and Scott Merryman for promoting tmap by making available to the Stata community several helpful resources related to the program. Kit Baum. Acknowledgments A. Daniele Checchi. Bill Gould. Ulrich Kohler. spmap: Visualization of spatial data A. Friedrich Huebler. Laszlo Kardos. Scott Merryman. and Vince Wiggins for helping set up tmap (Pisati 2004). David Drukker. Nicola Tommasi 251 .A. Friedrich Huebler. 15. spmap: Visualization of spatial data 252 Nicola Tommasi .A. Acknowledgments A. [9] Slocum.P. G. [8] Pisati.A. F. The selection of class intervals. 55-60. Thematic Cartography and Geographic Visualization. 2005. M..W. 1984. Kessler. Summit: Hobart Press.A. Journal of the American Statistical Association 79: 531-554. and R. 253 .. and D. 2003. McMaster. Hatchard. Upper Saddle River: Pearson Prentice Hall. Xiao.A.Bibliografia [1] Armstrong.A. W. W. Harrower.. N. The Professional Geographer 28: 371-380. Alexandria VA. The Stata Journal 4: 361-378.S. The Elements of Graphing Data. [4] Cleveland. 1999. 1976. [3] Brewer. Color use guidelines for data representation. experimentation. C. [7] Olson.M. Proceedings of the Section on Statistical Graphics. 1977. [5] Cleveland. 2nd ed. Transactions of the Institute of British Geographers 2: 98-124. Graphical perception: Theory. Using genetic algorithms to create multicriteria class intervals for choropleth maps. Noncontiguous area cartograms. T.C and H. [2] Brewer. 2003. C. M. Bennett. Cartography and Geographic Information Science 52: 5-32. 2004. Howard. J.B.A. McGill. ColorBrewer in print: A catalog of color schemes for maps. and M. Annals of the Association of American Geographers 93: 595-623.S.S. R. American Statistical Association. and application to the development of graphical methods. [6] Evans. 1994. Simple thematic mapping. I..H. . 6 ivreg2 Mark E Schaffer.3 mfx2 Richard Williams 26 183.5 estout Ben Jann 4 763.7 levinlin Fabian Bornhorst.0 ranktest Frank Kleibergen. Mike Bradburn.2 hprescott Christopher F Baum 30 169. n(. Jenkins 21 190.3 shp2dta Kevin Crow 11 335.7 overid Steven Stillman. Nicholas J.3 xml_tab Michael Lokshin. Roger Harbord.7 ivendog Mark E Schaffer.5 cmp David Roodman 19 205.7 oaxaca Ben Jann 18 210.0 outreg John Luke Gallup 5 748.0 mmerge Jeroen Weesie 27 181.) Packages at SSC Jul2008 Rank # hits Package Author(s) ---------------------------------------------------------------------1 1519. Doug Altman.0 tabout Ian Watson 12 323. ssc whatshot. Cox 25 183. Edwin Leuven 6 744.2 xtivreg2 Mark E Schaffer 9 386.7 whitetst Christopher F Baum. Christopher F Baum 255 .4 ice Patrick Royston 23 189. Christopher F Baum 32 166. Christopher F Baum 22 190. Zurab Sajaia 17 253. Silvia Montoya 24 184.8 ginidesc Roger Aliaga. Cox 28 177.7 xtabond2 David Roodman 7 457. Thomas Steichen.0 gllamm Sophia Rabe-Hesketh 8 393. Steven Stillman.8 spmap Maurizio Pisati 13 308. Fabian Bornhorst 29 172. Christopher F Baum.8 outtable Joao Pedro Azevedo. Jon Deeks. Mark E Schaffer 10 350. Christopher F Baum.5 egenmore Nicholas J. Mark E Schaffer 14 282. Jonathan Sterne 15 282.1 outreg2 Roy Wada 2 852.1 metan Ross Harris.7 winsor Nicholas J.0 mif2dta Maurizio Pisati 16 258.Appendice B Lista pacchetti aggiuntivi .2 ineqdeco Stephen P. Cox 20 193. Steven Stillman 3 821. Vince Wiggins.0 ipshin Christopher F Baum.7 elapse Fred Zimmerman 31 168.8 psmatch2 Barbara Sianesi. 7 omodel kdens2 oaxaca8 grqreg tabplot _gwtmean surface inequal7 johans raschtestv7 metagraph 256 Nicola Tommasi . John B.2 106.3 100.7 78.0 100.5 81.7 105.3 104.0 83.7 101.8 128. Scott Long.0 133. Sorensen Roger Newson Nicholas J. Jenkins Adrian Mander Dan Blanchette David M. Damiaan Persyn Mark E Schaffer.0 122. Imbens Dan Blanchette Dan Blanchette Philip Ryan Jesper B. Carlin. Buis Roger Harbord.0 88. Jeremy Freese Maurizio Pisati Ben Jann John C. Vince Wiggins Antoine Terracol David Roodman Ian Watson Austin Nichols Christopher F Baum. Alberto Abadie. Vince Wiggins Nicolas Couderc Mark W.0 109. Cox.7 120. Cox. Steven Stillman.0 85.0 96.7 105.0 93.0 141.3 88.0 99. Galati.2 95. Christopher F Baum Makoto Shimizu.7 90.0 117. Charles Morris.5 81.3 101. Guido W.7 102. Edward F. Christopher F Baum Christopher F Baum Christopher F Baum Christopher F Baum Thomas Steichen Daniel Hoechle Mark E Schaffer.3 141.3 96.0 89.5 158.8 89.5 101. Steven Stillman David Roodman J.7 89. Cox.0 110. Jane Leber Herr.0 80. Patrick Royston Nicholas J.3 142.7 84. Cox Ben Jann Scott Merryman Nicholas J.8 78.3 88.3 82. Toru Taniuchi Rory Wolfe Christopher F Baum Ben Jann Joao Pedro Azevedo Nicholas J.8 93.7 83. Thomas Steichen Tony Brady Roger Newson Christopher F Baum Ben Jann Richard Williams Christopher F Baum. Nicholas J.3 114.7 92. Frank. Salgado-Ugarte.3 126.7 77. Blackburne III Nicholas J.7 120. Lista pacchetti aggiuntivi 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 162. Christopher F Baum Stephen P.7 93.2 81.B.0 114.7 78.7 77. Isaias H. Cox Tamas Bartus Christopher F Baum Christopher F Baum Maarten L.0 outtex xtwest xtoverid abar fitstat tmap moremata mim tsspell fre xtfisher tableplot margeff xttest2 zandrews ftest metareg unique parmest xttest3 fairlie gologit2 bpagan sutex ghk2 latab rd tsmktim corrtex xtpmg mvsumm ineqdec0 batplot shortdir nnmatch confirmdir tmpdir tab3way stpiece somersd statsmat hadrilm rollreg madfuller metabias xtfmb ivreg28 kernreg2 Antoine Terracol Joakim Westerlund.9 88. Drukker.0 107. Cox David Kantor Adrian Mander Philippe Van Kerm Ken Heinecke.0 83. Patrick Joly Jean-Benoit Hardouin Adrian Mander 81 82 83 84 85 86 87 88 89 90 91 82. 3 57. Stephen P.5 61.5 59.9 67. Jenkins Markus Gangl Ben Jann Arne Risa Hole Paul Seed Giovanni S. Christopher F Baum Fred Zimmerman Amine Ouazad Glenn Hoetker Thomas Steichen Christopher F Baum Patrick Joly Jonathan Sterne Jean-Benoit Hardouin Nicholas J.3 72.7 72.3 55.3 64.7 povdeco rbounds center mixlogit xtgraph xtlsdvc mvcorr usesas nnest raschtest decomp pescadf onespell savasas ainequal vececm glcurve firthlogit fmm evhistplot matmap wntstmvq switchr a2reg mkcorr metaninf vecar varlag metafunnel genscore tab_chi geekel2d samplepps grubbs heckman2 kdens triprobit xtcsd oglm levels newey2 nharvey cusum6 xtmis omninorm nbercycles decompose coldiag2 kpss mat2txt catplot dfgls gausshermite ivhettest estout1 gcause gsample cdfplot gammasym mvprobit bgtest clemao_io matsave fbar fsum Stephen P. Jenkins Joseph Coveney Partha Deb Henrik Stovring Nicholas J.7 55.B. De Hoyos Richard Williams Nicholas J.5 66.0 62.1 68.9 59.5 65. Nicholas J. Cox David Roodman Christopher F Baum.3 56. Jenkins Nicolas Couderc Vince Wiggins Ben Jann Antoine Terracol Vasilis Sarafidis.5 65.7 62.7 56.0 76.3 57. Bruno Christopher F Baum.9 62.3 68.3 74.7 56.F.0 55. Cox Christopher F Baum.3 64. Cox Fred Wolfe Nicola Tommasi 257 .7 54.5 64.4 72. Fabian Bornhorst Christopher F Baum Minh Nguyen Christopher F Baum.0 66. Ben Jann Nicholas J. R.2 74.6 70.0 58.2 63. Christopher F Baum Christopher F Baum Marc-Andreas Muendler Nicholas J.7 64.3 56.0 55.0 72.0 64. Nicholas J.5 65. E.0 67.7 56.0 65. Cox Christopher F Baum Ben Jann John Hendrickx Christopher F Baum Michael Blasnik.5 63.0 67. Cox Richard Sperling.3 63. Lista pacchetti aggiuntivi 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 77.7 72.9 66.2 70.3 70.5 59.3 57.0 63.5 77. Cox Dan Blanchette Gregorio Impavido Jean-Benoit Hardouin Ian Watson Piotr Lewandowski Christopher F Baum Dan Blanchette Joao Pedro Azevedo Patrick Joly Philippe Van Kerm.2 56.3 72.4 75. Jenkins. Cox Jean-Benoit Hardouin Stephen P.7 67.7 55.4 55.7 63.3 64. Lorenzo Cappellari Vince Wiggins. Richard Sperling Jean-Benoit Hardouin Mark E Schaffer Ben Jann Patrick Joly Ben Jann Adrian Mander Jean-Benoit Hardouin Stephen P.0 54.0 75. Cox Isaias H. Jenkins strsrcs C. Papps tabexport Nicholas J.3 48.3 43. xtscc Daniel Hoechle bioprobit Zurab Sajaia charlson Vicki Stagg tabstatmat Austin Nichols meta_lr Aijing Shang probexog-tobexog Christopher F Baum sq Magdalena Luniak.7 45.0 42.0 46. Nicola Orsini.3 51. Gregorio Impavido xtpqml Tim Simcoe pantest2 Nicholas Oulton est2tex Marc-Andreas Muendler meoprobit Thomas Cornelissen reformat Tony Brady bic Paul Millar concord Thomas Steichen.3 42. Nicholas J. Sky David.B.3 52.7 44.3 53.7 53. Dupont.0 49.3 53.0 45. Jenkins outsum Kerry L. Christopher F Baum mylabels Nicholas J.0 48.0 44. W. Toru Taniuchi.3 49.3 49. Jenkins Vince Wiggins Patrick Royston Patrick Royston Joao Pedro Azevedo Ben Jann Gary Longton. Cox ivpois Austin Nichols eclplot Roger Newson ivprob-ivtobit6 Joseph Harkness bugsdat Adrian Mander poverty Philippe Van Kerm sumdist Stephen P. Thomas Steichen todate Nicholas J. P.3 52. Nicholas J.7 54.1 53. Lista pacchetti aggiuntivi 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 54.7 50.7 42.3 49.0 47. Christian Brzinsky-Fay duncan Ben Jann 258 Nicola Tommasi .0 47. Cox vecar6 Patrick Joly.7 50.3 52.3 48.3 53. Jr. Nicola Orsini. Xavi Ramos panelunit Christopher F Baum panelauto Christopher F Baum qsim Fred Wolfe dups Nicholas J. Cox.7 47.5 48.3 48.4 52. Ulrich Kohler. Julian Higgins.3 45. Rino Bellocco hshaz Stephen P.8 52.0 pgmhaz8 dtobit2 ptrend byvar dfl anogi distinct kernreg1 Stephen P. Cox semean Christopher F Baum ralloc Philip Ryan goprobit Stefan Boes heterogi Matteo Bottai. Cox renames Nicholas J.3 53.8 47.1 42.3 43.1 43.3 46. Makoto Shimizu. Salgado-Ugarte. Cox bitobit Daniel Lawson rc_spline William D. Nelson hausman Jeroen Weesie desmat John Hendrickx fastgini Zurab Sajaia glst Sander Greenland.6 49.3 48.7 53.7 48.3 47. Scott Merryman stcompet Enzo Coviello dmexogxt Christopher F Baum.1 50. Michael Lokshin stkerhaz Enzo Coviello sensatt Tommaso Nannicini jb6 J.2 50. Cox.3 49. Iain Buchan ivreset Mark E Schaffer adoedit Dan Blanchette metatrim Thomas Steichen movestay Zurab Sajaia.3 42.0 53. Steven Stillman makematrix Nicholas J.0 43.3 53.8 52.3 52.3 50. Dale Plummer.2 51.0 52.0 54. 0 41. Cox descogini Alejandro Lopez-Feldman kr20 Herve M.3 41.3 39. Caci metagen Pantelis Bagos matvsort Nicholas J. Joao Pedro Azevedo tscollap Christopher F Baum dmariano Christopher F Baum durbinh Christopher F Baum. Cox hireg Paul H.3 38.3 37. Cox dologx Roger Newson crtest Joao Pedro Azevedo lomackinlay Christopher F Baum metandi Roger Harbord egen_inequal Michael Lokshin.0 38.0 ivgmm0 David M.8 41. Garrett radar Adrian Mander historaj Rajesh Tharyan ipf Adrian Mander stcmd Roger Newson regoprob Stefan Boes changemean Samuel Franco.3 38. Sky David alorenz Samuel Franco. Adrian Mander iia Jeroen Weesie dolog Roger Newson markov Nicholas J.7 38.7 39.3 41.3 37. Vince Wiggins corrtable Nicholas J.B.3 38. Martin Biewen collapseunique David Kantor kwallis2 Herve M. Caci mlcoint Ken Heinecke predxcat Joanne M.7 36.7 38.5 40.0 40. Zurab Sajaia gdecomp Tamas Bartus hansen2 Nicholas J. Cox mktab Nick Winter parplot Nicholas J.2 41.0 41. Zhiqiang Wang cf3 Thomas Steichen hbar Nicholas J.7 36.7 39.3 40.7 36. Lauritsen sampsi_mcc Adrian Mander denton Christopher F Baum hplot Nicholas J. Lista pacchetti aggiuntivi 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 42. Simons tablemat Amadou Bassirou Diallo triplot Nicholas J.7 41.5 40.0 42.3 39. Jenkins labutil Nicholas J.0 41.0 37.3 38. Cox pyramid Jens M. Cox tolower Nicholas J.2 40. Cox msp Jean-Benoit Hardouin bcoeff Nicholas J.7 37.7 38. Alfonso Miranda hotdeck David Clayton. Cox valuesof Ben Jann varlab Patrick Joly nmissing Nicholas J.0 39. Cox coldiag Joseph Harkness catenate Nicholas J. Cox mcenter Jeffrey S.1 40.8 37.5 36.0 36.3 40.0 36. Cox spsurv Stephen P.0 37. Katherine Smith svygei_svyatk Stephen P.3 41. Drukker.7 40. Zurab Sajaia lrplot Jan Brogger Nicola Tommasi 259 . Christopher F Baum keyplot Nicholas J.3 39.0 42. Joao Pedro Azevedo ivvif David Roodman nearmrg Michael Blasnik. Bern jb Gregorio Impavido.0 36.0 42.5 38.7 39.3 39.0 39.0 39. Cox lookfor_all Michael Lokshin.3 40.0 39.7 36. Cox cart Wim van Putten pcorr2 Richard Williams arimafit Christopher F Baum sxpose Nicholas J. J.7 37.4 39.0 38.0 38. Cox ssm Sophia Rabe-Hesketh.7 38.0 41. Cox.3 40.7 40.7 36. Jenkins. Bill Rising.6 33.1 34.8 30.3 34.3 32.0 35.3 30.7 33.8 30.3 32.2 30.0 33. Kroll Maarten L.B.0 34.3 34.7 31. Cox Christopher F Baum Nicholas J.7 33.7 33.7 35. Christopher F Baum Eileen Wright.0 31. Matteo Bottai Martha Lopez. Cox Neil Shephard 260 Nicola Tommasi .0 32. Richard Sperling David E.5 35.0 30.7 35.7 33.3 34. Cox Stephen P.7 32. Cox Philip Ryan Joao Pedro Azevedo Philippe Van Kerm Austin Nichols Antoine Terracol Andrew Shephard Jeroen Weesie Arne Risa Hole Lars E.0 32.7 31.0 33. Cox.0 30.7 34.7 34. Cox Richard Goldstein.7 34.0 34. Lista pacchetti aggiuntivi 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 36. Sam Schulhofer-Wohl Nicholas J. Cox.3 35. Buis Enzo Coviello Maarten L.3 33.0 vioplot apoverty lambda predxcon quantiles sf36 bspline mahapick dummieslab xttrans2 extremes tab2way factortest inequal2 locpr maketex matwrite white wtp xtmrho seqlogit stcoxgof ldecomp mca avplot3 distrate dotex factext inteff3 samplesize smileplot mvtobit log2html ordplot spell fracirf groups ineqfac midas svytabs corrtab devcon qic hegy4 mvsampsi rocss bking centcalc eret2 scores svylorenz powerq qcount descsave jmpierce listtex hlm hnblogit hplogit xsampsi mgof apc dummies genass Nick Winter Joao Pedro Azevedo Nicholas J. Nikolaos A Patsopoulos Alfonso Miranda Roger Newson Ben Jann Roger Newson Sean F.7 35.5 31. Christopher F Baum Nicholas J.0 33. Reardon Joseph Hilbe Joseph Hilbe Jan Brogger Ben Jann Yang Yang.5 31. Jenkins Ben Dwamena Michael Blasnik Fred Wolfe Ben Jann James Cui Christopher F Baum.3 35. Thomas Cornelissen Adrian Mander Roger Newson Mikkel Barslund Nicholas J. Patrick Royston Ben Jann Dirk Enzmann Stephen P.7 35.3 34.7 35.4 35.3 32.7 31.7 33. Nicholas J.3 34. Philippe Van Kerm Nicholas J.0 35.0 30.8 33.8 32.7 33.8 31.3 31.0 32.0 31. Cox Nicholas J.3 33.3 34. Cox Joanne M. Jenkins Tiago V Pereira.5 33.7 31. Garrett Rafael Guerreiro Osorio Philip Ryan Roger Newson David Kantor Nicholas J.3 30. Buis Philippe Van Kerm Christopher F Baum Enzo Coviello Roger Newson Roger Newson Katja Sonderhof. Moore Nicola Orsini. Cox Zhiqiang Wang Nicholas J.0 26. Jenkins Michael Blasnik Christopher F Baum.0 26. Gelbach Austin Nichols Nicholas J. Buis Nicola Tommasi 261 .3 27.0 30.0 30.7 25. Nicholas J. Bern Gregorio Impavido Stephen P.3 29.3 25.7 29. Sarver Jean-Benoit Hardouin Michael Blasnik Jan Brogger Araar Abdelkrim David E.7 25.3 25.0 26. Lista pacchetti aggiuntivi 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 30. Bruno Nicholas J. Cox. Michael Blasnik Thomas Steichen David Roodman Vince Wiggins.F.5 25.7 27. Cox.0 30.0 28. Cox Roger Newson Nicholas J. Cox Jean-Benoit Hardouin Rory Wolfe Paul Millar Paul Millar Leif E.3 28.3 25. Cox Fred Wolfe Jan Brogger Nicholas J.0 30.B.7 28.7 27.0 30.5 28.3 29. Cox Dan Blanchette Alex Gamma Adrian Mander Matthew Openshaw Jeff Arnold Nicholas J.3 27. De Hoyos Nicholas J.7 25.3 26. Cox Paul Seed Adrian Mander Jean-Benoit Hardouin Giovanni S.2 26. Cox Roger Newson Nicholas J.9 26.3 29.7 27.3 29.3 25.3 29. Christopher F Baum Paul H.0 26.0 25.0 27.1 27.7 27.0 27.3 27.7 25.3 29.3 27.7 25.7 28.6 29.3 26.7 29. E.0 29. Martha Lopez Michael Blasnik Aurelio Tobias Joshua H. Garrett Jean-Benoit Hardouin Vince Wiggins. Christopher F Baum Ben Jann Jeph Herrin Zhuo (Adam) Chen Joseph Hilbe Jonah B.3 28.7 29.7 26. Moore Nicholas J.3 27.8 26.0 27.3 26. Cox Michael Blasnik Amine Ouazad Sune Karlsson Joanne M. Cox R. Peterson Stanislav Kolenikov Nick Winter Paul Millar Nicholas J. Cox Svend Juul.7 29.3 27.7 25.0 26.3 ineq intext scat3 svyselmlog tabhbar xtile2 cihplot dmerge grfreq tsgraph rrlogit cltest concindc oddsrisk probitiv vincenty spautoc lincomest ciplot estsave _peers armadiag swboot imputeitems archlm bigtab eba lognfit reclink cfitzrw cndnmb3 diagtest idonepsu imputerasch _gsoundex lrutil clorenz mvsamp1i xtpattern hcavar ocratio pre matsort mulogit shapley oprobpr bicdrop1 cipolate etime lincheck overlay sizefx addnotes countmatch diagt sampsi_rho simirt xtarsim tabhplot asciiplot chiplot collapse2 gphudak indeplist Nicholas J. Christopher F Baum Maarten L.0 26.7 27. 3 24.5 24.7 24.7 23.3 24. Cox Arne Risa Hole Jan Brogger Dan Blanchette Nicholas J.7 22.3 22. Nicola Orsini. Stephen P. Caci Nicholas J. Caci Jeffrey S.3 22. Cox Herve M. Christopher F Baum Jan Brogger Joseph Hilbe Jean-Benoit Hardouin Ulrich Kohler Zhiqiang Wang Nicholas J.0 24. Cox John Hendrickx Adrian Mander Nick Winter Austin Nichols Mamoun BenMamoun Philippe Van Kerm.7 22.7 22. Gelbach Nick Winter Jiefeng Chen Nicholas J.3 24.3 24.0 23.0 25.3 24. Cox Stephen P.3 23.3 24.3 23.B.5 22. Nicola Nante Jean-Benoit Hardouin Ari Friedman Adrian Mander Christopher F Baum Adrian Mander Patrick Royston Maarten L.0 24. Nicola Orsini Herve M.3 24.0 24.0 25. Buis.0 23.0 25.5 22. van Melle Ben Jann Christopher F Baum Ben Jann Nicholas J.7 22.3 25.7 24.7 22. Scott Merryman Jamie Griffin Austin Nichols Guy D. Cox Nicholas J.0 24.0 25.7 22.7 22.7 22.3 22. Stephen P. Philippe Van Kerm 262 Nicola Tommasi .3 23.0 23. Cox Nick Winter Tairi Room. Jenkins Stanislav Kolenikov Nicholas J. Jenkins. Cox Matteo Bottai.3 24.3 25.7 23.3 23. Jenkins.7 22.8 22.0 23.7 23. Nicholas J. Cox Christopher F Baum.3 23.3 24.9 24. Mark E Schaffer John Hendrickx Nicholas J.0 22.0 24. Nicholas J.3 22.0 23. Cox Nicholas J.7 24.7 24.3 24. Cox Christopher F Baum.3 xdatelist loevh gamet imputemok openall plotbeta qll sampsi_reg stpm betafit clogithet grlogit nsplit savesome textbarplot perturb contour fastcd fese fprank glcurve7 icomp seq smhsiao tomata traces gologit hallt-skewt intcens rensheet vmatch estwrite hlp2pdf jmpierce2 sparl xtvc cortesti domdiag ivactest rc2 rcspline butterworth isvar log2do2 lomodrs lrmatx rnd clv dsearch lrdrop1 mlowess normtest sslope stak svmatf xrigls tobitiv svr blinding ds3 ghistcum pairplot paretofit Roger Newson Jean-Benoit Hardouin Debora Rizzuto.0 25. Eileen Wright Jonah B.8 23. Simons Thomas Steichen Jan Brogger Patrick Royston. Martha Lopez Nicholas J. Lista pacchetti aggiuntivi 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 25. Cox Nick Winter William Gould Jean-Benoit Hardouin Vincent Kang Fu Rajesh Tharyan. Cox Christopher F Baum.7 24.7 23.7 24. Cox Patrick Royston Scott Merryman Adrian Mander Christopher F Baum Christopher F Baum Patrick Royston Stephen P.3 20. Cox Thomas Steichen Timothy Mak Patrick Royston.8 21.3 22. Lista pacchetti aggiuntivi 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 22. Vince Wiggins Nicola Tommasi 263 .7 20.9 19.3 20.3 20. Samuel Franco Joseph Coveney Jan Brogger Nicholas J.0 20.0 20. Cox Paul Seed Michael Hills Lars E.0 20.0 20.7 21.7 20. Ender Ben Jann Sean F. Carlin.3 21. Judson Nicholas J.7 20.0 20. Vince Wiggins Jan Brogger Nicholas J.5 21.0 22. John C. Cox Anders Alexandersson William Gould John Hendrickx Sune Karlsson Nicholas J. John B.3 22. Jean-Benoit Hardouin Enzo Coviello Joanne M.3 20.7 21.1 22. H.7 21.7 21.7 20.0 19.7 21. Cox Nicholas J. Cox Nicholas J. Caci Roger Newson David M.5 20. Judson Nicholas J.7 senspec stcoxplt stcstat strparse ci2 effects classplot corr_svy isopoverty jonter lrchg moreobs checkfor2 starjas adjmean centroid civplot histplot median powercal sbrowni sencode freduse dthaz histbox invcdf seg tabform tablecol heckprob2 nearest outfix2 xpredict xtregre2 hapipf betacoef checkreg3 cid geivars mstore stripplot venndiag complogit concindex distplot ellip hetprob mcl newsimpact ppplot reglike cluster barplot cf2 lgraph mimstack missing roblpr sskapp listutil lfsum ewma modlpr Roger Newson Joanne M. Nicholas J. Cox Amadou Bassirou Diallo. Garrett D.8 19.7 21. H.9 20. Cox Jens M.2 22.1 20. Garrett William Gould Michael Blasnik. Cox Mario Cleves Roger Newson Herve M. Cox Christopher F Baum.0 21. Cox Fred Wolfe Nicholas J.0 22.0 22.0 21. Cox Bill Sribney D. Reardon Le Dang Trung Nick Winter Jerzy Mycielski Nicholas J.3 22. Lauritsen Glenn Hoetker Amadou Bassirou Diallo Nicholas J.3 21.5 20.7 20.0 21.0 20.3 21. Kroll Nick Winter Joao Pedro Azevedo.7 21.7 20.0 21.0 22.1 21.7 20.0 22.3 22.3 21.B. Jenkins Michael Blasnik Nicholas J.3 20.3 21.4 21. Galati Jose Maria Sanchez Saez Christopher F Baum.0 20. Drukker Alexis Dinno Philip B.3 20.7 21.3 20.8 21.7 19. 0 18.0 19. Cox kaputil David Harrison matin4-matout4 William Gould.7 18.8 17.3 19.0 18.0 18.3 19.0 19. Cox Phil Bardsley Sophia Rabe-Hesketh Jean-Benoit Hardouin Mark Lunt Nicholas J.3 18. Caci longplot Zhiqiang Wang. Zhiqiang Wang csjl Jens M. Thomas Steichen dpredict J.5 19.7 18. Rino Bellocco expandby Nicholas J. Cox fitint Neville Verlander. Cox split Nicholas J.1 18.7 19. Cox wclogit Adrian Mander zinb Jesper Sorensen akdensity Philippe Van Kerm dpplot Nicholas J. Cox David Kantor Kyle C.3 19.7 18.7 18.7 18.3 19.7 19.9 18.0 18. Cox rsource Roger Newson ssizebi Abdel G.7 19. Nicola Orsini. Cox dirlist Morten Andersen dissim Nicholas J.0 18. Andreas Peichl strgen Nicholas J.0 18.3 19.7 18. Ian White mmsrm Jean-Benoit Hardouin pcorrmat Maarten L.3 18.0 19.8 plotmatrix recode2 sphdist survwgt wgttest zipsave stpepemori hangroot mdensity povguide revrs vallist xcorplot hnbclg modeldiag cb2html cme gengroup soreg tabmerge xcontract isko addtxt episens Adrian Mander John Hendrickx Bill Rising Nick Winter Ben Jann Henrik Stovring Enzo Coviello Maarten L.3 19.3 18.0 17. Cox allpossible Nicholas J. Cox taba Nicholas J. Cox 264 Nicola Tommasi . Cox ctabstat Nicholas J.3 18. Buis pwcorrs Fred Wolfe rolling2 Christopher F Baum rowranks Nicholas J.7 18.2 18.7 19. Lista pacchetti aggiuntivi 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 19.B. Nicholas J.3 18.7 18.0 18.3 18.0 18.2 19. André Charlett metamiss Julian Higgins.0 19.2 18. Lauritsen.7 19.7 18. Aurelio Tobias Joseph Hilbe Nicholas J.3 18.7 19.0 18. Cox mrdum Lee E. Cox.7 18. Cox urcovar Christopher F Baum xcollapse Roger Newson postrcspline Maarten L. Christopher F Baum paran Alexis Dinno selectvars Nicholas J. Buis tosql Christopher F Baum zip Jesper Sorensen bnormpdf Gary Longton colelms Mark S Pearce. Babiker acplot Nicholas J. Katriak gpfobl Herve M.3 18.3 18. Cox Roger Newson John Hendrickx Gary Longton Sander Greenland.0 18.3 18.0 18.1 19.7 18. Longest Patrick Joly Nicholas J.0 18.0 18. Sieswerda relrank Ben Jann richness Thilo Schaefer.3 18.7 18.3 18. Buis Nicholas J.0 19. Cox Joseph Hilbe Nicholas J.3 16.4 16.7 17.3 17.3 16.3 17. Cox Sune Karlsson Eduard Pelz Christopher F Baum.3 17. Patsopoulos Svend Kreiner. Patrick Royston Sune Karlsson Gary Longton John Hendrickx Thomas Steichen David E.3 17.7 17. Cox Nicholas J. Cox Nicholas J. Moore Rafal Raciborski Nicholas J.3 17. Babiker Nicholas J.0 stgtcalc archqq datesum fitmacro labsumm mvtest optifact predcalc pwploti sknor vlist kountry beamplot cibplot digits dsconcat fulltab hetred partgam sdecode stbtcalc supclust touch trellis usagelog xtab _gclsort reswage qpfit armaroots bpass cnsrsig genhwcci lprplot mehetprob p2ci plssas studysi tablepc censornb matodd adjacent fs genfreq grby orse recast2 spineplot tpred cnbreg mrtab diffpi flower gipf minap mmodes onewplot pairdata regpred rfregk variog zb_qrm smfit isco cochran Peter Sasieni.3 16.7 17.6 17.1 16. Garrett Kevin McKinney Nicholas J.7 16.0 17.3 17.0 16.7 16.3 16.7 17.7 17. Cox Matteo Bottai. Moore Paul Millar Joanne M. Cox Richard J.0 17.3 17.3 16.3 17.0 17.7 17. van Melle Nikolaos A. Nicola Orsini Christopher F Baum Fred Wolfe Nicholas J. Vince Wiggins James Cui Bill Sribney Thomas Cornelissen Nicola Orsini Adrian Mander Abdel G.8 17.0 17. Lauritsen Roger Newson Patrick Royston.7 17.3 17.7 17.0 17.3 17. Ben Jann Nicola Orsini Thomas Steichen.3 17.3 17. Cox Adrian Mander Stephen Soldz Adrian Mander Nicholas J.1 16.0 17.7 16. Cox Nicholas J.0 17.3 17. Cox William Gould Joseph Hilbe Hilde Schaeper.7 16.3 16. Jens M. Cox Eric Zbinden Stephen P.3 16. Cox Nicholas J.0 17. Peter Sasieni Ben Jann Ari Friedman Adrian Mander Dan Blanchette Tony Brady Philippe Van Kerm John Reynolds Nicholas J.7 17. Lista pacchetti aggiuntivi 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 17. Nicholas J.5 16.0 17.8 16.3 16.7 16.3 16.3 16.7 16. Atkins Roger Newson Guy D.3 16.3 17.2 17.7 16.3 17.7 16.7 17. Cox Richard J Williamson Joanne M.7 16.B.0 17. Garrett Zhiqiang Wang Evangelos Kontopantelis David E. Jenkins John Hendrickx Ben Jann Nicola Tommasi 265 . Lista pacchetti aggiuntivi 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 16.7 15.5 15.3 15. Cox Margaret M.3 15.7 15.7 15.7 15.0 15. Sieswerda Nicholas J. Cox Nicholas J. Cox Nicholas J.7 15.0 16.0 15. Williams. Cox Henrik Stovring Desmond E.0 16. Ulrich Kohler Nicholas J. Cox Joseph Hilbe Nicholas J.7 15. Nicholas J.2 15. Cox D.7 15.0 15.0 15.3 15.3 15. Cox Roger Newson Jens M. Cox Ulrich Kohler Ben Jann Austin Nichols Nicholas J.7 15.B.7 15. Ender Ward Vanlaar Nicholas J.3 15.0 16. Cox Nicholas J.3 15.0 15. Jenkins Roger Newson Lee E.0 16.7 15. Cox Nicholas J. Halvor Mehlum Nicholas J.3 15. H.0 detect grnote gwhet labsort rmanova shorth stbget tgraph tknz univstat addinby cflpois charlist ciw datmat eclpci eqprhistogram finddup gentrun hutchens logpred lstack medoid mypkg outdat pdplot prepar textgph vanelteren varcase vplplot cpcorr hpclg invgammafit ciform cleanlog dlist epsigr fndmtch hist3 ljs lxpct_2 rgroup torumm utest vallab wbull charutil mkdat alphawgt cpigen cpr dfao ellip7 fixsort floattolong fracdiff gmci hbox kdbox mapch msplot pwcorrw qexp reorder Jean-Benoit Hardouin Michael Blasnik Gregorio Impavido Ross Odell George M.7 15. Cox Bill Sribney Nicola Orsini Nicholas J.0 15.7 15. Cox Nicholas J. Stephen P.0 15.7 15.3 15. Gleason Nicholas J. Cox 266 Nicola Tommasi .7 15.0 15. Jenkins Joanne M.0 16.3 15.3 15.3 15.7 15.0 15. Cox Nicholas J. Cox.0 15. Elliott Nicholas J. Judson Nicholas J.0 16.7 15. Lauritsen Nicholas J.0 16. Cox Patrick Royston David C. Garrett Nicholas J.0 15.7 15.3 15.5 15. Weden Ulrich Kohler Fred Wolfe Jo Thori Lind. Hoffman Nicholas J. Cox Laura Gibbons Nick Winter Joseph Coveney John R. Cox Nicholas J. Cox Philip B.0 16.0 15. Cox Steffen Kuehnel.7 15. Cox Richard Sperling Anders Alexandersson Nicholas J. Cox Ulrich Kohler Nicholas J. Cox David Kantor Christopher F Baum John Carlin Nicholas J.7 15. Cox Fred Wolfe Hung-Jen Wang Stephen P.0 15.0 15.0 16.7 15.3 15.4 15.0 15. Cox Nicholas J.2 15.7 15.0 15. 3 14. Roberto Martinez-Espineira Philippe van Kerm.7 14.9 14. Andreas Peichl Jan Brogger Fred Wolfe.4 14.3 14.7 14.7 14.5 14.7 14.7 14.3 14.0 15. Garrett David Kantor Nikos Askitas Mikkel Barslund Nicholas J.0 15. Christopher F Baum Nicholas J. Jenkins Stephen P.2 14.3 14.7 14.3 14.3 14.7 14.0 15.B. Cox Roger Newson Joseph Hilbe Roger Newson Joseph Hilbe Stanislav Kolenikov Nicholas J.0 14.0 15. Gutierrez Fred Wolfe. Nicholas J.0 15. Nicholas J.2 14.0 15. Gilles Desve Laura Gibbons Nicholas J. Cox Ben Jann Evangelos Kontopantelis Christopher F Baum Enzo Coviello Enzo Coviello Roger Newson Nicola Orsini Joseph Hilbe Enzo Coviello Jean-Benoit Hardouin David Kantor Nicholas J.3 14.3 14.7 14. Cox Ben Jann Stanislav Kolenikov Thomas Steichen Roger Newson Fred Wolfe Joseph Hilbe Joseph Hilbe Peter Makary. Lista pacchetti aggiuntivi 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 15.7 14.0 rglm runparscale seast smithwelch violin vreverse weibullfit xfrac gzsave dirifit groupcl adjprop assertky benford checkrob filei harmby hcnbreg inccat ivglog kdmany nbfit nproc regaxis sbplot shuffle skbim spearman2 stcascoh stquant strdate xb2pi cpoisson stexpect backrasch carryforward chaos cistat drarea feldti genvars gevfit grand ifin mlogpred mvsktest nbstrat progres readlog tomode tslist vclose viewresults _grmedf nct estparm doub2flt glgamma2 hglogit cstable difd fedit gammafit hapblock Roger Newson Laura Gibbons Richard Feltbower.7 14.0 15.7 14. Cox Adrian Mander Herve M.0 14.3 14. Stephen P.7 14.2 14.7 14.7 14.7 14.3 14. Hanson.8 14. Cox.3 14.3 14.2 14. Stephen P. Buis.3 14. Cox Nicholas J. Stephen P.3 14. Cox Nicholas J. Cox. Philip Price Roger Newson Nicholas J. Pearce Ben Jann Thomas Steichen Nicholas J.0 14.7 14. Cox Nicholas J. Cox.7 14.7 14.0 14.3 14.2 14.7 14.3 14.3 14. Roberto G. Jenkins Henrik Stovring Maarten L.3 14.3 14.7 14.3 14. Cox Michael S. Jenkins Adrian Mander Nicola Tommasi 267 . Mark S. Caci Jan Brogger Scott Merryman Vince Wiggins Ari Friedman Bill Sribney Stanislav Kolenikov Joseph Hilbe. Cox.7 14.0 14. Jenkins Paulo Guimaraes Joanne M.8 14. Nick Winter tabcount Nicholas J.0 13.7 13.7 13. Cox multibar Fred Wolfe orthog Bill Sribney ovbd Joseph Coveney splitvallabels Ben Jann.0 13.0 14. Jenkins avplot2 Nicholas J.2 13.5 13. Caci longch Tony Brady profhap Adrian Mander recap Matthias an der Heiden reshape8 Bill Rising sdline Nicholas J.0 13.0 13.0 13.0 levene Herve M. Cox gpreset Roger Newson keyby Roger Newson listmiss Paul Millar sbplot5 Nicholas J.0 13.0 13.3 13.4 13.7 13.8 13.0 13.3 13.7 13.8 13.Seed swblock Adrian Mander tuples Nicholas J.5 13. Williams tryem Al Feiveson vartyp Paul H.0 13.9 13.7 13.0 14.7 13. Lista pacchetti aggiuntivi 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 14.3 13.0 14.3 13. Cox sortlistby Ben Jann rfl Dankwart Plattner autolog Ian Watson findval Stanislav Kolenikov firstdigit Nicholas J.B.1 13. Cox mira Rodrigo Alfaro moments Nicholas J.0 14.3 13.7 13.3 13.3 13. Cox slideplot Nicholas J.7 13.6 13.3 13. Cox bynote Roger Newson gby Zhiqiang Wang hlpdir Nicholas J.0 13.0 13. Cox circular Nicholas J. Cox tpvar Nicholas J.7 13. Cox sratio Mamoun BenMamoun t2way5 Nicholas J.0 13.3 13.0 13.8 13.0 14.3 13. Cox skewplot Nicholas J.7 13. Cox title Jan Brogger tsplot Aurelio Tobias whotdeck Adrian Mander gb2fit Stephen P. Cox sbri Nicola Orsini strip P.7 13.3 13. Cox fieller Joseph Coveney pbeta Nicholas J.3 13.3 13.3 13. Cox stack William Gould summvl Jeroen Weesie svvarlbl Desmond E. Cox ellip6 Anders Alexandersson adjust Kenneth Higbee biplot Ulrich Kohler confsvy Zhiqiang Wang factref Roger Newson full_palette Nick Winter grand2 Vince Wiggins graphbinary Adrian Mander istdize Mario Cleves outseries Christopher F Baum ranova Joseph Hilbe safedrop Nicholas J.7 13.7 13. Cox barplot2 Nicholas J. Cox stselpre Enzo Coviello examples Nicholas J.8 13.3 13.0 14.7 13.0 13.T.0 14. Bern witch Thomas Steichen gzipuse Nikos Askitas pexp Nicholas J.2 13. Cox 268 Nicola Tommasi .0 14.0 13. 8 11. Nicola Orsini Roger Newson Jan Brogger Roger Newson Nicholas J.7 12.2 12.7 12.3 12.7 12.3 12.7 12.3 12. Cox Jeroen Weesie Ben Jann Joseph Hilbe Nicholas J.0 12. Buis Joseph Hilbe Joseph Hilbe Ben Jann David Harrison Nick Winter Jean-Benoit Hardouin Ben Jann Sander Greenland.0 12. Cox Roger Newson Austin Nichols Philip Ryan Maarten L. Cox Nicholas J. Cox Nicholas J. E.8 11.3 12.0 12.7 12.0 13.0 12.0 12.0 12.3 12. Cox R.7 12. Cox Bill Rising Nikos Askitas Jean-Benoit Hardouin Nicola Tommasi 269 .3 12. Lista pacchetti aggiuntivi 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 13.5 12. Cox Joseph Hilbe Joseph Hilbe Makoto Shimizu.0 12.8 12.B.3 12.7 12. Cox Roger Newson Ben Jann Nicholas J.7 12.7 11.3 12.7 11.3 12. Cox Nicholas J. Cox Nicholas J.3 12.7 12.5 12. Cox Joseph Hilbe William Gould Patrick Royston. Cox Ben Jann Roger Newson Abdel G.7 twoway_parea _gprod poisml pweibull trpois0 fodstr xriml ccweight cpyxplot cycleplot erepost expgen far5 group1d lablist mgen pgamma qgamma svybsamp2 tabcond gnbstrat hgclg adjksm bygap cij codebook2 ddf2dct hlist ivgauss2 lms mstdize quantil2 regresby subsave vlc _grprod propcnsreg lgamma2 trnbin0 avplots4 bystore catgraph delta digdis episensrri explist forfile ingap kaplansky labelsof lookforit lrseq ltable2 outfix statsbyfast stcband summdate _gslope cprplots givgauss2 matrixof ckvar ashell biplotvlab Sergiy Radyakin Philip Ryan Joseph Hilbe Nicholas J.0 12. Babiker Nicholas J. De Hoyos Nicholas J.7 12.2 12. Salgado-Ugarte Roger Newson Nicholas J. Cox Paul H.0 11.0 12.8 12.2 12.3 12.0 12.7 12.0 12. Bern Austin Nichols Nicholas J.8 11. Cox Ben Jann Dan Blanchette Zhiqiang Wang Mario Cleves Gero Lipsmeier Michael Blasnik Enzo Coviello Nicholas J.3 12.8 12.0 12.0 12.3 12. Rino Bellocco. Cox Joseph Hilbe Michael Blasnik Nicholas J.0 12.7 12. Isaias H.7 12.0 12.7 12. Eileen Wright Roger Newson Nicholas J.0 12.8 12.0 12.0 12.3 12.0 12. Jenkins David Kantor E. Kroll Nicholas J.0 11. Cox Debora Rizzuto.7 11.7 11. Cox Christopher F Baum Stephen P. Dean Judson Adrian Mander Nicholas J.3 11.0 11. Lista pacchetti aggiuntivi 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 11.7 11. Cox Joseph Hilbe Nicholas J. William D.7 11. Jenkins Fred Wolfe Nicholas J. Cox Zhiqiang Wang Lars E.7 10. John Luke Gallup Rosa Gini Nicholas J.7 11. Cox Ben Jann Stefan Wehrli.7 11.7 10.7 10. Cox Joseph Hilbe. Cox Kim Lyngby Mikkelsen Allen Buxton Stephen P. Jenkins Nicholas J.3 11.2 11.7 10.7 10.0 11. Garrett Joanne M.0 11. Stephen P.0 11. Cox Jan Brogger Edwin Leuven W.0 11. Garrett Joseph Coveney Nicholas J. Cox Ulrich Kohler Patrick Royston Maarten L. Nicholas J.3 11.3 11.3 11.0 11. Ben Jann Phil Bardsley Nick Winter Nicholas J.7 11.8 10. Buis.7 11.7 10. Cox Joseph Hilbe Joanne M.2 11. Paul Wileyto Roger Newson Peter Makary. Nicola Orsini Jan Brogger Stephen P.2 11.3 11.6 11. Cox Adrian Mander Nicholas J. Gilles Desve Nicholas J.3 11. Dupont 270 Nicola Tommasi .0 11. Allan Reese Jose Maria Sanchez Saez Roger Newson Stanislav Kolenikov Adrian Mander Philip Ryan Nicholas J.7 10.7 11.3 11. Lauritsen. Cox Bill Sribney R.7 clustsens cquantile difwithpar ds5 geneigen gumbelfit kapprevi lincom2 mkbilogn raschcvt rowsort soepren contrast fiskfit trinary mcqscore bmjcip cctable copydesc dashln dbmscopybatch factmerg palette_all ranvar slist spec_stand sqr stcumh survtime dagumfit adotype cenpois qhapipf qweibull williams bkrosenblatt canon cvxhull distan gphepssj labelmiss lars mfilegr mnthplot muxplot nbinreg svypxcat svypxcon jnsn lmoments cprplot2 adolist checkvar dashgph disjoint epiconf grexport linkplot matpwcorr qqplot2 shownear spaces spellutil sunflower Paul Millar Nicholas J. Cox Nicholas J.9 10.0 11.7 10.2 11.7 11.0 11. Cox Michael Blasnik Amadou Bassirou Diallo Roger Newson Adrian Mander Frauke Kreuter Jens M.3 11.7 11.3 11.7 10.8 10.5 11..7 11.9 10.0 10. Dale Plummer Jr.4 11. Cox Laura Gibbons Nicholas J.3 11.5 11. Svend Juul.0 11.3 11.7 10.2 11.7 10.2 11. Jenkins. Cox Nicholas J.0 11.3 11.B. Cox Jeff Arnold Nicholas J.3 10.7 9. Cox Ulrich Kohler Bas Straathof Nicholas J.3 10. Azra Ghani Zhiqiang Wang Zhiqiang Wang Philippe Van Kerm Nicholas J.5 9. Cox.0 10.0 10.2 10. Nicholas J.0 9.2 10. Cox shuffle8 Ben Jann spikeplt Tony Brady. Cox gen_tail David Kantor loopplot Nicholas J.3 10.7 9.3 9.B. Lista pacchetti aggiuntivi 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 10. Cox Joseph Hilbe William Gould Bear F.0 9.0 9.8 9.3 9.3 10. Cox Jeroen Weesie Patrick Royston Nicholas J.2 10.0 10.0 10. Cox Joseph Coveney Mamoun BenMamoun Adrian Mander Nicholas J.0 10. Cox intterms Vince Wiggins ndbci Fred Wolfe nicedates Nicholas J.2 10.0 10.3 10. Rino Bellocco. Cox torats Nicholas J.7 9.3 10. Matteo Bottai varsearch Jeff Arnold sdtest Bill Sribney ncf Thomas Steichen allcross Kenneth Higbee ascii Adrian Mander buckley James Cui diplot Nicholas J.2 10.3 9. Cox Peter Parzer Nicholas J. Cox Mario Cleves Ben Jann Jamie Griffin.7 9.5 10.0 10.3 10. Cox Nicola Tommasi 271 .2 10.3 10. Cox Nicholas J. Cox pnrcheck Nicola Orsini showgph Jan Brogger.3 9.7 9. Nicola Orsini printgph Jan Brogger sssplot Nicholas J.3 10. Nicholas J.7 9. Cox Sander Greenland.0 10.9 9.3 9.0 10.0 9.5 9.3 10.3 9.7 9.3 10.7 10. Cox Nicholas J.0 10.7 10. Cox doubletofloat David Kantor gprefscode Jan Brogger pascal Amadou Bassirou Diallo tolerance Peter Lachenbruch hnbreg1 Joseph Hilbe simuped James Cui sortrows Jeff Arnold wtd Henrik Stovring convert_top_lines David Kantor effcon Al Feiveson hsmode Nicholas J.3 9.0 10. Cox Ben Jann Nicholas J.5 9.0 10.7 9.4 9.3 10. Braumoeller Nicholas J. Christopher F Baum unitab Nicola Orsini.0 swapval symmetry marktouse casefat confall confnd coranal doubmass ds2 getfilename2 hdquantile himatrix insob muxyplot ztg mkstrsn mlboolean psbayes qbeta rdci tcod blist blogit2 bys for211 fractileplot fview glmcorr gphodp irrepro postrri Nicholas J.0 10.3 9.3 9.3 9.0 10. Cox skilmack Mark Chatfield storecmd Nicholas J. 7 uniquestrata Ari Friedman 1057 8.5 qlognorm Nicholas J. Cox 1061 8. Cox.3 sliceplot Nicholas J.3 addtex Guy D. Cox 1063 8.2 tarow Allen Buxton 1067 8. William D.3 mail Nikos Askitas 1060 8.0 vtokenize Bill Rising 1053 8. Dale Plummer.3 pwcov Christopher F Baum 1062 8.3 sto Nicholas J.3 tablab Nicholas J. Jr. Cox 1074 6.0 phenotype James Cui 1069 7. Cox 1065 8.3 codci Mamoun BenMamoun 1059 8. Stephen P. Cox 1064 8. Papps 1070 7.B.0 _grpos Fred Wolfe 1073 6.2 rpnfcn Henrik Stovring 1068 8. Nicholas J.7 enlarge Stanislav Kolenikov 1054 8.7 eitc Kerry L.7 umbrella W. Dupont 1056 8. Cox 1072 7.0 soepdo Tim Stegmann ---------------------------------------------------------------------(Click on package name for description) 272 Nicola Tommasi .7 nruns Nigel Smeeton.3 majority Nicholas J. Jenkins 1066 8. van Melle 1058 8.3 invgaussfit Nicholas J.5 qrowname Roger Newson 1075 4.7 primes Stanislav Kolenikov 1055 8.7 esli Nicola Orsini 1071 7. Lista pacchetti aggiuntivi 1052 9.. 35. add labelsof fre .. ba.70.=. FFFATTO!] e xpose outliers analysis [FF.10.60. bc..40.15. per sistemi AIDS contract [FF.9) (3=2 10-19) (4 5=3 20 . FFFATTO!].5. c oppure aa. xmlsave [FATTO] mrtab labelbook adopath ds undocumented command ( ds. ac. FFFATTO!] spmap + correzione centroidi e in Appendice l’help con le figure ameans. gen(a14rec).. b.39).65. FFFATTO!] label values now takes a varlist [FF.Prezzi alla Lewbel 273 .. nuova opzione firstonly per tab2 - - CASI APPLICATI ....a).groups preserve .To Do limits (fatto!!) e labutils (questo fatto??) numlabel _all..100) [FATTO] label define agegp 0 0-4 5 5-9 10 10-14 15 15-19 20 20-25 25 25-29 30 30-34 35 35-39 40 40-44 45 45-49 50 50-54 55 55-59 60 60-64 65 65-69 70 70-74 75 75-79 80 80+ [FF... centile e cumul egen agegp=cut(e2).. marina -> farmaci) listblck utilizzo di ++ e – per i cicli delle local..50.30.80.. bb..75. restore Costruzione di successioni del tipo a. Attenzione che ++local lascia poi la local aumentata di 1 qui recode a14 (1=1 0 .45.55.25.20. not(type string). recode ‘r(varlist)’ (. at(0. ab. recode a23t* (1/16 =1) (17/21=2) (22/34=3) (35/37=4) (38/42=5) (43/46=6) (47/50=7) (51/56=8) (57/63=9) ( prefix(cat_) label(tipof). summarize .strmatch per correzione stradario . describe . update . use the following procedure: .B. <command(s) causing problems> . esclusi gli ormoni sessuali (H)" "Antimicrobici generali per uso sistemico eimmunomodulatori (J)" "Farmaci antineoplastici e immunomodulatori (L)" "Sistema muscolo-scheletrico (M)" "Sistema nervoso (N)" "Sistema respiratorio" "Organi di senso (S)". replace . which you can then email to us.smcl. projects/s_cuore/marina/farmaci/read. sysdir . pwd .Arrotondamento local .run How do I send Stata output to Technical Support? If you need to send output to Technical Support. log close These commands will create the file junk. log using junk. To Do .do label define tipof 1 2 3 4 5 6 7 8 9 10 11 "Apparato gastrointestinale e matabolismo (A)" "Sangue e organi emopoietici (B)" "Sistema cardiovascolare (C)" "Sistema genito-urinario (G)" "Preparati ormonali sistemici. 274 Nicola Tommasi . adopath . about . Parte IV Indici 275 . . 76 contract. 123 colsof. 88 erase. 71 binomial. 64 append. 70 F. 72 Fden. 71 Funzioni di densita’. 17 describe. 3 finestra Stata Results. 83 egenodd. 21 aorder. 32 >. 31 abbrev. 31 >=. 15 drop. 31 <. 32 _N. 8 abs. 128 correlate. 51 destring. 32. 64 duplicates report. 94 Funioni di probabilita’. 82 bysort. 52 collapse. 71 box. 95 fsum. 31 ?. 40 cond. 33. 81 |. 83 egenmore. 71 277 . 146 fre. 111 by. 72 codebook. 78 dictionary. 69 foreach. 66 forvalues. 3 finestra Variables. 21 finestra Review. 17 delimitatori fine comando. 32 ==. 34 decode. 82 ceil. 3 finestra Stata Command. 3 floor. 115 betaden. 88 diag. 81 _n. 16 directory di lavoro. 148 excel. 61 egen. 34. 141 format. ˜ 32 ˜=.Indice analitico *. 73 about. 44 dir. 69 chi2. 108 dati missing. 79 compress. 69 adoupdate. 42. 83 encode. 32 &. 16 ereturn list. 31 . 72 findit. 88 delimit. 47 exp. 74 macros. 86 move. 55 label dir. 45 inrange. 84 mdy. 124 lower. 69 Funzioni random. 71. 149 recast. 139. 56 label values.INDICE ANALITICO Funzioni matematiche. 29 infile. 109 pwd. 46 preserve. 54 labelbook. 70 local. 64 outliers. 72 generate. 86 rowmin. 69 inv. 73 keep. 59 INDICE ANALITICO operatori di relazione. 16 mmerge. 63 help. 86 rownomiss. 147 log. 53 int. 110 gsort. 70. 56 label list. 47 pwcorr. 73 gammaden. 77 mean. 69 global. 70 long form. 86 rowsd. 15 r(). 32 order. 80 numlabel. 85 merge. 86 reshape. 139 max. 69 rowmax. 72 notes. 86 rowmean. 74 ltrim. 74 round. 84 median. 5 ln. 56 lenght. 66 recode. 57 labutil. 60 nullmat. 86 inputst. 64 label data. 30 in. 86 278 Nicola Tommasi . 42 inlist. 55 label variable. 116 mif2dta. 73 limits. 77 insheet. 109 outputst. 124 restore. 139 grubbs. 86 rowmiss. 21 if. 85 mkdir. 64 normalden. 19 log10. 76. 47 reverse. 54 label define. 62 replace. 41 inspect. 59 labvalch. 31 operatori logici. 118 mode. 151 min. 62 renvars. 56 label drop. 79 invnormal. 45 outsheet. 73 Funzioni stringa. 87 rename. 3 wide form. 75 subinword.INDICE ANALITICO rowsof. 39 versioni. 3 sort. 94 tipo variabili. 74 use. 151 SO supportati. 193 ssc. 75 wordcount. 46 Nicola Tommasi 279 xmlsave. 102 table. 65 set varlabelpos. 21 separatori. 93 sysdir. 46 xmluse. 28 set dp. 74 subinstr. 76 XML. 74 sample. 27. 71. 66 tostring. 74 uniform. 104 tabstat. 47 INDICE ANALITICO . 11 tab2. 73 update. 89 trace. 68 set memory. 141 search. 63 spmap. 124 word. 79 rtrim. 75 substr. 5 shp2dta. 20 strmatch. 19 upper. 86 summarize. 65 scalar. 37 set seed. 81 trim. 106 tabulate. 75 sum. . A. . . . . . . . . . .20Other maps .5 Choropleth maps . . . . . . . . . . . . . . .18Other maps . . . iii 4 1. . . . . .7 Choropleth maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . post correzione . . . . . . . . . . . . . . A. . . . . . . . . . . . . . . . . . . . . . . . . .2 Mappa 14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 . . . . .10Choropleth maps . . . . . . . . . . . . . . . . . . . . . .6 Choropleth maps .12Choropleth maps . . . . .11Choropleth maps . . . . . . . . A.1 Le finestre di Stata . . . . . . . . . . . . . . . . . . A. . . . A. . . . . . . . . . . . . . . . . . . . . . . . . .Elenco delle figure 1 II Incontro degli Utenti di Stata. . . . .8 Choropleth maps . . . . . . . . . . . . . . . . . . . . . . . . . A. . . .14Proportional symbol maps A. . . . . . . . . . . . A. . . . . .16Proportional symbol maps A. . . . . . . . . . . . . . . A. . . .15Proportional symbol maps A. . . . . . . . . . . . . . . . . . . . . A. . . . . . . . . Milano. . . . . . . . . . . . . . . . . . . . . 112 14. . . . . . . . . . . . . . . . . . .17Proportional symbol maps A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A. . . . . . . . . . . . . . . . . . . . . . . . . .13Proportional symbol maps A. . . . . . . . . . . . . . . .4 Mappa pre correzione . . . . . . . . . . . . . . A. . . . . . . . . . . . .1 Box Plot . . . . . . . . . . A. . A. . . . . . . . . . . . . 9. .19Other maps . . . . . A. . . . . . . . . . . . . . . . . . . . A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Choropleth maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Choropleth maps . . . . . . . . . . . . . . . . . . . . .1 Mappa 14. . . . . . . . . . . . . . con colori predefiniti con colori assegnati . . . . . . . . . . .1 Choropleth maps . . . . . .21Other maps . . . . . . . . . . . . . . . . . . . . . . . 10-11 ottobre 2005 . . . . . . . .3 Mappa 14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A. . . . . . . . . . . .23Other maps . . . . . . . . . . . .3 Choropleth maps .9 Choropleth maps . . . . . . . . . . . . . 153 155 156 158 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22Other maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25Other maps . . . . . . 249 A. .ELENCO DELLE FIGURE ELENCO DELLE FIGURE A. . . . 250 282 Nicola Tommasi . . . . . . . . . . . . . . . . . . . . . . . . . .26Other maps .24Other maps . . . . . . . . . . . . . . . . 248 A. . . . . . . . . . . . . Elenco delle tabelle 283 .