Corso di Stata Elementi di Programmazione
Transcript
Corso di Stata Elementi di Programmazione
Accedere ai risultati Macro Cicli Corso di Stata Elementi di Programmazione Nicola Tommasi C.I.D.E. Giugno-Luglio 2011 Università degli studi di Verona C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 1 / 16 Accedere ai risultati Macro Cicli Introduzione Quasi tutti i comandi salvano l'output prodotto o parti di esso sotto forma di 1 2 3 Scalari numerici o stringa vettori matrici Questi risultati si riferiscono sempre all'ultimo comando impartito C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 2 / 16 Accedere ai risultati Macro Cicli output dei comandi return list command da eseguire return list . summ eta Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------eta | 22268 41.20235 22.12469 0 103 . return list scalars: r(N) = 22268 r(sum_w) = 22268 r(mean) = 41.20235315250584 r(Var) = 489.502052216051 r(sd) = 22.12469326829303 r(min) = 0 r(max) = 103 r(sum) = 917494 C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 3 / 16 Accedere ai risultati Macro Cicli Output delle regressioni ereturn list comando di regressione ereturn list . ereturn list scalars: ... segue Nicola Tommasi 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) (C.I.D.E.) = = = = = = = = = = = 395 9 385 232.4094818295316 .8445502969911419 56.76810383548168 6740702.006307498 1240707.781034271 .8409164078298959 -2150.811313812844 -2518.444341781212 Elementi di Programmazione C.I.D.E. Giugno-Luglio 2011 4 / 16 Accedere ai risultati Macro Cicli Output delle regressioni macros: e(cmdline) e(title) e(vce) e(depvar) e(cmd) e(properties) e(predict) e(model) e(estat_cmd) matrices: : : : : : : : : : "regress api00 ell meals yr_rnd mobility acs_k3 acs_46 full "Linear regression" "ols" "api00" "regress" "b V" "regres_p" "ols" "regress_estat" e(b) : 1 x 10 e(V) : 10 x 10 C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 5 / 16 Accedere ai risultati Macro Cicli Usare i risultati Come usare i risultati 1 2 Direttamente subito dopo il comando Salvati in local per un uso successivo I risultati si riferiscono sempre all'ultimo comando usato Quindi l'ultimo comando usato sovrascrive il precedente C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 6 / 16 Accedere ai risultati Macro Cicli Tipi di macro e assegnazione Tipi di macros: 1 2 local global Assegnazione del contenuto 1 2 3 4 local A 2+2 local B = 2+2 global A 2+2 global B = 2+2 C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 7 / 16 Accedere ai risultati Macro Cicli Richiamo delle macro Richiamare le macros: le local si richiamano con l'espressione `local_name' le global si richiamano con l'espressione $local_name Il simbolo ` si ottiene premendo ALT + 96 sul tastierino numerico Attenzione però: . di 4 . di 4 . di 2+2 . di 4 `A' (local A 2+2) `B' (local B = 2+2) "`A'" "`B'" C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 8 / 16 Accedere ai risultati Macro Cicli Scalari scalar: Oggetto usato per assegnare valori numerici scalari Come si costruisce scalar dene scalar define scalar_name =exp Poi può essere usato come se fosse una variabile: scalar w=5 scalar q=3 scalar t=w+q di t 8 Nicola Tommasi (C.I.D.E.) C.I.D.E. Elementi di Programmazione Giugno-Luglio 2011 9 / 16 Accedere ai risultati Macro Cicli I cicli Denizione: procedure che permettono di compiere azioni ripetitive Sintassi: foreach foreach lname {in|of listtype} list { commands referring to `lname' } forvalues lname = range { commands referring to `lname' forvalues } C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 10 / 16 Accedere ai risultati Macro Cicli Metodi di implementazione Sono possibili le seguenti costruzioni di foreach: I costruzione foreach lname in any_list .... lista di comandi { } any_list è una qualsiasi lista di variabili, stringhe e numeri II costruzione foreach lname of local lmacname .... lista di comandi { } lmacname è una local precedentemente specicata Nicola Tommasi (C.I.D.E.) Elementi di Programmazione C.I.D.E. Giugno-Luglio 2011 11 / 16 Accedere ai risultati Macro Cicli Metodi di implementazione III costruzione foreach lname of global gmacname .... lista di comandi { } gmacname è una global precedentemente specicata IV costruzione foreach lname of varlist varlist .... lista di comandi { } varlist è una serie di variabili già esistenti Nicola Tommasi (C.I.D.E.) Elementi di Programmazione C.I.D.E. Giugno-Luglio 2011 12 / 16 Accedere ai risultati Macro Cicli Metodi di implementazione V costruzione foreach lname of newvarlist newvarlist .... lista di comandi { } newvarlist è una lista di nuove variabili VI costruzione foreach lname of numlist numlist .... lista di comandi { } numlist è una lista numerica Nicola Tommasi (C.I.D.E.) Elementi di Programmazione C.I.D.E. Giugno-Luglio 2011 13 / 16 Accedere ai risultati Macro Cicli Esempio commentato Dato in seguente ciclo: . foreach obj in var1 var2 var8 var10 { 2. summ `obj' 3. gen `obj'_10 = `obj' / 10 4. summ `obj'_10 5. } Vediamo di capire cosa succede: Nota che obj diventa a tutti gli eetti una local primo ciclo (`obj' assume il valore var1): summ `obj' -> summ var1 gen `obj'_10 = `obj' / 10 -> gen var1_10 = var1 / 10 summ `obj'_10 -> summ var1_10 C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 14 / 16 Accedere ai risultati Macro Cicli Esempio commentato . foreach obj in var1 var2 var8 var10 { 2. summ `obj' 3. gen `obj'_10 = `obj' / 10 4. summ `obj'_10 5. } secondo ciclo (`obj' assume il summ `obj' -> gen `obj'_10 = `obj' / 10 -> summ `obj'_10 -> valore var2): summ var2 gen var2_10 = var2 / 10 summ var2_10 terzo ciclo (`obj' assume il valore var8): summ `obj' -> summ var8 gen `obj'_10 = `obj' / 10 -> gen var8_10 = var8 / 10 summ `obj'_10 -> summ var8_10 quarto ciclo (`obj' assume summ `obj' gen `obj'_10 = `obj' / 10 summ `obj'_10 Nicola Tommasi (C.I.D.E.) il valore var10): -> summ var10 C.I.D.E. -> gen var10_10 = var10 / 10 -> Elementi summ di var10_10 Programmazione Giugno-Luglio 2011 15 / 16 Accedere ai risultati Macro Cicli forvalues Inne la costruzione del ciclo forvalues utile per successioni numeriche forvalues lname = range { commands referring to `lname' forvalues } dove range può assumere le seguenti congurazioni: # 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 - # 1 # 1 (# t ) : # 2 : idem come sopra C.I.D.E. Nicola Tommasi (C.I.D.E.) Elementi di Programmazione Giugno-Luglio 2011 16 / 16