Questo tutorial vi accompagna, passo per passo, nell'analisi richiesta per il lavoro di gruppo: modelli di regressione OLS con una variabile dipendente, una o più variabili focali e le opportune variabili di controllo, confrontati tra gruppi diversi (partiti, aree, paesi). Usiamo sempre lo stesso dataset, Itanes 2022 (onda post-elettorale), e lo stesso esempio: quanto piace agli elettori un partito, su una scala da 0 a 10.
Cosa vi serve
- Stata 17 o successivo (anche BE)
- Il file
Itanes2022_POST_release 01_weighted.dta - Il do-file del tutorial (sotto)
- Connessione internet la prima volta, per installare
estoutecoefplot
Cosa saprete fare
- Esplorare e ricodificare le variabili, gestendo i valori mancanti
- Costruire variabili di prossimità (Downs) e di valenza (Stokes)
- Stimare e leggere modelli OLS a blocchi
- Confrontare partiti e sottogruppi, anche con dati stacked
- Esportare tabelle e grafici per le slide
Suggerimento: cliccate su qualsiasi schermata o grafico per ingrandirlo.
Scarica il do-file completoTutto il codice di questa pagina in un unico file, diviso nelle stesse sezioni. Modificate solo la riga cd della sezione 1.
Dal tutorial al vostro lavoro
| Concetto | In questo tutorial (Itanes 2022) | Nel vostro dataset |
|---|---|---|
| Variabile dipendente | Giudizio su FdI, 0-10 (Q16a) | Panel 1 (ESS): atteggiamenti su economia, Europa, immigrazione, ambiente. Panel 2 (EES): PTV dei partiti mainstream o challenger |
| Prossimità (Downs) | Distanza tra autocollocazione e posizione del partito sull'asse sinistra-destra | EES: distanza sulle dimensioni economia, Europa, immigrazione (stessa logica, sezione 5) |
| Valenza (Stokes) | Giudizio sul leader (indicatore indiretto) | EES: credibilità/competenza del partito su obiettivi condivisi |
| Controlli | Genere, età, istruzione, reddito, religiosità, occupazione, zona, PID, economia | Gli stessi, più quelli suggeriti dalla letteratura del vostro tema |
| Confronti | Partiti (sez. 9), zone geografiche (sez. 10), famiglie di partiti (sez. 11) | Panel 1: macroregioni e Italia. Panel 2: componente di sinistra/destra, singoli paesi |
1Preparare la sessione di lavoro
In Stata si lavora sempre con un do-file: un file di testo con tutti i comandi, in ordine. Così l'analisi è riproducibile, si può correggere e rieseguire, e il gruppo può condividerla. Aprite il Do-file Editor (icona Do-file Editor nella barra in alto, oppure scrivete doedit nella finestra Command) e incollate il codice.
version 17
clear all
set more off
* >>> MODIFICARE: cartella in cui avete salvato il file .dta
* Windows (esempio): cd "C:/Users/nome/Documents/OPEL"
* Mac (esempio): cd "/Users/nome/Documents/OPEL"
cd "C:/Users/nome/Documents/OPEL"
* il log salva tutto l'output in un file di testo
capture log close
log using "tutorial_itanes2022.log", replace text
* cartella per i grafici
capture mkdir "grafici"
* pacchetti aggiuntivi (si installano una volta sola, serve internet)
capture which esttab
if _rc ssc install estout, replace
capture which coefplot
if _rc ssc install coefplot, replacecdimposta la cartella di lavoro: Stata cercherà lì il file dei dati e ci salverà log, grafici e tabelle. È l'unica riga che dovete modificare. Su Windows usate le barre/oppure\, su Mac il percorso inizia con/Users/.log using … , replace textsalva tutto l'output in un file di testo: utile per ritrovare i risultati senza rieseguire.ssc installscarica due pacchetti gratuiti:estout(tabelle di regressione affiancate) ecoefplot(grafici dei coefficienti).capture which … / if _rcli installa solo se mancano.
2Aprire ed esplorare i dati
Prima di ricodificare qualsiasi cosa bisogna sapere come è codificata ogni variabile: quali valori assume, cosa significano, quali codici indicano «non so» o «non risponde».
use "Itanes2022_POST_release 01_weighted.dta", clear
* quante osservazioni e quante variabili
describe, short
* le variabili del giudizio sui partiti
describe Q16a-Q16h
* cercare variabili per parola chiave nelle etichette
lookfor sinistra
* codici e etichette di una variabile
codebook Q16a, tabulate(20)
tab Q16a
tab Q16a, nolabeldescribe mostra nome, etichetta e set di etichette dei valori; lookfor cerca una parola in tutti i nomi e le etichette: è il modo più rapido per trovare le variabili in un questionario che non conoscete.tab Q16a: distribuzione del giudizio su Fratelli d'Italia, con le etichette.Output completo della sezione 2 (testo del log di Stata)
. *====================================================================
. * SEZIONE 2. Aprire ed esplorare i dati
. *====================================================================
. use "Itanes2022_POST_release 01_weighted.dta", clear
.
. * quante osservazioni e quante variabili
. describe, short
Contains data from Itanes2022_POST_release 01_weighted.dta
Observations: 4,696
Variables: 169 6 Jun 2023 00:52
Sorted by: seriale
.
. * le variabili del giudizio sui partiti
. describe Q16a-Q16h
Variable Storage Display Value
name type format label Variable label
-----------------------------------------------------------------------------------------------------------------------------------
Q16a double %25.0g Q16_01 Giudizio partito: Fratelli d'Italia
Q16b double %25.0g Q16_02 Giudizio partito: Lega
Q16c double %25.0g Q16_03 Giudizio partito: Forza Italia
Q16d double %25.0g Q16_04 Giudizio partito: Azione-Italia Viva
Q16e double %25.0g Q16_05 Giudizio partito: Movimento 5 Stelle
Q16f double %25.0g Q16_06 Giudizio partito: Partito Democratico
Q16g double %25.0g Q16_07 Giudizio partito: + Europa
Q16h double %25.0g Q16_08 * Giudizio partito: Sinistra Italiana-Europa Verde
.
. * cercare variabili per parola chiave nelle etichette
. lookfor sinistra
Variable Storage Display Value
name type format label Variable label
-----------------------------------------------------------------------------------------------------------------------------------
Q16h double %25.0g Q16_08 * Giudizio partito: Sinistra Italiana-Europa Verde
sez12 double %12.0g sez12 SINISTRA - DESTRA (9)
Q19 double %30.0g Q19_01 * Autocollocazione sinistra/destra
Q18a double %25.0g D18_01 Collocazione sinistra/destra: Fratelli d'Italia
Q18b double %25.0g D18_02 Collocazione sinistra/destra: Lega
Q18c double %25.0g D18_03 Collocazione sinistra/destra: Forza Italia
Q18d double %25.0g D18_04 Collocazione sinistra/destra: Azione-Italia Viva
Q18e double %25.0g D18_05 Collocazione sinistra/destra: Movimento 5 Stelle
Q18f double %25.0g D18_06 Collocazione sinistra/destra: Partito Democratico
Q18g double %25.0g D18_07 Collocazione sinistra/destra: +Europa
Q18h double %25.0g D18_08 * Collocazione sinistra/destra: Sinistra Italiana-Europa Verde
.
. * codici e etichette di una variabile
. codebook Q16a, tabulate(20)
-----------------------------------------------------------------------------------------------------------------------------------
Q16a Giudizio partito: Fratelli d'Italia
-----------------------------------------------------------------------------------------------------------------------------------
Type: Numeric (double)
Label: Q16_01
Range: [1,99] Units: 1
Unique values: 14 Missing .: 0/4,696
Tabulation: Freq. Numeric Label
1,913 1 0 = Non mi piace affatto
277 2 1
182 3 2
174 4 3
163 5 4
251 6 5
283 7 6
295 8 7
243 9 8
223 10 9
378 11 10 = Mi piace molto
18 97 Non lo conosco
162 98 Non saprei
134 99 Preferisco non rispondere
. tab Q16a
Giudizio partito: |
Fratelli d'Italia | Freq. Percent Cum.
--------------------------+-----------------------------------
0 = Non mi piace affatto | 1,913 40.74 40.74
1 | 277 5.90 46.64
2 | 182 3.88 50.51
3 | 174 3.71 54.22
4 | 163 3.47 57.69
5 | 251 5.34 63.03
6 | 283 6.03 69.06
7 | 295 6.28 75.34
8 | 243 5.17 80.52
9 | 223 4.75 85.26
10 = Mi piace molto | 378 8.05 93.31
Non lo conosco | 18 0.38 93.70
Non saprei | 162 3.45 97.15
Preferisco non rispondere | 134 2.85 100.00
--------------------------+-----------------------------------
Total | 4,696 100.00
. tab Q16a, nolabel
Giudizio |
partito: |
Fratelli |
d'Italia | Freq. Percent Cum.
------------+-----------------------------------
1 | 1,913 40.74 40.74
2 | 277 5.90 46.64
3 | 182 3.88 50.51
4 | 174 3.71 54.22
5 | 163 3.47 57.69
6 | 251 5.34 63.03
7 | 283 6.03 69.06
8 | 295 6.28 75.34
9 | 243 5.17 80.52
10 | 223 4.75 85.26
11 | 378 8.05 93.31
97 | 18 0.38 93.70
98 | 162 3.45 97.15
99 | 134 2.85 100.00
------------+-----------------------------------
Total | 4,696 100.00
.
.3Ricodificare le variabili
Regola d'oro: non sovrascrivete mai le variabili originali. Create variabili nuove con gen o con recode …, gen(), e controllate ogni ricodifica incrociando la variabile originale con quella nuova.
3.1 La variabile dipendente
* --- 3.1 Variabile dipendente: giudizio su FdI ----------------------
* Q16a e' codificata 1-11 (1 = "0 non mi piace affatto", 11 = "10
* mi piace molto"); 97, 98, 99 sono "non lo conosco", "non saprei",
* "preferisco non rispondere" -> missing
gen ptv_fdi = Q16a - 1 if inrange(Q16a, 1, 11)
label variable ptv_fdi "Giudizio su FdI (0-10)"
* controllo: ogni codice originale finisce nel valore giusto?
tab Q16a ptv_fdi if Q16a <= 3 | Q16a >= 10, missingLa condizione if inrange(Q16a, 1, 11) fa sì che i codici 97-99 diventino missing (.): Stata li escluderà automaticamente da medie e regressioni. La tabella di controllo mostra che 1 è diventato 0, 11 è diventato 10 e 97-99 sono diventati missing.
3.2 Gli altri partiti, con un ciclo
* --- 3.2 Lo stesso per tutti gli altri partiti, con un ciclo ---------
* lettera della variabile Itanes: b c d e f g h
local partiti "lega fi aziv m5s pd piueu avs"
local lettere "b c d e f g h"
forvalues i = 1/7 {
local p : word `i' of `partiti'
local l : word `i' of `lettere'
gen ptv_`p' = Q16`l' - 1 if inrange(Q16`l', 1, 11)
label variable ptv_`p' "Giudizio su `p' (0-10)"
}
* posizione dei partiti sull'asse sinistra-destra (percepita, 0-10)
* e giudizio sui leader (0-10): stessi codici, stesso ciclo
local partiti "fdi lega fi aziv m5s pd piueu avs"
local lettere "a b c d e f g h"
forvalues i = 1/8 {
local p : word `i' of `partiti'
local l : word `i' of `lettere'
gen lr_`p' = Q18`l' - 1 if inrange(Q18`l', 1, 11)
gen leader_`p' = Q17`l' - 1 if inrange(Q17`l', 1, 11)
label variable lr_`p' "Posizione percepita di `p' (0-10)"
label variable leader_`p' "Giudizio sul leader di `p' (0-10)"
}
label variable leader_fdi "Giudizio su Meloni (0-10)"Un ciclo forvalues ripete lo stesso blocco di comandi; local p : word `i' of `partiti' prende la i-esima parola della lista. Così otteniamo in poche righe le variabili ptv_, lr_ (posizione percepita del partito) e leader_ per tutti gli otto partiti. Il ciclo non è obbligatorio: potete anche scrivere un gen per ogni partito, il risultato è lo stesso.
3.3 L'autocollocazione sinistra-destra
* --- 3.3 Autocollocazione sinistra-destra ---------------------------
* Q19: 1-11 -> 0-10; 96 = non si colloca; 98, 99 -> missing
gen lr_self = Q19 - 1 if inrange(Q19, 1, 11)
label variable lr_self "Autocollocazione sinistra-destra (0-10)"
gen byte non_colloca = (Q19 == 96)
label variable non_colloca "Non si colloca sull'asse sinistra-destra"
tab non_collocaIl 16% degli intervistati (768 casi) dice di non collocarsi sull'asse sinistra-destra. Per loro non si può calcolare la distanza ideologica da un partito, quindi usciranno dai modelli che la contengono. Conviene saperlo e dirlo nella presentazione, perché chi non si colloca non è un sottoinsieme casuale degli elettori. Potete verificarlo voi, per esempio con tab non_colloca interesse, row (la variabile interesse è creata nella sezione 3.5).
3.4 Le variabili di controllo
* --- 3.4 Variabili socio-demografiche (controlli) -------------------
recode D01 (1 = 0 "Uomo") (2 = 1 "Donna") (else = .), gen(donna)
label variable donna "Genere"
recode eta_classe (1/2 = 1 "18-34") (3/4 = 2 "35-54") (5/6 = 3 "55+"), ///
gen(eta3)
label variable eta3 "Classe d'eta'"
recode scol (1/3 = 1 "Fino alla licenza media") (4/6 = 2 "Diploma") ///
(7/11 = 3 "Laurea o più"), gen(edu3)
label variable edu3 "Titolo di studio"
* reddito: chi non risponde (98, 99) e' il 17%: invece di perderlo
* lo teniamo come categoria a parte
recode D09 (1/2 = 1 "Meno di 20 mila") (3/4 = 2 "20-40 mila") ///
(5/11 = 3 "Oltre 40 mila") (98 99 = 4 "Non indica"), ///
gen(reddito)
label variable reddito "Reddito familiare annuo"
recode D11 (1 = 1 "Mai") (2/4 = 2 "Qualche volta l'anno o al mese") ///
(5/6 = 3 "Almeno 2 volte al mese") (else = .), gen(chiesa3)
label variable chiesa3 "Frequenza alla messa"
recode area (1 = 1 "Nord-ovest") (2 = 2 "Nord-est") (3 = 3 "Centro") ///
(4/5 = 4 "Sud e isole"), gen(area4)
label variable area4 "Zona geografica"
* condizione occupazionale: due domande (D06 lavora si'/no, D06_2
* condizione di chi non lavora) -> una sola variabile
gen occup = .
replace occup = 1 if D06 == 1
replace occup = 2 if D06_2 == 1
replace occup = 3 if D06_2 == 2
replace occup = 4 if D06_2 == 3
replace occup = 5 if inlist(D06_2, 4, 5, 6)
label define occup_l 1 "Occupato/a" 2 "Disoccupato/a" 3 "Studente/ssa" ///
4 "Pensionato/a" 5 "Casalinga/o e altro"
label values occup occup_l
label variable occup "Condizione occupazionale"
* controllo delle ricodifiche: originale x nuova
tab scol edu3, missing
tab D09 reddito, missingrecode … (else = .)manda a missing tutto ciò che non è elencato (per esempio «preferisco non rispondere»).- Per il reddito quasi un intervistato su cinque non risponde: invece di perdere quei casi li teniamo come categoria «Non indica». È una scelta comune e va dichiarata.
- La condizione occupazionale si costruisce da due domande diverse: è un esempio tipico di variabile da costruire con più
replace … if ….
3.5 Gli atteggiamenti politici
* --- 3.5 Atteggiamenti politici ------------------------------------
* percezione dell'economia italiana: 1 molto migliorata ... 5 molto
* peggiorata (valori alti = giudizio piu' negativo)
gen econ_peggio = Q09 if inrange(Q09, 1, 5)
label variable econ_peggio "Economia italiana peggiorata (1-5)"
* interesse per la politica (sofisticazione, settimana 4)
recode Q01 (1 2 = 1 "Molto o abbastanza") (3 4 = 0 "Poco o per niente") ///
(else = .), gen(interesse)
label variable interesse "Interesse per la politica"
* identificazione di partito: Q23c chiesta solo a chi si sente vicino
* a un partito (Q23a o Q23b = si'); tutti gli altri valgono 0
gen byte pid_fdi = (Q23c == 1) if !inlist(Q23c, 98, 99)
gen byte pid_lega = (Q23c == 2) if !inlist(Q23c, 98, 99)
gen byte pid_fi = (Q23c == 3) if !inlist(Q23c, 98, 99)
gen byte pid_aziv = inlist(Q23c, 4, 5) if !inlist(Q23c, 98, 99)
gen byte pid_m5s = (Q23c == 6) if !inlist(Q23c, 98, 99)
gen byte pid_pd = (Q23c == 7) if !inlist(Q23c, 98, 99)
gen byte pid_piueu = (Q23c == 8) if !inlist(Q23c, 98, 99)
gen byte pid_avs = inlist(Q23c, 10, 11) if !inlist(Q23c, 98, 99)
label variable pid_fdi "Si sente vicino a FdI"
tab pid_fdi, missingL'identificazione di partito si chiede in due passaggi: prima «si sente vicino a un partito?», poi «quale?». Chi non si sente vicino a nessun partito ha Q23c «non si applica» e riceve 0 su tutte le variabili pid_; solo chi non sa o non risponde diventa missing.
Output completo della sezione 3 (testo del log di Stata)
. *====================================================================
. * SEZIONE 3. Ricodificare le variabili
. *====================================================================
.
. * --- 3.1 Variabile dipendente: giudizio su FdI ----------------------
. * Q16a e' codificata 1-11 (1 = "0 non mi piace affatto", 11 = "10
. * mi piace molto"); 97, 98, 99 sono "non lo conosco", "non saprei",
. * "preferisco non rispondere" -> missing
. gen ptv_fdi = Q16a - 1 if inrange(Q16a, 1, 11)
(314 missing values generated)
. label variable ptv_fdi "Giudizio su FdI (0-10)"
.
. * controllo: ogni codice originale finisce nel valore giusto?
. tab Q16a ptv_fdi if Q16a <= 3 | Q16a >= 10, missing
Giudizio partito: | Giudizio su FdI (0-10)
Fratelli d'Italia | 0 1 2 9 10 . | Total
----------------------+------------------------------------------------------------------+----------
0 = Non mi piace affa | 1,913 0 0 0 0 0 | 1,913
1 | 0 277 0 0 0 0 | 277
2 | 0 0 182 0 0 0 | 182
9 | 0 0 0 223 0 0 | 223
10 = Mi piace molto | 0 0 0 0 378 0 | 378
Non lo conosco | 0 0 0 0 0 18 | 18
Non saprei | 0 0 0 0 0 162 | 162
Preferisco non rispon | 0 0 0 0 0 134 | 134
----------------------+------------------------------------------------------------------+----------
Total | 1,913 277 182 223 378 314 | 3,287
.
. * --- 3.2 Lo stesso per tutti gli altri partiti, con un ciclo ---------
. * lettera della variabile Itanes: b c d e f g h
. local partiti "lega fi aziv m5s pd piueu avs"
. local lettere "b c d e f g h"
. forvalues i = 1/7 {
2. local p : word `i' of `partiti'
3. local l : word `i' of `lettere'
4. gen ptv_`p' = Q16`l' - 1 if inrange(Q16`l', 1, 11)
5. label variable ptv_`p' "Giudizio su `p' (0-10)"
6. }
(284 missing values generated)
(295 missing values generated)
(428 missing values generated)
(286 missing values generated)
(300 missing values generated)
(522 missing values generated)
(437 missing values generated)
.
. * posizione dei partiti sull'asse sinistra-destra (percepita, 0-10)
. * e giudizio sui leader (0-10): stessi codici, stesso ciclo
. local partiti "fdi lega fi aziv m5s pd piueu avs"
. local lettere "a b c d e f g h"
. forvalues i = 1/8 {
2. local p : word `i' of `partiti'
3. local l : word `i' of `lettere'
4. gen lr_`p' = Q18`l' - 1 if inrange(Q18`l', 1, 11)
5. gen leader_`p' = Q17`l' - 1 if inrange(Q17`l', 1, 11)
6. label variable lr_`p' "Posizione percepita di `p' (0-10)"
7. label variable leader_`p' "Giudizio sul leader di `p' (0-10)"
8. }
(438 missing values generated)
(269 missing values generated)
(444 missing values generated)
(251 missing values generated)
(432 missing values generated)
(257 missing values generated)
(773 missing values generated)
(336 missing values generated)
(684 missing values generated)
(259 missing values generated)
(471 missing values generated)
(323 missing values generated)
(906 missing values generated)
(339 missing values generated)
(573 missing values generated)
(1,061 missing values generated)
. label variable leader_fdi "Giudizio su Meloni (0-10)"
.
. * --- 3.3 Autocollocazione sinistra-destra ---------------------------
. * Q19: 1-11 -> 0-10; 96 = non si colloca; 98, 99 -> missing
. gen lr_self = Q19 - 1 if inrange(Q19, 1, 11)
(965 missing values generated)
. label variable lr_self "Autocollocazione sinistra-destra (0-10)"
. gen byte non_colloca = (Q19 == 96)
. label variable non_colloca "Non si colloca sull'asse sinistra-destra"
. tab non_colloca
Non si |
colloca |
sull'asse |
sinistra-de |
stra | Freq. Percent Cum.
------------+-----------------------------------
0 | 3,928 83.65 83.65
1 | 768 16.35 100.00
------------+-----------------------------------
Total | 4,696 100.00
.
. * --- 3.4 Variabili socio-demografiche (controlli) -------------------
. recode D01 (1 = 0 "Uomo") (2 = 1 "Donna") (else = .), gen(donna)
(4,696 differences between D01 and donna)
. label variable donna "Genere"
.
. recode eta_classe (1/2 = 1 "18-34") (3/4 = 2 "35-54") (5/6 = 3 "55+"), ///
> gen(eta3)
(4,417 differences between eta_classe and eta3)
. label variable eta3 "Classe d'eta'"
.
. recode scol (1/3 = 1 "Fino alla licenza media") (4/6 = 2 "Diploma") ///
> (7/11 = 3 "Laurea o più"), gen(edu3)
(4,634 differences between scol and edu3)
. label variable edu3 "Titolo di studio"
.
. * reddito: chi non risponde (98, 99) e' il 17%: invece di perderlo
. * lo teniamo come categoria a parte
. recode D09 (1/2 = 1 "Meno di 20 mila") (3/4 = 2 "20-40 mila") ///
> (5/11 = 3 "Oltre 40 mila") (98 99 = 4 "Non indica"), ///
> gen(reddito)
(4,399 differences between D09 and reddito)
. label variable reddito "Reddito familiare annuo"
.
. recode D11 (1 = 1 "Mai") (2/4 = 2 "Qualche volta l'anno o al mese") ///
> (5/6 = 3 "Almeno 2 volte al mese") (else = .), gen(chiesa3)
(2,509 differences between D11 and chiesa3)
. label variable chiesa3 "Frequenza alla messa"
.
. recode area (1 = 1 "Nord-ovest") (2 = 2 "Nord-est") (3 = 3 "Centro") ///
> (4/5 = 4 "Sud e isole"), gen(area4)
(547 differences between area and area4)
. label variable area4 "Zona geografica"
.
. * condizione occupazionale: due domande (D06 lavora si'/no, D06_2
. * condizione di chi non lavora) -> una sola variabile
. gen occup = .
(4,696 missing values generated)
. replace occup = 1 if D06 == 1
(2,383 real changes made)
. replace occup = 2 if D06_2 == 1
(307 real changes made)
. replace occup = 3 if D06_2 == 2
(239 real changes made)
. replace occup = 4 if D06_2 == 3
(1,085 real changes made)
. replace occup = 5 if inlist(D06_2, 4, 5, 6)
(481 real changes made)
. label define occup_l 1 "Occupato/a" 2 "Disoccupato/a" 3 "Studente/ssa" ///
> 4 "Pensionato/a" 5 "Casalinga/o e altro"
. label values occup occup_l
. label variable occup "Condizione occupazionale"
.
. * controllo delle ricodifiche: originale x nuova
. tab scol edu3, missing
Qual è il Suo | Titolo di studio
titolo di studio? | Fino alla Diploma Laurea o | Total
----------------------+---------------------------------+----------
elementare / privo di | 62 0 0 | 62
media inferiore | 479 0 0 | 479
superiori in corso | 56 0 0 | 56
diploma di istituto p | 0 405 0 | 405
diploma di maturità ( | 0 2,453 0 | 2,453
università in corso / | 0 441 0 | 441
diploma universitario | 0 0 207 | 207
laurea triennale di I | 0 0 94 | 94
laurea specialistica | 0 0 373 | 373
master / scuola di sp | 0 0 100 | 100
dottorato di ricerca | 0 0 26 | 26
----------------------+---------------------------------+----------
Total | 597 3,299 800 | 4,696
. tab D09 reddito, missing
Può indicare qual |
è all'incirca il |
reddito annuale della | Reddito familiare annuo
sua famiglia? | Meno di 2 20-40 mil Oltre 40 Non indic | Total
----------------------+--------------------------------------------+----------
Meno di Euro 9.990 | 297 0 0 0 | 297
Euro 10.000-19.990 | 711 0 0 0 | 711
Euro 20.000-29.990 | 0 964 0 0 | 964
Euro 30.000-39.990 | 0 794 0 0 | 794
Euro 40.000-49.990 | 0 0 464 0 | 464
Euro 50.000-59.990 | 0 0 293 0 | 293
Euro 60.000-69.990 | 0 0 128 0 | 128
Euro 70.000-79.990 | 0 0 94 0 | 94
Euro 80.000-89.900 | 0 0 45 0 | 45
Euro 90.000-99.990 | 0 0 29 0 | 29
oltre Euro 100.000 | 0 0 53 0 | 53
Non saprei | 0 0 0 190 | 190
Preferisco non rispon | 0 0 0 634 | 634
----------------------+--------------------------------------------+----------
Total | 1,008 1,758 1,106 824 | 4,696
.
. * --- 3.5 Atteggiamenti politici ------------------------------------
. * percezione dell'economia italiana: 1 molto migliorata ... 5 molto
. * peggiorata (valori alti = giudizio piu' negativo)
. gen econ_peggio = Q09 if inrange(Q09, 1, 5)
(202 missing values generated)
. label variable econ_peggio "Economia italiana peggiorata (1-5)"
.
. * interesse per la politica (sofisticazione, settimana 4)
. recode Q01 (1 2 = 1 "Molto o abbastanza") (3 4 = 0 "Poco o per niente") ///
> (else = .), gen(interesse)
(3,882 differences between Q01 and interesse)
. label variable interesse "Interesse per la politica"
.
. * identificazione di partito: Q23c chiesta solo a chi si sente vicino
. * a un partito (Q23a o Q23b = si'); tutti gli altri valgono 0
. gen byte pid_fdi = (Q23c == 1) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_lega = (Q23c == 2) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_fi = (Q23c == 3) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_aziv = inlist(Q23c, 4, 5) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_m5s = (Q23c == 6) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_pd = (Q23c == 7) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_piueu = (Q23c == 8) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. gen byte pid_avs = inlist(Q23c, 10, 11) if !inlist(Q23c, 98, 99)
(83 missing values generated)
. label variable pid_fdi "Si sente vicino a FdI"
. tab pid_fdi, missing
Si sente |
vicino a |
FdI | Freq. Percent Cum.
------------+-----------------------------------
0 | 4,072 86.71 86.71
1 | 541 11.52 98.23
. | 83 1.77 100.00
------------+-----------------------------------
Total | 4,696 100.00
.
.4Descrivere la variabile dipendente
Prima dei modelli, descrivete la variabile dipendente: media, dispersione, forma della distribuzione, differenze tra gruppi. Sono le prime slide della sezione «Dati».
* peso socio-demografico: [aw=] per le descrittive, [pw=] per le
* regressioni (in Stata i pesi pw calcolano errori standard robusti)
summarize ptv_fdi
summarize ptv_fdi [aw=wsociodem_trim]
histogram ptv_fdi, discrete percent ///
xlabel(0(1)10) ytitle("% degli intervistati") ///
xtitle("Giudizio su Fratelli d'Italia (0 = per niente, 10 = molto)") ///
title("Quanto piace Fratelli d'Italia?") ///
note("Fonte: Itanes 2022, onda post-elettorale (dati non pesati)")
graph export "grafici/fig1_istogramma_ptv_fdi.png", replace width(1600)
* confronto tra partiti: media, deviazione standard, N
tabstat ptv_fdi ptv_lega ptv_fi ptv_aziv ptv_m5s ptv_pd ptv_piueu ptv_avs ///
[aw=wsociodem_trim], statistics(mean sd n) columns(statistics) format(%5.2f)
* giudizio medio per gruppo sociale
tabstat ptv_fdi [aw=wsociodem_trim], by(edu3) statistics(mean sd n) format(%5.2f)tabstat.La distribuzione non è normale: una grossa massa a 0 e una seconda moda tra 6 e 10. Non impedisce di usare l'OLS, che resta lo strumento standard per le PTV, ma è un'informazione da riportare. La tabella per titolo di studio mostra già una prima differenza: 3,50 tra chi ha al massimo la licenza media, 2,85 tra i laureati.
Output completo della sezione 4 (testo del log di Stata)
. *====================================================================
. * SEZIONE 4. Descrivere la variabile dipendente
. *====================================================================
. * peso socio-demografico: [aw=] per le descrittive, [pw=] per le
. * regressioni (in Stata i pesi pw calcolano errori standard robusti)
. summarize ptv_fdi
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
ptv_fdi | 4,382 3.323597 3.673105 0 10
. summarize ptv_fdi [aw=wsociodem_trim]
Variable | Obs Weight Mean Std. dev. Min Max
-------------+-----------------------------------------------------------------
ptv_fdi | 4,382 3886.54571 3.31127 3.684083 0 10
.
. histogram ptv_fdi, discrete percent ///
> xlabel(0(1)10) ytitle("% degli intervistati") ///
> xtitle("Giudizio su Fratelli d'Italia (0 = per niente, 10 = molto)") ///
> title("Quanto piace Fratelli d'Italia?") ///
> note("Fonte: Itanes 2022, onda post-elettorale (dati non pesati)")
(start=0, width=1)
. graph export "grafici/fig1_istogramma_ptv_fdi.png", replace width(1600)
file C:/Users/nome/Documents/OPEL/grafici/fig1_istogramma_ptv_fdi.png saved as PNG format
.
. * confronto tra partiti: media, deviazione standard, N
. tabstat ptv_fdi ptv_lega ptv_fi ptv_aziv ptv_m5s ptv_pd ptv_piueu ptv_avs ///
> [aw=wsociodem_trim], statistics(mean sd n) columns(statistics) format(%5.2f)
Variable | Mean SD N
-------------+------------------------------
ptv_fdi | 3.31 3.68 4382.00
ptv_lega | 2.64 3.25 4412.00
ptv_fi | 2.57 3.13 4401.00
ptv_aziv | 2.46 2.92 4268.00
ptv_m5s | 3.31 3.36 4410.00
ptv_pd | 3.19 3.09 4396.00
ptv_piueu | 2.81 2.91 4174.00
ptv_avs | 2.82 2.99 4259.00
--------------------------------------------
.
. * giudizio medio per gruppo sociale
. tabstat ptv_fdi [aw=wsociodem_trim], by(edu3) statistics(mean sd n) format(%5.2f)
Summary for variables: ptv_fdi
Group variable: edu3 (Titolo di studio)
edu3 | Mean SD N
-----------------+------------------------------
Fino alla licenz | 3.50 3.81 538.00
Diploma | 3.31 3.64 3081.00
Laurea o più | 2.85 3.44 763.00
-----------------+------------------------------
Total | 3.31 3.68 4382.00
------------------------------------------------
.
.5Le variabili focali: prossimità e valenza
5.1 La distanza ideologica (modello spaziale di Downs)
Secondo il modello spaziale, un elettore valuta meglio i partiti più vicini alla propria posizione. La prossimità si misura come distanza assoluta tra la posizione dell'intervistato i e quella del partito j:
distanzaij = | autocollocazionei − posizionej |
* --- 5.1 Distanza ideologica dal partito ----------------------------
* Posizione del partito = media delle collocazioni date da tutti gli
* intervistati (riduce la "proiezione": chi ama un partito tende a
* collocarlo vicino a se').
summarize lr_fdi [aw=wsociodem_trim]
scalar pos_fdi = r(mean)
display "Posizione media di FdI (0-10): " %4.2f pos_fdi
gen dist_fdi = abs(lr_self - pos_fdi)
label variable dist_fdi "Distanza ideologica da FdI (0-10)"
summarize dist_fdi
* lo stesso per gli altri partiti
foreach p in lega fi aziv m5s pd piueu avs {
quietly summarize lr_`p' [aw=wsociodem_trim]
display "Posizione media di `p': " %4.2f r(mean)
gen dist_`p' = abs(lr_self - r(mean))
label variable dist_`p' "Distanza ideologica da `p' (0-10)"
}r(mean) è il risultato salvato da summarize.Perché la posizione media e non quella percepita da ciascuno? Chi apprezza un partito tende a collocarlo vicino a sé (proiezione), e chi lo detesta lo allontana: con la posizione percepita la distanza sarebbe in parte conseguenza, non causa, del giudizio. Le posizioni medie stimate sono: AVS 1,88; PD 2,93; +Europa 3,43; M5S 3,59; Azione-IV 4,51; FI 7,37; Lega 7,95; FdI 8,38. Nell'EES farete lo stesso su ciascuna dimensione (economia, Europa, immigrazione), se il questionario chiede sia la posizione dell'intervistato sia quella dei partiti sulla stessa scala.
5.2 La valenza (Stokes)
* --- 5.2 Valenza: il giudizio sul leader ----------------------------
* Nell'onda post di Itanes 2022 non c'e' una domanda sulla competenza
* dei partiti: usiamo il giudizio sul leader come indicatore di
* valenza (con cautela: e' molto vicino al giudizio sul partito).
* Nell'EES userete le domande sulla credibilita'/competenza.
summarize leader_fdi5.3 Le correlazioni
* --- 5.3 Correlazioni tra variabile dipendente e variabili focali --
pwcorr ptv_fdi dist_fdi leader_fdi lr_self pid_fdi, obs star(0.05)Tre cose da notare. La distanza è correlata negativamente con il giudizio (−0,74), come previsto. Il giudizio sul leader è quasi sovrapposto al giudizio sul partito (0,91). Distanza da FdI e autocollocazione sono correlate a −0,96: per un partito collocato all'estremo, «essere vicini a FdI» e «essere di destra» sono quasi la stessa informazione (lo ritroveremo nella sezione 7.5).
Output completo della sezione 5 (testo del log di Stata)
. *====================================================================
. * SEZIONE 5. Le variabili focali: prossimita' (Downs) e valenza (Stokes)
. *====================================================================
.
. * --- 5.1 Distanza ideologica dal partito ----------------------------
. * Posizione del partito = media delle collocazioni date da tutti gli
. * intervistati (riduce la "proiezione": chi ama un partito tende a
. * collocarlo vicino a se').
. summarize lr_fdi [aw=wsociodem_trim]
Variable | Obs Weight Mean Std. dev. Min Max
-------------+-----------------------------------------------------------------
lr_fdi | 4,258 3698.62906 8.383564 2.359165 0 10
. scalar pos_fdi = r(mean)
. display "Posizione media di FdI (0-10): " %4.2f pos_fdi
Posizione media di FdI (0-10): 8.38
.
. gen dist_fdi = abs(lr_self - pos_fdi)
(965 missing values generated)
. label variable dist_fdi "Distanza ideologica da FdI (0-10)"
. summarize dist_fdi
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
dist_fdi | 3,731 3.93626 2.553159 .3835643 8.383564
.
. * lo stesso per gli altri partiti
. foreach p in lega fi aziv m5s pd piueu avs {
2. quietly summarize lr_`p' [aw=wsociodem_trim]
3. display "Posizione media di `p': " %4.2f r(mean)
4. gen dist_`p' = abs(lr_self - r(mean))
5. label variable dist_`p' "Distanza ideologica da `p' (0-10)"
6. }
Posizione media di lega: 7.95
(965 missing values generated)
Posizione media di fi: 7.37
(965 missing values generated)
Posizione media di aziv: 4.51
(965 missing values generated)
Posizione media di m5s: 3.59
(965 missing values generated)
Posizione media di pd: 2.93
(965 missing values generated)
Posizione media di piueu: 3.43
(965 missing values generated)
Posizione media di avs: 1.88
(965 missing values generated)
.
. * --- 5.2 Valenza: il giudizio sul leader ----------------------------
. * Nell'onda post di Itanes 2022 non c'e' una domanda sulla competenza
. * dei partiti: usiamo il giudizio sul leader come indicatore di
. * valenza (con cautela: e' molto vicino al giudizio sul partito).
. * Nell'EES userete le domande sulla credibilita'/competenza.
. summarize leader_fdi
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
leader_fdi | 4,427 3.630901 3.722251 0 10
.
. * --- 5.3 Correlazioni tra variabile dipendente e variabili focali --
. pwcorr ptv_fdi dist_fdi leader_fdi lr_self pid_fdi, obs star(0.05)
| ptv_fdi dist_fdi leade~di lr_self pid_fdi
-------------+---------------------------------------------
ptv_fdi | 1.0000
| 4382
|
dist_fdi | -0.7374* 1.0000
| 3636 3731
|
leader_fdi | 0.9147* -0.7229* 1.0000
| 4350 3652 4427
|
lr_self | 0.7588* -0.9582* 0.7470* 1.0000
| 3636 3731 3652 3731
|
pid_fdi | 0.5566* -0.4204* 0.5323* 0.4736* 1.0000
| 4318 3674 4359 3674 4613
|
.
.6Prima la relazione bivariata
regress ptv_fdi dist_fdi [pw=wsociodem_trim]
twoway (scatter ptv_fdi dist_fdi, jitter(6) msize(vsmall) mcolor(%15)) ///
(lfit ptv_fdi dist_fdi [aw=wsociodem_trim], lwidth(thick)), ///
ytitle("Giudizio su FdI (0-10)") ///
xtitle("Distanza ideologica da FdI (0-10)") ///
legend(off) title("Più si è lontani, meno piace il partito")
graph export "grafici/fig2_scatter_distanza.png", replace width(1600)Come si legge: chi ha distanza zero da FdI dà in media 7,70 (la costante); ogni punto di distanza in più abbassa il giudizio di 1,07 punti. Il coefficiente è molto preciso (errore standard 0,02, p < 0,001) e la sola distanza spiega il 53% della varianza (R² = 0,53). N = 3.636: i casi validi su entrambe le variabili.
Output completo della sezione 6 (testo del log di Stata)
. *====================================================================
. * SEZIONE 6. Prima la relazione bivariata
. *====================================================================
. regress ptv_fdi dist_fdi [pw=wsociodem_trim]
(sum of wgt is 3,111.72995471954)
Linear regression Number of obs = 3,636
F(1, 3634) = 2578.26
Prob > F = 0.0000
R-squared = 0.5258
Root MSE = 2.603
------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
dist_fdi | -1.074027 .021152 -50.78 0.000 -1.115498 -1.032556
_cons | 7.696223 .1247904 61.67 0.000 7.451557 7.940889
------------------------------------------------------------------------------
.
. twoway (scatter ptv_fdi dist_fdi, jitter(6) msize(vsmall) mcolor(%15)) ///
> (lfit ptv_fdi dist_fdi [aw=wsociodem_trim], lwidth(thick)), ///
> ytitle("Giudizio su FdI (0-10)") ///
> xtitle("Distanza ideologica da FdI (0-10)") ///
> legend(off) title("Più si è lontani, meno piace il partito")
. graph export "grafici/fig2_scatter_distanza.png", replace width(1600)
file C:/Users/nome/Documents/OPEL/grafici/fig2_scatter_distanza.png saved as PNG format
.
.7Il modello multivariato (OLS) a blocchi
La relazione bivariata può essere in parte spuria: chi è lontano da FdI è anche, per esempio, più spesso laureato o meno religioso. Il modello multivariato stima l'effetto di ciascuna variabile a parità di tutte le altre. Si costruisce a blocchi: prima i controlli socio-demografici, poi gli atteggiamenti, poi le variabili focali. Osservare come cambiano i coefficienti da un blocco all'altro è parte dell'interpretazione.
* abbreviazioni per non riscrivere sempre la stessa lista
global socio "i.donna i.eta3 i.edu3 i.reddito i.chiesa3 i.occup"
global controlli "$socio i.area4"
global w "[pw=wsociodem_trim]"Le global sono abbreviazioni: $controlli verrà sostituito dalla lista di variabili. Il prefisso i. dice a Stata che la variabile è categoriale: crea automaticamente una dummy per ogni categoria tranne la prima, che fa da categoria di riferimento.
7.1 Un campione comune
* --- 7.1 Campione comune --------------------------------------------
* I modelli a blocchi vanno confrontati sugli STESSI casi: teniamo
* solo chi ha valori validi su tutte le variabili usate.
mark campione
markout campione ptv_fdi donna eta3 edu3 reddito chiesa3 area4 occup ///
econ_peggio pid_fdi dist_fdi leader_fdi interesse
tab campione
* quanti casi persi per variabile?
misstable summarize ptv_fdi donna chiesa3 econ_peggio pid_fdi dist_fdi ///
leader_fdi interesseI modelli a blocchi vanno confrontati sugli stessi casi, altrimenti le differenze tra modelli potrebbero dipendere dal campione e non dalle variabili aggiunte. mark e markout creano una variabile che vale 1 solo per chi ha valori validi su tutte le variabili. Qui restano 3.269 casi su 4.696 (70%); misstable mostra che la perdita maggiore viene dall'autocollocazione (chi non si colloca).
7.2 Leggere un modello per intero
* --- 7.2 Un modello letto per intero --------------------------------
regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi $w if campione, vsquishvsquish elimina le righe vuote; nel do-file la tabella è identica.Come si legge
- Number of obs: 3.269 casi. R-squared: il modello spiega il 63% della varianza del giudizio su FdI. F e Prob > F: il modello nel suo insieme è significativo.
- Coefficient: variazione attesa della variabile dipendente (in punti della scala 0-10) per un'unità in più della variabile, tenendo costanti le altre. Per le variabili categoriali è la differenza rispetto alla categoria di riferimento (uomini, 18-34 anni, fino alla licenza media, ecc.).
pid_fdi= 3,58: chi si sente vicino a FdI gli dà 3,6 punti in più di chi non lo è, a parità di distanza e di caratteristiche sociali.dist_fdi= −0,85: ogni punto di distanza ideologica in più costa 0,85 punti di giudizio. L'effetto si riduce rispetto alla bivariata (−1,07), perché parte di quell'effetto passava per l'identificazione di partito.- Robust std. err., t e P>|t|: precisione della stima e test dell'ipotesi che il coefficiente sia zero. P < 0,05 è la soglia convenzionale. [95% conf. interval]: l'intervallo che con il 95% di confidenza contiene il vero valore.
7.3 Modelli a blocchi in una sola tabella
* --- 7.3 Modelli a blocchi e tabella ----------------------------------
eststo clear
eststo m1: regress ptv_fdi $controlli $w if campione
eststo m2: regress ptv_fdi $controlli econ_peggio pid_fdi $w if campione
eststo m3: regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi $w if campione
eststo m4: regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi ///
leader_fdi $w if campione
esttab m1 m2 m3 m4, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
r2 ar2 label nobaselevels nogaps varwidth(32) modelwidth(13) ///
mtitles("Socio-dem." "+ PID, econ." "+ distanza" "+ leader")esttab: coefficienti, errori standard tra parentesi, asterischi di significatività, N e R².Cosa racconta la tabella:
- L'R² sale da 0,09 (solo socio-demografiche) a 0,38 (con PID ed economia), 0,63 (con la distanza) e 0,87 (con il leader). Le caratteristiche sociali da sole spiegano poco; gli atteggiamenti politici spiegano molto.
- La religiosità ha un effetto forte nel modello 1 (+1,9/+2,0 punti per chi va a messa) che si riduce a +0,4/0,5 nel modello 3: in larga parte passa per l'identificazione e la collocazione ideologica. Lo stesso per la laurea (−0,91 → −0,14, non più significativa).
- Con il giudizio sul leader (modello 4) quasi tutti gli altri coefficienti si riducono drasticamente: è il segnale che quella variabile è «troppo vicina» alla dipendente (sezione 5.2). Nel lavoro di gruppo è il tipo di risultato da discutere, non solo da riportare.
7.4 Coefficienti standardizzati
* --- 7.4 Coefficienti standardizzati (confrontare le variabili focali)
regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi leader_fdi ///
[aw=wsociodem_trim] if campione, betaDistanza (0-10), identificazione (0/1) e giudizio sul leader (0-10) sono misurate su scale diverse. L'opzione beta riporta i coefficienti standardizzati (effetto di una deviazione standard), utili per confrontare il peso relativo delle variabili focali: leader 0,78, distanza −0,13, PID 0,08. Qui il peso è indicato come [aw=]: i coefficienti sono identici a quelli del modello con [pw=], cambiano solo gli errori standard (non robusti). Usate questa tabella per confrontare le grandezze, non per i test di significatività.
7.5 Diagnostica: multicollinearità
* --- 7.5 Diagnostica: multicollinearita' ------------------------------
* (estat vif richiede un modello senza pesi pw)
quietly regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi ///
leader_fdi lr_self if campione
estat vifestat vif dopo un modello che contiene sia la distanza da FdI sia l'autocollocazione.Il VIF (variance inflation factor) misura quanto una variabile è «spiegata» dalle altre. Valori sopra 10 indicano un problema: qui distanza (13,3) e autocollocazione (14,5) sono quasi la stessa informazione (correlazione −0,96) e non vanno messe insieme nello stesso modello. È per questo che il modello principale non contiene lr_self.
Output completo della sezione 7 (testo del log di Stata)
. *====================================================================
. * SEZIONE 7. Il modello multivariato (OLS) a blocchi
. *====================================================================
. * abbreviazioni per non riscrivere sempre la stessa lista
. global socio "i.donna i.eta3 i.edu3 i.reddito i.chiesa3 i.occup"
. global controlli "$socio i.area4"
. global w "[pw=wsociodem_trim]"
.
. * --- 7.1 Campione comune --------------------------------------------
. * I modelli a blocchi vanno confrontati sugli STESSI casi: teniamo
. * solo chi ha valori validi su tutte le variabili usate.
. mark campione
. markout campione ptv_fdi donna eta3 edu3 reddito chiesa3 area4 occup ///
> econ_peggio pid_fdi dist_fdi leader_fdi interesse
. tab campione
campione | Freq. Percent Cum.
------------+-----------------------------------
0 | 1,427 30.39 30.39
1 | 3,269 69.61 100.00
------------+-----------------------------------
Total | 4,696 100.00
.
. * quanti casi persi per variabile?
. misstable summarize ptv_fdi donna chiesa3 econ_peggio pid_fdi dist_fdi ///
> leader_fdi interesse
Obs<.
+------------------------------
| | Unique
Variable | Obs=. Obs>. Obs<. | values Min Max
-------------+--------------------------------+------------------------------
ptv_fdi | 314 4,382 | 11 0 10
donna | 174 4,522 | 2 0 1
chiesa3 | 302 4,394 | 3 1 3
econ_peggio | 202 4,494 | 5 1 5
pid_fdi | 83 4,613 | 2 0 1
dist_fdi | 965 3,731 | 11 .3835643 8.383564
leader_fdi | 269 4,427 | 11 0 10
interesse | 58 4,638 | 2 0 1
-----------------------------------------------------------------------------
.
. * --- 7.2 Un modello letto per intero --------------------------------
. regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi $w if campione, vsquish
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(20, 3248) = 273.21
Prob > F = 0.0000
R-squared = 0.6314
Root MSE = 2.3195
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0369513 .1219959 0.30 0.762 -.2022454 .276148
eta3 |
35-54 | .0618876 .174604 0.35 0.723 -.2804575 .4042328
55+ | .1386999 .1919567 0.72 0.470 -.2376685 .5150684
edu3 |
Diploma | .131852 .1540101 0.86 0.392 -.1701147 .4338188
Laurea o più | -.1370766 .1780974 -0.77 0.442 -.4862712 .2121179
reddito |
20-40 mila | -.2259909 .1732584 -1.30 0.192 -.5656978 .113716
Oltre 40 mila | -.0716238 .1805445 -0.40 0.692 -.4256165 .2823689
Non indica | -.1643038 .1927115 -0.85 0.394 -.5421523 .2135447
chiesa3 |
Qualche volta l'anno o al mese | .4718569 .1344244 3.51 0.000 .2082917 .7354221
Almeno 2 volte al mese | .4282182 .1678971 2.55 0.011 .0990233 .7574132
occup |
Disoccupato/a | -.1043138 .3099924 -0.34 0.737 -.7121143 .5034866
Studente/ssa | -.4917451 .2303293 -2.13 0.033 -.9433505 -.0401397
Pensionato/a | -.2202483 .1689327 -1.30 0.192 -.5514738 .1109772
Casalinga/o e altro | .0434507 .2471877 0.18 0.860 -.4412089 .5281103
area4 |
Nord-est | .1273238 .1690688 0.75 0.451 -.2041686 .4588161
Centro | -.0358715 .153711 -0.23 0.815 -.3372518 .2655088
Sud e isole | .2104521 .1526428 1.38 0.168 -.0888338 .5097381
econ_peggio | -.0887351 .0569386 -1.56 0.119 -.2003743 .0229041
pid_fdi | 3.579004 .1763219 20.30 0.000 3.233291 3.924718
dist_fdi | -.8530285 .0261255 -32.65 0.000 -.9042527 -.8018043
_cons | 6.330103 .3720315 17.01 0.000 5.600663 7.059543
-------------------------------------------------------------------------------------------------
.
. * --- 7.3 Modelli a blocchi e tabella ----------------------------------
. eststo clear
. eststo m1: regress ptv_fdi $controlli $w if campione
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(17, 3251) = 11.87
Prob > F = 0.0000
R-squared = 0.0881
Root MSE = 3.6464
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | -.2137035 .1839407 -1.16 0.245 -.5743549 .1469479
|
eta3 |
35-54 | .1889398 .2507876 0.75 0.451 -.302778 .6806577
55+ | .0201837 .2968981 0.07 0.946 -.5619427 .60231
|
edu3 |
Diploma | -.3888449 .2342406 -1.66 0.097 -.848119 .0704293
Laurea o più | -.9057217 .2755818 -3.29 0.001 -1.446053 -.3653901
|
reddito |
20-40 mila | -.1418956 .2635039 -0.54 0.590 -.6585462 .3747549
Oltre 40 mila | .5001492 .2802229 1.78 0.074 -.0492821 1.04958
Non indica | -.2957258 .3199725 -0.92 0.355 -.9230939 .3316424
|
chiesa3 |
Qualche volta l'anno o al mese | 1.882724 .1987813 9.47 0.000 1.492974 2.272473
Almeno 2 volte al mese | 2.023179 .2509002 8.06 0.000 1.531241 2.515118
|
occup |
Disoccupato/a | -.1432669 .4503197 -0.32 0.750 -1.026206 .7396722
Studente/ssa | -1.045028 .3443603 -3.03 0.002 -1.720213 -.3698425
Pensionato/a | -.3329852 .2888134 -1.15 0.249 -.8992599 .2332894
Casalinga/o e altro | .6749266 .3712871 1.82 0.069 -.0530537 1.402907
|
area4 |
Nord-est | .2482238 .263427 0.94 0.346 -.2682759 .7647235
Centro | -.0229861 .2625683 -0.09 0.930 -.5378022 .49183
Sud e isole | -.153488 .2384967 -0.64 0.520 -.621107 .314131
|
_cons | 2.787638 .3898297 7.15 0.000 2.023301 3.551975
-------------------------------------------------------------------------------------------------
. eststo m2: regress ptv_fdi $controlli econ_peggio pid_fdi $w if campione
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(19, 3249) = 111.33
Prob > F = 0.0000
R-squared = 0.3838
Root MSE = 2.9983
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | -.0265366 .1574743 -0.17 0.866 -.3352955 .2822223
|
eta3 |
35-54 | .0429222 .2251553 0.19 0.849 -.3985386 .4843829
55+ | -.2222559 .2630584 -0.84 0.398 -.7380329 .2935212
|
edu3 |
Diploma | -.3697036 .1974922 -1.87 0.061 -.7569254 .0175183
Laurea o più | -.8671238 .2332614 -3.72 0.000 -1.324478 -.4097694
|
reddito |
20-40 mila | -.1146527 .2171444 -0.53 0.598 -.5404065 .3111011
Oltre 40 mila | .2928952 .2316973 1.26 0.206 -.1613924 .7471829
Non indica | -.2943397 .2465132 -1.19 0.233 -.7776767 .1889974
|
chiesa3 |
Qualche volta l'anno o al mese | 1.490164 .163502 9.11 0.000 1.169586 1.810741
Almeno 2 volte al mese | 1.403489 .2079107 6.75 0.000 .9958395 1.811138
|
occup |
Disoccupato/a | -.3232036 .3825157 -0.84 0.398 -1.0732 .4267929
Studente/ssa | -.8890628 .3009643 -2.95 0.003 -1.479162 -.2989639
Pensionato/a | -.5029891 .23203 -2.17 0.030 -.9579291 -.0480491
Casalinga/o e altro | .3820754 .3355592 1.14 0.255 -.2758537 1.040004
|
area4 |
Nord-est | .3595214 .2314497 1.55 0.120 -.0942808 .8133236
Centro | -.1223243 .1941126 -0.63 0.529 -.5029197 .2582712
Sud e isole | .0551928 .1900973 0.29 0.772 -.31753 .4279155
|
econ_peggio | -.1584367 .074787 -2.12 0.034 -.3050712 -.0118022
pid_fdi | 5.983611 .1578417 37.91 0.000 5.674132 6.293091
_cons | 2.887212 .4435072 6.51 0.000 2.01763 3.756794
-------------------------------------------------------------------------------------------------
. eststo m3: regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi $w if campione
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(20, 3248) = 273.21
Prob > F = 0.0000
R-squared = 0.6314
Root MSE = 2.3195
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0369513 .1219959 0.30 0.762 -.2022454 .276148
|
eta3 |
35-54 | .0618876 .174604 0.35 0.723 -.2804575 .4042328
55+ | .1386999 .1919567 0.72 0.470 -.2376685 .5150684
|
edu3 |
Diploma | .131852 .1540101 0.86 0.392 -.1701147 .4338188
Laurea o più | -.1370766 .1780974 -0.77 0.442 -.4862712 .2121179
|
reddito |
20-40 mila | -.2259909 .1732584 -1.30 0.192 -.5656978 .113716
Oltre 40 mila | -.0716238 .1805445 -0.40 0.692 -.4256165 .2823689
Non indica | -.1643038 .1927115 -0.85 0.394 -.5421523 .2135447
|
chiesa3 |
Qualche volta l'anno o al mese | .4718569 .1344244 3.51 0.000 .2082917 .7354221
Almeno 2 volte al mese | .4282182 .1678971 2.55 0.011 .0990233 .7574132
|
occup |
Disoccupato/a | -.1043138 .3099924 -0.34 0.737 -.7121143 .5034866
Studente/ssa | -.4917451 .2303293 -2.13 0.033 -.9433505 -.0401397
Pensionato/a | -.2202483 .1689327 -1.30 0.192 -.5514738 .1109772
Casalinga/o e altro | .0434507 .2471877 0.18 0.860 -.4412089 .5281103
|
area4 |
Nord-est | .1273238 .1690688 0.75 0.451 -.2041686 .4588161
Centro | -.0358715 .153711 -0.23 0.815 -.3372518 .2655088
Sud e isole | .2104521 .1526428 1.38 0.168 -.0888338 .5097381
|
econ_peggio | -.0887351 .0569386 -1.56 0.119 -.2003743 .0229041
pid_fdi | 3.579004 .1763219 20.30 0.000 3.233291 3.924718
dist_fdi | -.8530285 .0261255 -32.65 0.000 -.9042527 -.8018043
_cons | 6.330103 .3720315 17.01 0.000 5.600663 7.059543
-------------------------------------------------------------------------------------------------
. eststo m4: regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi ///
> leader_fdi $w if campione
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(21, 3247) = 1250.16
Prob > F = 0.0000
R-squared = 0.8700
Root MSE = 1.3779
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0199078 .0723551 0.28 0.783 -.1219585 .1617742
|
eta3 |
35-54 | .1331443 .1271837 1.05 0.295 -.116224 .3825127
55+ | .083382 .1388635 0.60 0.548 -.1888869 .3556509
|
edu3 |
Diploma | -.0184281 .0909575 -0.20 0.839 -.196768 .1599118
Laurea o più | -.1859781 .1047305 -1.78 0.076 -.3913227 .0193664
|
reddito |
20-40 mila | -.0215693 .1007772 -0.21 0.831 -.2191627 .176024
Oltre 40 mila | .0402819 .0992086 0.41 0.685 -.1542358 .2347997
Non indica | .0379484 .1050896 0.36 0.718 -.1681003 .2439971
|
chiesa3 |
Qualche volta l'anno o al mese | .1584727 .0818189 1.94 0.053 -.0019491 .3188945
Almeno 2 volte al mese | .1017835 .0884888 1.15 0.250 -.0717161 .2752831
|
occup |
Disoccupato/a | .0041574 .1698425 0.02 0.980 -.328852 .3371669
Studente/ssa | .1701699 .1936349 0.88 0.380 -.2094891 .5498289
Pensionato/a | -.0676557 .0942634 -0.72 0.473 -.2524774 .117166
Casalinga/o e altro | -.1588795 .1370665 -1.16 0.246 -.4276251 .1098661
|
area4 |
Nord-est | -.0318305 .0994726 -0.32 0.749 -.2268658 .1632048
Centro | -.0207708 .0847323 -0.25 0.806 -.186905 .1453634
Sud e isole | .2343434 .0884314 2.65 0.008 .0609564 .4077305
|
econ_peggio | -.0554804 .0310245 -1.79 0.074 -.11631 .0053492
pid_fdi | .8614099 .1112869 7.74 0.000 .6432103 1.079609
dist_fdi | -.1946198 .0222189 -8.76 0.000 -.2381842 -.1510554
leader_fdi | .7828818 .0165364 47.34 0.000 .7504589 .8153046
_cons | 1.198145 .271217 4.42 0.000 .6663716 1.729919
-------------------------------------------------------------------------------------------------
.
. esttab m1 m2 m3 m4, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
> r2 ar2 label nobaselevels nogaps varwidth(32) modelwidth(13) ///
> mtitles("Socio-dem." "+ PID, econ." "+ distanza" "+ leader")
----------------------------------------------------------------------------------------------------
(1) (2) (3) (4)
Socio-dem. + PID, econ. + distanza + leader
----------------------------------------------------------------------------------------------------
Donna -0.21 -0.03 0.04 0.02
(0.18) (0.16) (0.12) (0.07)
35-54 0.19 0.04 0.06 0.13
(0.25) (0.23) (0.17) (0.13)
55+ 0.02 -0.22 0.14 0.08
(0.30) (0.26) (0.19) (0.14)
Diploma -0.39 -0.37 0.13 -0.02
(0.23) (0.20) (0.15) (0.09)
Laurea o più -0.91** -0.87*** -0.14 -0.19
(0.28) (0.23) (0.18) (0.10)
20-40 mila -0.14 -0.11 -0.23 -0.02
(0.26) (0.22) (0.17) (0.10)
Oltre 40 mila 0.50 0.29 -0.07 0.04
(0.28) (0.23) (0.18) (0.10)
Non indica -0.30 -0.29 -0.16 0.04
(0.32) (0.25) (0.19) (0.11)
Qualche volta l'anno o al mese 1.88*** 1.49*** 0.47*** 0.16
(0.20) (0.16) (0.13) (0.08)
Almeno 2 volte al mese 2.02*** 1.40*** 0.43* 0.10
(0.25) (0.21) (0.17) (0.09)
Disoccupato/a -0.14 -0.32 -0.10 0.00
(0.45) (0.38) (0.31) (0.17)
Studente/ssa -1.05** -0.89** -0.49* 0.17
(0.34) (0.30) (0.23) (0.19)
Pensionato/a -0.33 -0.50* -0.22 -0.07
(0.29) (0.23) (0.17) (0.09)
Casalinga/o e altro 0.67 0.38 0.04 -0.16
(0.37) (0.34) (0.25) (0.14)
Nord-est 0.25 0.36 0.13 -0.03
(0.26) (0.23) (0.17) (0.10)
Centro -0.02 -0.12 -0.04 -0.02
(0.26) (0.19) (0.15) (0.08)
Sud e isole -0.15 0.06 0.21 0.23**
(0.24) (0.19) (0.15) (0.09)
Economia italiana peggiorata (1- -0.16* -0.09 -0.06
(0.07) (0.06) (0.03)
Si sente vicino a FdI 5.98*** 3.58*** 0.86***
(0.16) (0.18) (0.11)
Distanza ideologica da FdI (0-10 -0.85*** -0.19***
(0.03) (0.02)
Giudizio su Meloni (0-10) 0.78***
(0.02)
Constant 2.79*** 2.89*** 6.33*** 1.20***
(0.39) (0.44) (0.37) (0.27)
----------------------------------------------------------------------------------------------------
Observations 3269 3269 3269 3269
R-squared 0.088 0.384 0.631 0.870
Adjusted R-squared 0.083 0.380 0.629 0.869
----------------------------------------------------------------------------------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001
.
. * --- 7.4 Coefficienti standardizzati (confrontare le variabili focali)
. regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi leader_fdi ///
> [aw=wsociodem_trim] if campione, beta
(sum of wgt is 2,750.42890641093)
Source | SS df MS Number of obs = 3,269
-------------+---------------------------------- F(21, 3247) = 1034.37
Model | 41238.8855 21 1963.75645 Prob > F = 0.0000
Residual | 6164.4476 3,247 1.89850557 R-squared = 0.8700
-------------+---------------------------------- Adj R-squared = 0.8691
Total | 47403.3331 3,268 14.5053039 Root MSE = 1.3779
-------------------------------------------------------------------------------------------------
ptv_fdi | Coefficient Std. err. t P>|t| Beta
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0199078 .0514446 0.39 0.699 .0026097
|
eta3 |
35-54 | .1331443 .07771 1.71 0.087 .0162755
55+ | .083382 .0872373 0.96 0.339 .0109357
|
edu3 |
Diploma | -.0184281 .0592427 -0.31 0.756 -.0023995
Laurea o più | -.1859781 .0759438 -2.45 0.014 -.0192474
|
reddito |
20-40 mila | -.0215693 .0653896 -0.33 0.742 -.0027716
Oltre 40 mila | .0402819 .0767637 0.52 0.600 .004469
Non indica | .0379484 .0868173 0.44 0.662 .003282
|
chiesa3 |
Qualche volta l'anno o al mese | .1584727 .0566875 2.80 0.005 .020553
Almeno 2 volte al mese | .1017835 .070278 1.45 0.148 .0106833
|
occup |
Disoccupato/a | .0041574 .1014166 0.04 0.967 .0002801
Studente/ssa | .1701699 .1136058 1.50 0.134 .0113424
Pensionato/a | -.0676557 .075468 -0.90 0.370 -.0078368
Casalinga/o e altro | -.1588795 .0958358 -1.66 0.097 -.012132
|
area4 |
Nord-est | -.0318305 .0708944 -0.45 0.653 -.0033599
Centro | -.0207708 .0722329 -0.29 0.774 -.0021708
Sud e isole | .2343434 .0648958 3.61 0.000 .0288159
|
econ_peggio | -.0554804 .0228443 -2.43 0.015 -.0159101
pid_fdi | .8614099 .0839473 10.26 0.000 .0800121
dist_fdi | -.1946198 .0138021 -14.10 0.000 -.1312696
leader_fdi | .7828818 .0101429 77.19 0.000 .7825732
_cons | 1.198145 .1592343 7.52 0.000 .
-------------------------------------------------------------------------------------------------
.
. * --- 7.5 Diagnostica: multicollinearita' ------------------------------
. * (estat vif richiede un modello senza pesi pw)
. quietly regress ptv_fdi $controlli econ_peggio pid_fdi dist_fdi ///
> leader_fdi lr_self if campione
. estat vif
Variable | VIF 1/VIF
-------------+----------------------
1.donna | 1.13 0.888373
eta3 |
2 | 2.74 0.365009
3 | 3.52 0.284124
edu3 |
2 | 2.37 0.421454
3 | 2.46 0.407099
reddito |
2 | 2.02 0.495693
3 | 2.07 0.483855
4 | 1.51 0.663330
chiesa3 |
2 | 1.36 0.734842
3 | 1.36 0.737760
occup |
2 | 1.12 0.889095
3 | 1.43 0.700993
4 | 1.70 0.588870
5 | 1.24 0.807202
area4 |
2 | 1.38 0.724742
3 | 1.40 0.714158
4 | 1.56 0.642931
econ_peggio | 1.08 0.927256
pid_fdi | 1.55 0.646240
dist_fdi | 13.30 0.075211
leader_fdi | 2.75 0.363115
lr_self | 14.46 0.069140
-------------+----------------------
Mean VIF | 2.89
.
.8Visualizzare i risultati
8.1 Il grafico dei coefficienti
* --- 8.1 Grafico dei coefficienti (coefplot) --------------------------
coefplot m4, drop(_cons) xline(0) msymbol(D) ylabel(, labsize(small)) ///
xtitle("Effetto sul giudizio su FdI (punti 0-10)", size(small)) ///
title("Modello 4: giudizio su FdI", size(medium)) ///
headings(1.donna = "{bf:Genere}" 2.eta3 = "{bf:Età}" ///
2.edu3 = "{bf:Istruzione}" 2.reddito = "{bf:Reddito}" ///
2.chiesa3 = "{bf:Messa}" 2.occup = "{bf:Occupazione}" ///
2.area4 = "{bf:Zona}" econ_peggio = "{bf:Atteggiamenti politici}") ///
xsize(8) ysize(9)
graph export "grafici/fig3_coefplot_m4.png", replace width(1600)8.2 I valori predetti
* --- 8.2 Valori predetti (margins) ------------------------------------
* usiamo il modello 3 (senza il giudizio sul leader, che "assorbe"
* quasi tutto l'effetto delle altre variabili)
estimates restore m3
margins, at(dist_fdi = (0(1)8))
marginsplot, recast(line) recastci(rarea) ciopts(color(%25)) ///
ytitle("Giudizio predetto su FdI (0-10)") ///
xtitle("Distanza ideologica da FdI") ///
title("Valori predetti dal modello 3")
graph export "grafici/fig4_margins_distanza.png", replace width(1600)margins traduce il coefficiente in valori concreti: a distanza 0 il giudizio predetto è 6,8; a distanza 4 è 3,4; a distanza 8 è praticamente 0. In una presentazione un grafico così è spesso più chiaro di una tabella.
8.3 Un'interazione: la distanza conta di più per chi è interessato alla politica?
* --- 8.3 Interazione: la distanza conta di piu' per chi e' interessato?
regress ptv_fdi $controlli econ_peggio pid_fdi ///
c.dist_fdi##i.interesse $w if campione
margins interesse, dydx(dist_fdi)
margins interesse, at(dist_fdi = (0(2)8))
marginsplot, ytitle("Giudizio predetto su FdI (0-10)") ///
xtitle("Distanza ideologica da FdI") ///
title("Effetto della distanza per livello di interesse")
graph export "grafici/fig5_interazione_interesse.png", replace width(1600)L'ipotesi viene dalle lezioni sulla sofisticazione: gli elettori più interessati dovrebbero usare di più la prossimità ideologica. Con c.dist_fdi##i.interesse Stata stima l'effetto della distanza, l'effetto dell'interesse e il loro prodotto (c. indica una variabile continua).
margins, dydx(): l'effetto (pendenza) della distanza separatamente per poco e molto interessati.Le due pendenze sono quasi uguali (−0,92 e −0,84) e il termine di interazione non è significativo (p = 0,14): in questi dati non c'è evidenza che l'interesse moderi l'effetto della distanza. Anche un risultato nullo è un risultato: va riportato e discusso alla luce della teoria.
Output completo della sezione 8 (testo del log di Stata)
. *====================================================================
. * SEZIONE 8. Visualizzare i risultati
. *====================================================================
.
. * --- 8.1 Grafico dei coefficienti (coefplot) --------------------------
. coefplot m4, drop(_cons) xline(0) msymbol(D) ylabel(, labsize(small)) ///
> xtitle("Effetto sul giudizio su FdI (punti 0-10)") ///
> title("Modello 4: giudizio su FdI", size(medium)) ///
> headings(1.donna = "{bf:Genere}" 2.eta3 = "{bf:Età}" ///
> 2.edu3 = "{bf:Istruzione}" 2.reddito = "{bf:Reddito}" ///
> 2.chiesa3 = "{bf:Messa}" 2.occup = "{bf:Occupazione}" ///
> 2.area4 = "{bf:Zona}" econ_peggio = "{bf:Atteggiamenti politici}") ///
> xsize(7) ysize(9)
. graph export "grafici/fig3_coefplot_m4.png", replace width(1600)
file C:/Users/nome/Documents/OPEL/grafici/fig3_coefplot_m4.png saved as PNG format
.
. * --- 8.2 Valori predetti (margins) ------------------------------------
. * usiamo il modello 3 (senza il giudizio sul leader, che "assorbe"
. * quasi tutto l'effetto delle altre variabili)
. estimates restore m3
(results m3 are active now)
. margins, at(dist_fdi = (0(1)8))
Predictive margins Number of obs = 3,269
Model VCE: Robust
Expression: Linear prediction, predict()
1._at: dist_fdi = 0
2._at: dist_fdi = 1
3._at: dist_fdi = 2
4._at: dist_fdi = 3
5._at: dist_fdi = 4
6._at: dist_fdi = 5
7._at: dist_fdi = 6
8._at: dist_fdi = 7
9._at: dist_fdi = 8
------------------------------------------------------------------------------
| Delta-method
| Margin std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
_at |
1 | 6.808332 .138322 49.22 0.000 6.537125 7.079539
2 | 5.955303 .1143342 52.09 0.000 5.731129 6.179478
3 | 5.102275 .0915245 55.75 0.000 4.922823 5.281727
4 | 4.249246 .0710369 59.82 0.000 4.109965 4.388528
5 | 3.396218 .0555054 61.19 0.000 3.287389 3.505047
6 | 2.543189 .0498049 51.06 0.000 2.445537 2.640842
7 | 1.690161 .0569676 29.67 0.000 1.578465 1.801857
8 | .8371325 .0733155 11.42 0.000 .6933832 .9808818
9 | -.015896 .0941812 -0.17 0.866 -.2005566 .1687647
------------------------------------------------------------------------------
. marginsplot, recast(line) recastci(rarea) ciopts(color(%25)) ///
> ytitle("Giudizio predetto su FdI (0-10)") ///
> xtitle("Distanza ideologica da FdI") ///
> title("Valori predetti dal modello 3")
Variables that uniquely identify margins: dist_fdi
. graph export "grafici/fig4_margins_distanza.png", replace width(1600)
file C:/Users/nome/Documents/OPEL/grafici/fig4_margins_distanza.png saved as PNG format
.
. * --- 8.3 Interazione: la distanza conta di piu' per chi e' interessato?
. regress ptv_fdi $controlli econ_peggio pid_fdi ///
> c.dist_fdi##i.interesse $w if campione
(sum of wgt is 2,750.42890641093)
Linear regression Number of obs = 3,269
F(22, 3246) = 250.30
Prob > F = 0.0000
R-squared = 0.6319
Root MSE = 2.3186
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0454323 .1240627 0.37 0.714 -.1978168 .2886813
|
eta3 |
35-54 | .0612108 .1743981 0.35 0.726 -.2807308 .4031524
55+ | .1357274 .191662 0.71 0.479 -.2400632 .5115181
|
edu3 |
Diploma | .12112 .1554273 0.78 0.436 -.1836256 .4258655
Laurea o più | -.151451 .1799082 -0.84 0.400 -.5041962 .2012941
|
reddito |
20-40 mila | -.2435095 .1733594 -1.40 0.160 -.5834145 .0963955
Oltre 40 mila | -.0890986 .1806812 -0.49 0.622 -.4433594 .2651622
Non indica | -.1751639 .1928411 -0.91 0.364 -.5532665 .2029387
|
chiesa3 |
Qualche volta l'anno o al mese | .474653 .1344977 3.53 0.000 .210944 .738362
Almeno 2 volte al mese | .433281 .1680778 2.58 0.010 .1037316 .7628304
|
occup |
Disoccupato/a | -.0920832 .3103601 -0.30 0.767 -.7006046 .5164383
Studente/ssa | -.4751921 .2293802 -2.07 0.038 -.9249368 -.0254474
Pensionato/a | -.2314897 .1686025 -1.37 0.170 -.5620678 .0990884
Casalinga/o e altro | .041585 .2475245 0.17 0.867 -.4437351 .526905
|
area4 |
Nord-est | .1239287 .1688655 0.73 0.463 -.2071651 .4550225
Centro | -.0364672 .1534128 -0.24 0.812 -.3372628 .2643285
Sud e isole | .2098933 .1526556 1.37 0.169 -.0894178 .5092045
|
econ_peggio | -.086823 .05723 -1.52 0.129 -.1990336 .0253876
pid_fdi | 3.587367 .1773344 20.23 0.000 3.239668 3.935065
dist_fdi | -.9153178 .0504547 -18.14 0.000 -1.014244 -.8163915
|
interesse |
Molto o abbastanza | -.1917159 .2905132 -0.66 0.509 -.7613237 .3778919
|
interesse#c.dist_fdi |
Molto o abbastanza | .0779402 .0525591 1.48 0.138 -.0251121 .1809926
|
_cons | 6.487862 .4296831 15.10 0.000 5.645384 7.33034
-------------------------------------------------------------------------------------------------
. margins interesse, dydx(dist_fdi)
Average marginal effects Number of obs = 3,269
Model VCE: Robust
Expression: Linear prediction, predict()
dy/dx wrt: dist_fdi
-------------------------------------------------------------------------------------
| Delta-method
| dy/dx std. err. t P>|t| [95% conf. interval]
--------------------+----------------------------------------------------------------
dist_fdi |
interesse |
Poco o per niente | -.9153178 .0504547 -18.14 0.000 -1.014244 -.8163915
Molto o abbastanza | -.8373776 .0283505 -29.54 0.000 -.8929642 -.781791
-------------------------------------------------------------------------------------
. margins interesse, at(dist_fdi = (0(2)8))
Predictive margins Number of obs = 3,269
Model VCE: Robust
Expression: Linear prediction, predict()
1._at: dist_fdi = 0
2._at: dist_fdi = 2
3._at: dist_fdi = 4
4._at: dist_fdi = 6
5._at: dist_fdi = 8
---------------------------------------------------------------------------------------
| Delta-method
| Margin std. err. t P>|t| [95% conf. interval]
----------------------+----------------------------------------------------------------
_at#interesse |
1#Poco o per niente | 6.957056 .2527925 27.52 0.000 6.461407 7.452706
1#Molto o abbastanza | 6.765341 .1609161 42.04 0.000 6.449833 7.080848
2#Poco o per niente | 5.126421 .1703789 30.09 0.000 4.79236 5.460482
2#Molto o abbastanza | 5.090585 .1098119 46.36 0.000 4.875278 5.305893
3#Poco o per niente | 3.295785 .1204962 27.35 0.000 3.059529 3.532042
3#Molto o abbastanza | 3.41583 .0682151 50.07 0.000 3.282081 3.549579
4#Poco o per niente | 1.46515 .1427415 10.26 0.000 1.185277 1.745022
4#Molto o abbastanza | 1.741075 .060646 28.71 0.000 1.622167 1.859983
5#Poco o per niente | -.3654859 .2158619 -1.69 0.091 -.7887253 .0577536
5#Molto o abbastanza | .0663201 .0955644 0.69 0.488 -.1210525 .2536926
---------------------------------------------------------------------------------------
. marginsplot, ytitle("Giudizio predetto su FdI (0-10)") ///
> xtitle("Distanza ideologica da FdI") ///
> title("Effetto della distanza per livello di interesse")
Variables that uniquely identify margins: dist_fdi interesse
. graph export "grafici/fig5_interazione_interesse.png", replace width(1600)
file C:/Users/nome/Documents/OPEL/grafici/fig5_interazione_interesse.png saved as PNG format
.
.9Confrontare partiti diversi
Per il secondo panel dovrete stimare lo stesso modello per partiti diversi. Il trucco è creare variabili generiche (ptv, pid, dist, leader) che a ogni giro del ciclo contengono i valori di un partito diverso: così la tabella ha le stesse righe per tutti.
* Esempio didattico: PD e FI come mainstream, FdI e M5S come
* challenger. Nel lavoro di gruppo la classificazione va giustificata
* con la letteratura.
* Trucco: variabili "generiche" (ptv, pid, dist, leader) che a ogni
* giro del ciclo contengono i valori di un partito diverso. Cosi' la
* tabella ha le stesse righe per tutti i partiti.
foreach p in pd fi fdi m5s {
capture drop ptv pid dist leader
gen ptv = ptv_`p'
gen pid = pid_`p'
gen dist = dist_`p'
gen leader = leader_`p'
label variable pid "Identificazione con il partito"
label variable dist "Distanza ideologica dal partito"
label variable leader "Giudizio sul leader"
eststo p_`p': regress ptv $controlli econ_peggio pid dist leader $w
}
esttab p_pd p_fi p_fdi p_m5s, b(%9.2f) se(%9.2f) ///
star(* 0.05 ** 0.01 *** 0.001) r2 label nobaselevels nogaps ///
varwidth(32) modelwidth(13) ///
keep(econ_peggio pid dist leader) order(pid dist leader econ_peggio) ///
mtitles("PD" "FI" "FdI" "M5S") ///
mgroups("Mainstream" "Challenger", pattern(1 0 1 0))keep()).- La distanza ideologica ha un effetto simile per PD, FI e FdI (circa −0,2 al netto del leader) ma è nulla per il M5S (−0,03, non significativa): coerente con un partito che rifiuta il posizionamento sinistra-destra e si colloca al centro della scala.
- Il giudizio sull'economia pesa soprattutto sul PD (−0,28), il partito più identificato con il governo uscente: un esempio di voto economico retrospettivo.
- La classificazione PD e FI «mainstream», FdI e M5S «challenger» è solo didattica: nel vostro lavoro va giustificata con la letteratura (per esempio De Vries e Hobolt), tenendo conto che il M5S nel 2022 aveva governato.
Output completo della sezione 9 (testo del log di Stata)
. *====================================================================
. * SEZIONE 9. Confrontare partiti diversi (mainstream vs challenger)
. *====================================================================
. * Esempio didattico: PD e FI come mainstream, FdI e M5S come
. * challenger. Nel lavoro di gruppo la classificazione va giustificata
. * con la letteratura.
. * Trucco: variabili "generiche" (ptv, pid, dist, leader) che a ogni
. * giro del ciclo contengono i valori di un partito diverso. Cosi' la
. * tabella ha le stesse righe per tutti i partiti.
. foreach p in pd fi fdi m5s {
2. capture drop ptv pid dist leader
3. gen ptv = ptv_`p'
4. gen pid = pid_`p'
5. gen dist = dist_`p'
6. gen leader = leader_`p'
7. label variable pid "Identificazione con il partito"
8. label variable dist "Distanza ideologica dal partito"
9. label variable leader "Giudizio sul leader"
10. eststo p_`p': regress ptv $controlli econ_peggio pid dist leader $w
11. }
(300 missing values generated)
(83 missing values generated)
(965 missing values generated)
(323 missing values generated)
(sum of wgt is 2,744.71389895678)
Linear regression Number of obs = 3,258
F(21, 3236) = 424.68
Prob > F = 0.0000
R-squared = 0.7442
Root MSE = 1.6006
-------------------------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0238893 .0805303 0.30 0.767 -.1340063 .1817849
|
eta3 |
35-54 | -.1798814 .1174969 -1.53 0.126 -.4102573 .0504945
55+ | -.2228387 .1347387 -1.65 0.098 -.4870206 .0413432
|
edu3 |
Diploma | .0743177 .0930191 0.80 0.424 -.1080647 .2567
Laurea o più | .1015474 .1134479 0.90 0.371 -.1208896 .3239844
|
reddito |
20-40 mila | -.2116272 .1214212 -1.74 0.081 -.4496974 .026443
Oltre 40 mila | -.2140545 .1228189 -1.74 0.081 -.4548651 .0267562
Non indica | -.1865535 .1492916 -1.25 0.212 -.479269 .1061621
|
chiesa3 |
Qualche volta l'anno o al mese | .0964492 .082882 1.16 0.245 -.0660574 .2589558
Almeno 2 volte al mese | .0676348 .1148226 0.59 0.556 -.1574976 .2927672
|
occup |
Disoccupato/a | -.4080894 .2244246 -1.82 0.069 -.8481181 .0319392
Studente/ssa | -.0788319 .1577463 -0.50 0.617 -.3881247 .2304608
Pensionato/a | -.085694 .1244002 -0.69 0.491 -.3296052 .1582172
Casalinga/o e altro | -.1435348 .1582603 -0.91 0.364 -.4538354 .1667657
|
area4 |
Nord-est | -.1619105 .1122284 -1.44 0.149 -.3819564 .0581353
Centro | -.310581 .1101816 -2.82 0.005 -.5266137 -.0945484
Sud e isole | -.0078541 .1029775 -0.08 0.939 -.2097619 .1940538
|
econ_peggio | -.2755508 .0500388 -5.51 0.000 -.3736618 -.1774398
pid | 1.173092 .1220625 9.61 0.000 .9337642 1.41242
dist | -.207895 .0199733 -10.41 0.000 -.2470566 -.1687334
leader | .7208026 .0205402 35.09 0.000 .6805295 .7610758
_cons | 3.079233 .3217166 9.57 0.000 2.448444 3.710022
-------------------------------------------------------------------------------------------------
(295 missing values generated)
(83 missing values generated)
(965 missing values generated)
(257 missing values generated)
(sum of wgt is 2,769.86484375596)
Linear regression Number of obs = 3,284
F(21, 3262) = 587.32
Prob > F = 0.0000
R-squared = 0.8214
Root MSE = 1.3567
-------------------------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0348764 .0667581 0.52 0.601 -.0960157 .1657684
|
eta3 |
35-54 | .0608442 .1056255 0.58 0.565 -.1462549 .2679432
55+ | .1293466 .1177465 1.10 0.272 -.1015179 .3602111
|
edu3 |
Diploma | -.0453479 .083322 -0.54 0.586 -.2087166 .1180208
Laurea o più | -.0210054 .0978935 -0.21 0.830 -.2129442 .1709335
|
reddito |
20-40 mila | .0061354 .0962019 0.06 0.949 -.182487 .1947577
Oltre 40 mila | .1636804 .1045859 1.57 0.118 -.0413803 .368741
Non indica | .0426198 .1272907 0.33 0.738 -.2069579 .2921975
|
chiesa3 |
Qualche volta l'anno o al mese | .157684 .0722989 2.18 0.029 .0159282 .2994398
Almeno 2 volte al mese | .0764247 .0984035 0.78 0.437 -.1165143 .2693636
|
occup |
Disoccupato/a | .0242567 .1451287 0.17 0.867 -.2602959 .3088093
Studente/ssa | -.0505754 .1586979 -0.32 0.750 -.3617331 .2605823
Pensionato/a | -.0037232 .1053499 -0.04 0.972 -.2102818 .2028354
Casalinga/o e altro | -.0763234 .1477775 -0.52 0.606 -.3660695 .2134228
|
area4 |
Nord-est | -.0080881 .1013201 -0.08 0.936 -.2067455 .1905694
Centro | .0133047 .0902646 0.15 0.883 -.1636763 .1902856
Sud e isole | .0351255 .0846155 0.42 0.678 -.1307793 .2010303
|
econ_peggio | -.0663145 .0309685 -2.14 0.032 -.1270342 -.0055947
pid | .9456491 .1758318 5.38 0.000 .6008972 1.290401
dist | -.18919 .0208104 -9.09 0.000 -.2299929 -.1483872
leader | .8014481 .0161261 49.70 0.000 .7698299 .8330664
_cons | 1.295489 .2456546 5.27 0.000 .8138366 1.777142
-------------------------------------------------------------------------------------------------
(314 missing values generated)
(83 missing values generated)
(965 missing values generated)
(269 missing values generated)
(sum of wgt is 2,757.79499575496)
Linear regression Number of obs = 3,274
F(21, 3252) = 1251.57
Prob > F = 0.0000
R-squared = 0.8700
Root MSE = 1.3769
-------------------------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0212624 .0722884 0.29 0.769 -.120473 .1629979
|
eta3 |
35-54 | .1270616 .1256836 1.01 0.312 -.1193654 .3734887
55+ | .0730722 .1368158 0.53 0.593 -.1951817 .3413261
|
edu3 |
Diploma | -.0191681 .0900877 -0.21 0.832 -.1958025 .1574663
Laurea o più | -.1877539 .1038241 -1.81 0.071 -.3913211 .0158133
|
reddito |
20-40 mila | -.0243603 .1005833 -0.24 0.809 -.2215732 .1728527
Oltre 40 mila | .0373517 .0990445 0.38 0.706 -.1568443 .2315477
Non indica | .0305251 .1046923 0.29 0.771 -.1747445 .2357946
|
chiesa3 |
Qualche volta l'anno o al mese | .1600811 .0817145 1.96 0.050 -.0001361 .3202982
Almeno 2 volte al mese | .1030966 .08852 1.16 0.244 -.070464 .2766572
|
occup |
Disoccupato/a | .0018268 .1697345 0.01 0.991 -.3309705 .3346242
Studente/ssa | .1649254 .192932 0.85 0.393 -.2133552 .543206
Pensionato/a | -.0631555 .0942687 -0.67 0.503 -.2479874 .1216765
Casalinga/o e altro | -.1444813 .1365985 -1.06 0.290 -.4123092 .1233465
|
area4 |
Nord-est | -.031558 .0992353 -0.32 0.750 -.226128 .1630121
Centro | -.0201387 .0845541 -0.24 0.812 -.1859235 .145646
Sud e isole | .2391061 .0881967 2.71 0.007 .0661793 .4120328
|
econ_peggio | -.0543321 .0309806 -1.75 0.080 -.1150756 .0064114
pid | .8569054 .1108432 7.73 0.000 .6395758 1.074235
dist | -.1951324 .0222301 -8.78 0.000 -.2387188 -.151546
leader | .783007 .0165029 47.45 0.000 .7506499 .8153641
_cons | 1.202497 .2690853 4.47 0.000 .6749033 1.730091
-------------------------------------------------------------------------------------------------
(286 missing values generated)
(83 missing values generated)
(965 missing values generated)
(259 missing values generated)
(sum of wgt is 2,766.50649169087)
Linear regression Number of obs = 3,277
F(21, 3255) = 423.69
Prob > F = 0.0000
R-squared = 0.7333
Root MSE = 1.6876
-------------------------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | -.1700377 .0841683 -2.02 0.043 -.3350659 -.0050094
|
eta3 |
35-54 | -.0106361 .137402 -0.08 0.938 -.2800393 .258767
55+ | .0136341 .1572641 0.09 0.931 -.2947125 .3219806
|
edu3 |
Diploma | -.0245317 .100481 -0.24 0.807 -.221544 .1724806
Laurea o più | .0008157 .1257181 0.01 0.995 -.2456788 .2473103
|
reddito |
20-40 mila | -.1289993 .1210995 -1.07 0.287 -.3664382 .1084396
Oltre 40 mila | -.0684323 .1266164 -0.54 0.589 -.3166882 .1798236
Non indica | -.1322275 .1595024 -0.83 0.407 -.4449627 .1805077
|
chiesa3 |
Qualche volta l'anno o al mese | .0759827 .0906432 0.84 0.402 -.1017409 .2537063
Almeno 2 volte al mese | .1109884 .1081701 1.03 0.305 -.1011001 .3230769
|
occup |
Disoccupato/a | -.3172204 .2152701 -1.47 0.141 -.739299 .1048582
Studente/ssa | -.2160874 .1918385 -1.13 0.260 -.5922239 .1600491
Pensionato/a | -.007284 .1239987 -0.06 0.953 -.2504075 .2358395
Casalinga/o e altro | -.1088524 .1819943 -0.60 0.550 -.4656875 .2479826
|
area4 |
Nord-est | -.0065201 .1159693 -0.06 0.955 -.2339002 .2208601
Centro | -.130609 .1164088 -1.12 0.262 -.3588509 .0976329
Sud e isole | .1179303 .1079628 1.09 0.275 -.0937515 .3296121
|
econ_peggio | -.1228623 .0397818 -3.09 0.002 -.2008622 -.0448624
pid | 1.682613 .1381937 12.18 0.000 1.411658 1.953568
dist | -.029341 .0229376 -1.28 0.201 -.0743147 .0156326
leader | .7368659 .0148898 49.49 0.000 .7076717 .7660602
_cons | .9633031 .2366953 4.07 0.000 .4992162 1.42739
-------------------------------------------------------------------------------------------------
.
. esttab p_pd p_fi p_fdi p_m5s, b(%9.2f) se(%9.2f) ///
> star(* 0.05 ** 0.01 *** 0.001) r2 label nobaselevels nogaps ///
> varwidth(32) modelwidth(13) ///
> keep(econ_peggio pid dist leader) order(pid dist leader econ_peggio) ///
> mtitles("PD" "FI" "FdI" "M5S") ///
> mgroups("Mainstream" "Challenger", pattern(1 0 1 0))
----------------------------------------------------------------------------------------------------
Mainstream Challenger
(1) (2) (3) (4)
PD FI FdI M5S
----------------------------------------------------------------------------------------------------
Identificazione con il partito 1.17*** 0.95*** 0.86*** 1.68***
(0.12) (0.18) (0.11) (0.14)
Distanza ideologica dal partito -0.21*** -0.19*** -0.20*** -0.03
(0.02) (0.02) (0.02) (0.02)
Giudizio sul leader 0.72*** 0.80*** 0.78*** 0.74***
(0.02) (0.02) (0.02) (0.01)
Economia italiana peggiorata (1- -0.28*** -0.07* -0.05 -0.12**
(0.05) (0.03) (0.03) (0.04)
----------------------------------------------------------------------------------------------------
Observations 3258 3284 3274 3277
R-squared 0.744 0.821 0.870 0.733
----------------------------------------------------------------------------------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001
.
.10Lo stesso modello in sottogruppi
Nel primo panel confronterete il modello su tutti i paesi con modelli per macroregioni e per l'Italia; nel secondo, modelli per singolo paese. La logica è la stessa che qui applichiamo alle quattro zone geografiche italiane: si stima il modello con if su ciascun gruppo, togliendo dai controlli la variabile che definisce il gruppo.
* Con l'ESS e l'EES confronterete paesi o macroregioni; qui usiamo le
* quattro zone geografiche italiane. Nei sottogruppi si toglie la
* variabile che li definisce (area4) dai controlli.
forvalues a = 1/4 {
eststo z`a': regress ptv_fdi $socio econ_peggio pid_fdi dist_fdi ///
leader_fdi $w if area4 == `a'
}
esttab z1 z2 z3 z4, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
r2 label nobaselevels nogaps varwidth(32) modelwidth(13) ///
keep(econ_peggio pid_fdi dist_fdi leader_fdi) ///
mtitles("Nord-ovest" "Nord-est" "Centro" "Sud e isole")
* La differenza tra gruppi e' significativa? Interazione nel modello
* unico (test congiunto dei termini di interazione)
regress ptv_fdi $controlli econ_peggio pid_fdi leader_fdi ///
c.dist_fdi##i.area4 $w
testparm c.dist_fdi#i.area4L'effetto della distanza va da −0,25 nel Nord-ovest a −0,15 al Sud. Sono differenze reali? Non si confrontano gli asterischi: un coefficiente significativo in un gruppo e non in un altro non prova che i due siano diversi. Si stima invece un modello unico con l'interazione c.dist_fdi##i.area4 e si testano insieme i termini di interazione con testparm: F = 0,14, p = 0,94. Le differenze tra zone non sono statisticamente significative. Con i paesi dell'ESS o dell'EES si procede allo stesso modo (per esempio c.variabile##i.paese).
Output completo della sezione 10 (testo del log di Stata)
. *====================================================================
. * SEZIONE 10. Lo stesso modello in sottogruppi (aree, paesi, ...)
. *====================================================================
. * Con l'ESS e l'EES confronterete paesi o macroregioni; qui usiamo le
. * quattro zone geografiche italiane. Nei sottogruppi si toglie la
. * variabile che li definisce (area4) dai controlli.
. forvalues a = 1/4 {
2. eststo z`a': regress ptv_fdi $socio econ_peggio pid_fdi dist_fdi ///
> leader_fdi $w if area4 == `a'
3. }
(sum of wgt is 761.0955176055431)
Linear regression Number of obs = 908
F(18, 889) = 577.94
Prob > F = 0.0000
R-squared = 0.8838
Root MSE = 1.2992
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | -.0461887 .1297328 -0.36 0.722 -.3008069 .2084295
|
eta3 |
35-54 | .369543 .2133966 1.73 0.084 -.0492768 .7883629
55+ | .393532 .2309269 1.70 0.089 -.0596934 .8467574
|
edu3 |
Diploma | .0964594 .1587863 0.61 0.544 -.2151804 .4080992
Laurea o più | .1033805 .1726947 0.60 0.550 -.2355563 .4423172
|
reddito |
20-40 mila | .1687865 .1844296 0.92 0.360 -.1931816 .5307546
Oltre 40 mila | .0046289 .1834913 0.03 0.980 -.3554978 .3647555
Non indica | .0939862 .1915348 0.49 0.624 -.2819269 .4698994
|
chiesa3 |
Qualche volta l'anno o al mese | .068783 .1543468 0.45 0.656 -.2341436 .3717095
Almeno 2 volte al mese | .2143575 .1598096 1.34 0.180 -.0992906 .5280056
|
occup |
Disoccupato/a | -.0608671 .3749002 -0.16 0.871 -.7966596 .6749255
Studente/ssa | 1.324087 .6329192 2.09 0.037 .0818968 2.566277
Pensionato/a | .0485392 .1683983 0.29 0.773 -.2819654 .3790438
Casalinga/o e altro | .2239241 .2709622 0.83 0.409 -.3078761 .7557243
|
econ_peggio | .0066262 .0576944 0.11 0.909 -.106607 .1198593
pid_fdi | 1.187184 .1975834 6.01 0.000 .7994 1.574968
dist_fdi | -.254027 .0459066 -5.53 0.000 -.3441251 -.163929
leader_fdi | .7176626 .0323554 22.18 0.000 .6541607 .7811645
_cons | .9153687 .475717 1.92 0.055 -.0182905 1.849028
-------------------------------------------------------------------------------------------------
(sum of wgt is 557.3199869096279)
Linear regression Number of obs = 632
F(18, 613) = 267.69
Prob > F = 0.0000
R-squared = 0.8538
Root MSE = 1.4608
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .1446291 .1515278 0.95 0.340 -.1529474 .4422056
|
eta3 |
35-54 | .4168123 .2986307 1.40 0.163 -.169651 1.003276
55+ | .6819004 .3323415 2.05 0.041 .0292345 1.334566
|
edu3 |
Diploma | -.1338837 .1938006 -0.69 0.490 -.5144774 .24671
Laurea o più | -.411256 .2207377 -1.86 0.063 -.84475 .0222379
|
reddito |
20-40 mila | .1961092 .2482033 0.79 0.430 -.2913227 .683541
Oltre 40 mila | .3467947 .250002 1.39 0.166 -.1441697 .837759
Non indica | .1712617 .2429053 0.71 0.481 -.3057658 .6482891
|
chiesa3 |
Qualche volta l'anno o al mese | .2874824 .1702766 1.69 0.092 -.0469139 .6218787
Almeno 2 volte al mese | .1234578 .2248384 0.55 0.583 -.3180892 .5650048
|
occup |
Disoccupato/a | -.2061365 .2436716 -0.85 0.398 -.6846689 .2723959
Studente/ssa | -.3307444 .4335943 -0.76 0.446 -1.182255 .520766
Pensionato/a | -.222632 .1950927 -1.14 0.254 -.6057631 .160499
Casalinga/o e altro | -.6560411 .3151949 -2.08 0.038 -1.275034 -.0370483
|
econ_peggio | .0202569 .07245 0.28 0.780 -.1220235 .1625372
pid_fdi | .6586262 .2536245 2.60 0.010 .160548 1.156705
dist_fdi | -.2200128 .0574015 -3.83 0.000 -.3327403 -.1072853
leader_fdi | .7555595 .039482 19.14 0.000 .6780231 .8330959
_cons | .6345141 .6275616 1.01 0.312 -.5979175 1.866946
-------------------------------------------------------------------------------------------------
(sum of wgt is 542.7639986872673)
Linear regression Number of obs = 665
F(18, 646) = 557.33
Prob > F = 0.0000
R-squared = 0.9059
Root MSE = 1.1798
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0796198 .1143065 0.70 0.486 -.1448374 .3040769
|
eta3 |
35-54 | .1067936 .1852853 0.58 0.565 -.2570406 .4706278
55+ | -.0804788 .1974084 -0.41 0.684 -.4681185 .3071609
|
edu3 |
Diploma | .26321 .1547139 1.70 0.089 -.0405927 .5670128
Laurea o più | -.1458185 .1804387 -0.81 0.419 -.5001357 .2084988
|
reddito |
20-40 mila | -.1989323 .16321 -1.22 0.223 -.5194184 .1215538
Oltre 40 mila | -.0591647 .1679367 -0.35 0.725 -.3889325 .2706031
Non indica | -.1363619 .1693066 -0.81 0.421 -.4688196 .1960958
|
chiesa3 |
Qualche volta l'anno o al mese | .1304182 .1246013 1.05 0.296 -.1142543 .3750906
Almeno 2 volte al mese | .0070248 .153639 0.05 0.964 -.2946674 .3087169
|
occup |
Disoccupato/a | .3683729 .1751181 2.10 0.036 .0245034 .7122424
Studente/ssa | .0071407 .2610878 0.03 0.978 -.5055425 .519824
Pensionato/a | .0684175 .1763716 0.39 0.698 -.2779133 .4147483
Casalinga/o e altro | -.1623262 .2737551 -0.59 0.553 -.6998835 .3752311
|
econ_peggio | -.0019651 .0562007 -0.03 0.972 -.1123233 .1083931
pid_fdi | .9517921 .1814619 5.25 0.000 .5954657 1.308118
dist_fdi | -.1759656 .031676 -5.56 0.000 -.2381659 -.1137654
leader_fdi | .7937639 .0263759 30.09 0.000 .7419711 .8455568
_cons | .8462553 .3824784 2.21 0.027 .0952043 1.597306
-------------------------------------------------------------------------------------------------
(sum of wgt is 896.6154925525188)
Linear regression Number of obs = 1,069
F(18, 1050) = 504.56
Prob > F = 0.0000
R-squared = 0.8655
Root MSE = 1.4309
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | -.0670124 .1277876 -0.52 0.600 -.3177606 .1837358
|
eta3 |
35-54 | -.1907769 .2200903 -0.87 0.386 -.6226439 .24109
55+ | -.516064 .2417039 -2.14 0.033 -.9903416 -.0417864
|
edu3 |
Diploma | -.0802412 .1671232 -0.48 0.631 -.4081747 .2476923
Laurea o più | -.11262 .192311 -0.59 0.558 -.4899775 .2647376
|
reddito |
20-40 mila | -.0842448 .163997 -0.51 0.608 -.406044 .2375545
Oltre 40 mila | .0586974 .1728977 0.34 0.734 -.2805669 .3979617
Non indica | .0657362 .1799114 0.37 0.715 -.2872907 .4187631
|
chiesa3 |
Qualche volta l'anno o al mese | .1985498 .1560833 1.27 0.204 -.1077208 .5048205
Almeno 2 volte al mese | .14858 .1560765 0.95 0.341 -.1576775 .4548374
|
occup |
Disoccupato/a | .0957202 .313287 0.31 0.760 -.5190196 .7104601
Studente/ssa | -.1015554 .2374795 -0.43 0.669 -.5675438 .3644329
Pensionato/a | -.0275843 .2002629 -0.14 0.890 -.4205453 .3653768
Casalinga/o e altro | -.0040809 .2287562 -0.02 0.986 -.4529522 .4447904
|
econ_peggio | -.1023656 .0537423 -1.90 0.057 -.2078201 .0030889
pid_fdi | .6937478 .2192123 3.16 0.002 .2636038 1.123892
dist_fdi | -.1476499 .033609 -4.39 0.000 -.2135982 -.0817015
leader_fdi | .8347311 .0256379 32.56 0.000 .7844238 .8850383
_cons | 1.642008 .4030263 4.07 0.000 .8511795 2.432837
-------------------------------------------------------------------------------------------------
. esttab z1 z2 z3 z4, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
> r2 label nobaselevels nogaps varwidth(32) modelwidth(13) ///
> keep(econ_peggio pid_fdi dist_fdi leader_fdi) ///
> mtitles("Nord-ovest" "Nord-est" "Centro" "Sud e isole")
----------------------------------------------------------------------------------------------------
(1) (2) (3) (4)
Nord-ovest Nord-est Centro Sud e isole
----------------------------------------------------------------------------------------------------
Economia italiana peggiorata (1- 0.01 0.02 -0.00 -0.10
(0.06) (0.07) (0.06) (0.05)
Si sente vicino a FdI 1.19*** 0.66** 0.95*** 0.69**
(0.20) (0.25) (0.18) (0.22)
Distanza ideologica da FdI (0-10 -0.25*** -0.22*** -0.18*** -0.15***
(0.05) (0.06) (0.03) (0.03)
Giudizio su Meloni (0-10) 0.72*** 0.76*** 0.79*** 0.83***
(0.03) (0.04) (0.03) (0.03)
----------------------------------------------------------------------------------------------------
Observations 908 632 665 1069
R-squared 0.884 0.854 0.906 0.866
----------------------------------------------------------------------------------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001
.
. * La differenza tra gruppi e' significativa? Interazione nel modello
. * unico (test congiunto dei termini di interazione)
. regress ptv_fdi $controlli econ_peggio pid_fdi leader_fdi ///
> c.dist_fdi##i.area4 $w
(sum of wgt is 2,757.79499575496)
Linear regression Number of obs = 3,274
F(24, 3249) = 1109.05
Prob > F = 0.0000
R-squared = 0.8701
Root MSE = 1.3775
-------------------------------------------------------------------------------------------------
| Robust
ptv_fdi | Coefficient std. err. t P>|t| [95% conf. interval]
--------------------------------+----------------------------------------------------------------
donna |
Donna | .0228973 .0724554 0.32 0.752 -.1191656 .1649601
|
eta3 |
35-54 | .1264473 .1257735 1.01 0.315 -.1201561 .3730507
55+ | .0736506 .1370508 0.54 0.591 -.1950641 .3423654
|
edu3 |
Diploma | -.0184563 .0898135 -0.21 0.837 -.1945532 .1576406
Laurea o più | -.187686 .1035593 -1.81 0.070 -.3907341 .015362
|
reddito |
20-40 mila | -.0244938 .0997393 -0.25 0.806 -.2200522 .1710645
Oltre 40 mila | .0389384 .0987081 0.39 0.693 -.154598 .2324747
Non indica | .0311894 .1045112 0.30 0.765 -.1737252 .236104
|
chiesa3 |
Qualche volta l'anno o al mese | .1590396 .0816241 1.95 0.051 -.0010003 .3190795
Almeno 2 volte al mese | .1045736 .0887368 1.18 0.239 -.0694123 .2785594
|
occup |
Disoccupato/a | .0001301 .1700752 0.00 0.999 -.3333353 .3335956
Studente/ssa | .1657025 .1922165 0.86 0.389 -.2111753 .5425802
Pensionato/a | -.0635091 .0947165 -0.67 0.503 -.2492191 .122201
Casalinga/o e altro | -.1467676 .136717 -1.07 0.283 -.4148278 .1212926
|
area4 |
Nord-est | -.0616135 .204132 -0.30 0.763 -.461854 .338627
Centro | -.0792758 .1595231 -0.50 0.619 -.392052 .2335003
Sud e isole | .2387069 .1792253 1.33 0.183 -.1126992 .590113
|
econ_peggio | -.0541667 .0310662 -1.74 0.081 -.1150779 .0067446
pid_fdi | .857559 .1115481 7.69 0.000 .6388473 1.076271
leader_fdi | .783008 .0165815 47.22 0.000 .7504967 .8155193
dist_fdi | -.199841 .0326227 -6.13 0.000 -.2638041 -.1358779
|
area4#c.dist_fdi |
Nord-est | .0080533 .0373855 0.22 0.829 -.0652482 .0813547
Centro | .0151281 .0296298 0.51 0.610 -.0429668 .0732231
Sud e isole | .0003319 .0316084 0.01 0.992 -.0616424 .0623062
|
_cons | 1.218647 .2944871 4.14 0.000 .6412477 1.796046
-------------------------------------------------------------------------------------------------
. testparm c.dist_fdi#i.area4
( 1) 2.area4#c.dist_fdi = 0
( 2) 3.area4#c.dist_fdi = 0
( 3) 4.area4#c.dist_fdi = 0
F( 3, 3249) = 0.14
Prob > F = 0.9371
.
.11Avanzato: un modello unico per più partiti (dati stacked)
Il gruppo che studia la propensione a votare i partiti mainstream (o challenger) potrebbe voler stimare un unico modello per tutta la famiglia di partiti. Si trasforma il dataset in formato stacked (o long): ogni riga diventa una coppia intervistato × partito, con le variabili generiche costruite nella sezione 9.
* Ogni riga = una coppia intervistato x partito. Serve per stimare un
* modello unico per tutta una famiglia di partiti (es. tutti i
* mainstream) invece di un modello per partito.
preserve
keep seriale wsociodem_trim donna eta3 edu3 reddito chiesa3 area4 ///
occup econ_peggio ptv_* pid_* dist_* leader_*
reshape long ptv_ pid_ dist_ leader_, i(seriale) j(partito) string
rename (ptv_ pid_ dist_ leader_) (ptv pid dist leader)
label variable pid "Identificazione con il partito"
label variable dist "Distanza ideologica dal partito"
label variable leader "Giudizio sul leader"
encode partito, gen(partito_n)
describe, short
list seriale partito ptv pid dist leader in 1/8, sepby(seriale)
gen byte mainstream = inlist(partito, "pd", "fi")
gen byte challenger = inlist(partito, "fdi", "m5s")
* Solo variabili "generiche" (relazione intervistato-partito) +
* effetti fissi di partito (i.partito_n). Le caratteristiche
* individuali (eta', istruzione...) non si inseriscono cosi' come sono:
* hanno effetti di segno diverso per partiti diversi (vedi la
* procedura "y-hat" di van der Eijk et al. 2006).
* Errori standard raggruppati per intervistato: ogni persona compare
* piu' volte nel dataset.
eststo s_main: regress ptv pid dist leader i.partito_n $w ///
if mainstream, vce(cluster seriale)
eststo s_chal: regress ptv pid dist leader i.partito_n $w ///
if challenger, vce(cluster seriale)
esttab s_main s_chal, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
r2 label nobaselevels varwidth(32) modelwidth(22) keep(pid dist leader) ///
mtitles("Mainstream (PD, FI)" "Challenger (FdI, M5S)")
restorereshape long: da 4.696 righe (una per intervistato) a 37.568 (otto per intervistato). Sotto, le otto righe del primo intervistato.i.partito_n(effetti fissi di partito) tiene conto del fatto che alcuni partiti sono in media più apprezzati di altri.vce(cluster seriale)corregge gli errori standard: ogni intervistato compare più volte e le sue risposte non sono indipendenti.- Le variabili socio-demografiche non si inseriscono così come sono, perché hanno effetti di segno opposto per partiti diversi (l'età può aumentare il giudizio su un partito e ridurlo su un altro). La soluzione standard è la procedura «y-hat» (van der Eijk et al. 2006): chiedete prima di usarla.
preserveerestorepermettono di trasformare i dati e poi tornare al dataset originale.
Output completo della sezione 11 (testo del log di Stata)
. *====================================================================
. * SEZIONE 11. Avanzato: un modello unico su piu' partiti (dati stacked)
. *====================================================================
. * Ogni riga = una coppia intervistato x partito. Serve per stimare un
. * modello unico per tutta una famiglia di partiti (es. tutti i
. * mainstream) invece di un modello per partito.
. preserve
. keep seriale wsociodem_trim donna eta3 edu3 reddito chiesa3 area4 ///
> occup econ_peggio ptv_* pid_* dist_* leader_*
. reshape long ptv_ pid_ dist_ leader_, i(seriale) j(partito) string
(j = avs aziv fdi fi lega m5s pd piueu)
Data Wide -> Long
-----------------------------------------------------------------------------
Number of observations 4,696 -> 37,568
Number of variables 42 -> 15
j variable (8 values) -> partito
xij variables:
ptv_avs ptv_aziv ... ptv_piueu -> ptv_
pid_avs pid_aziv ... pid_piueu -> pid_
dist_avs dist_aziv ... dist_piueu -> dist_
leader_avs leader_aziv ... leader_piueu -> leader_
-----------------------------------------------------------------------------
. rename (ptv_ pid_ dist_ leader_) (ptv pid dist leader)
. label variable pid "Identificazione con il partito"
. label variable dist "Distanza ideologica dal partito"
. label variable leader "Giudizio sul leader"
. encode partito, gen(partito_n)
. describe, short
Contains data
Observations: 37,568
Variables: 16
Sorted by: seriale partito
Note: Dataset has changed since last saved.
. list seriale partito ptv pid dist leader in 1/8, sepby(seriale)
+---------------------------------------------------+
| seriale partito ptv pid dist leader |
|---------------------------------------------------|
1. | 9 avs 0 0 5.121472 0 |
2. | 9 aziv 0 0 2.489395 0 |
3. | 9 fdi 3 0 1.383564 3 |
4. | 9 fi 10 1 .3680781 10 |
5. | 9 lega 3 0 .9545729 0 |
6. | 9 m5s 0 0 3.411699 0 |
7. | 9 pd 0 0 4.070511 0 |
8. | 9 piueu 0 0 3.573743 0 |
+---------------------------------------------------+
.
. gen byte mainstream = inlist(partito, "pd", "fi")
. gen byte challenger = inlist(partito, "fdi", "m5s")
.
. * Solo variabili "generiche" (relazione intervistato-partito) +
. * effetti fissi di partito (i.partito_n). Le caratteristiche
. * individuali (eta', istruzione...) non si inseriscono cosi' come sono:
. * hanno effetti di segno diverso per partiti diversi (vedi la
. * procedura "y-hat" di van der Eijk et al. 2006).
. * Errori standard raggruppati per intervistato: ogni persona compare
. * piu' volte nel dataset.
. eststo s_main: regress ptv pid dist leader i.partito_n $w ///
> if mainstream, vce(cluster seriale)
(sum of wgt is 6,073.74014437199)
Linear regression Number of obs = 7,128
F(4, 3590) = 4039.53
Prob > F = 0.0000
R-squared = 0.7649
Root MSE = 1.5499
(Std. err. adjusted for 3,591 clusters in seriale)
------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
pid | 1.059743 .0909283 11.65 0.000 .8814663 1.238019
dist | -.2005753 .0132979 -15.08 0.000 -.2266475 -.174503
leader | .7815245 .0114494 68.26 0.000 .7590766 .8039725
|
partito_n |
pd | .1450985 .0501515 2.89 0.004 .0467703 .2434267
_cons | 1.348524 .0739579 18.23 0.000 1.20352 1.493527
------------------------------------------------------------------------------
. eststo s_chal: regress ptv pid dist leader i.partito_n $w ///
> if challenger, vce(cluster seriale)
(sum of wgt is 6,099.43240457773)
Linear regression Number of obs = 7,143
F(4, 3590) = 5816.42
Prob > F = 0.0000
R-squared = 0.7858
Root MSE = 1.6349
(Std. err. adjusted for 3,591 clusters in seriale)
------------------------------------------------------------------------------
| Robust
ptv | Coefficient std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
pid | 1.220956 .0954584 12.79 0.000 1.033798 1.408114
dist | -.1509382 .0151487 -9.96 0.000 -.1806391 -.1212373
leader | .7606734 .0125544 60.59 0.000 .7360588 .7852879
|
partito_n |
m5s | -.3933444 .052474 -7.50 0.000 -.4962262 -.2904625
_cons | 1.056809 .0973512 10.86 0.000 .8659399 1.247678
------------------------------------------------------------------------------
. esttab s_main s_chal, b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) ///
> r2 label nobaselevels varwidth(32) modelwidth(22) keep(pid dist leader) ///
> mtitles("Mainstream (PD, FI)" "Challenger (FdI, M5S)")
------------------------------------------------------------------------------------
(1) (2)
Mainstream (PD, FI) Challenger (FdI, M5S)
------------------------------------------------------------------------------------
Identificazione con il partito 1.06*** 1.22***
(0.09) (0.10)
Distanza ideologica dal partito -0.20*** -0.15***
(0.01) (0.02)
Giudizio sul leader 0.78*** 0.76***
(0.01) (0.01)
------------------------------------------------------------------------------------
Observations 7128 7143
R-squared 0.765 0.786
------------------------------------------------------------------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001
. restore
.
.12Esportare tabelle e grafici per la presentazione
* tabella in formato Word (.rtf si apre con Word)
esttab m1 m2 m3 m4 using "tabella_modelli_fdi.rtf", replace ///
b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) r2 ar2 label ///
nobaselevels mtitles("Socio-dem." "+ PID, economia" "+ distanza" "+ leader") ///
title("Determinanti del giudizio su FdI (OLS, Itanes 2022)") ///
addnotes("Errori standard robusti tra parentesi. Dati pesati.")
* la stessa tabella in .csv (si apre con Excel)
esttab m1 m2 m3 m4 using "tabella_modelli_fdi.csv", replace ///
b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) r2 label nobaselevels
esttab p_pd p_fi p_fdi p_m5s using "tabella_partiti.rtf", replace ///
b(%9.2f) se(%9.2f) star(* 0.05 ** 0.01 *** 0.001) r2 label ///
nobaselevels keep(econ_peggio pid dist leader) mtitles("PD" "FI" "FdI" "M5S")
log close- Il file
.rtfsi apre con Word: da lì potete copiare la tabella nelle slide. Il.csvsi apre con Excel. - I grafici sono già salvati in PNG nella cartella
graficicongraph export(sezioni 4, 6 e 8). - In una slide non mettete tabelle con 20 righe: tenete le variabili focali con
keep()e indicate in nota quali controlli sono inclusi.
✓Checklist ed errori frequenti
Prima di stimare
- Ho controllato i codici dei valori mancanti di ogni variabile (
tab, nolabel)? - Ho controllato ogni ricodifica incrociando originale e nuova variabile?
- La scala della dipendente va nella direzione giusta (valori alti = più favorevole)?
- Sto usando il peso raccomandato dal dataset?
- Ogni scelta di variabile e di ricodifica è giustificata dalla letteratura?
Mentre interpreto
- I modelli a blocchi sono stimati sullo stesso campione?
- Ho interpretato i coefficienti nell'unità della variabile (punti 0-10)?
- Ho confrontato i gruppi con un'interazione e non con gli asterischi?
- Ho controllato la multicollinearità tra variabili simili?
- Ho discusso anche i risultati nulli o contrari alle attese?
Errori frequenti di Stata
| Messaggio | Cosa significa | Soluzione |
|---|---|---|
file … not found (r(601)) | Stata non trova il file dei dati | Controllate la riga cd e il nome del file (spazi compresi) |
variable … already defined (r(110)) | State creando una variabile che esiste già, di solito perché avete rieseguito una sezione | Rieseguite tutto il do-file dall'inizio (la riga use …, clear riparte dai dati originali) |
variable … not found (r(111)) | Nome sbagliato, o la variabile viene creata in una sezione non ancora eseguita | Controllate il nome con describe o lookfor |
command esttab is unrecognized | Il pacchetto non è installato | ssc install estout |
no observations (r(2000)) | Dopo i filtri e i missing non resta nessun caso | Controllate la condizione if e i missing con misstable summarize |