Regressione lineare Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°8 Regressione lineare - Modello Modello di regressione lineare • si vuole modellare una relazione di tipo lineare tra una variabile dipendente e un insieme di regressori che si ritiene influenzino la variabile dipendente • si vuole approssimare la nuvola dei punti osservati (ogni punto rappresenta un intervistato) con una retta • tra tutte le infinite rette possibili si stima la retta che fornisce l’interpolazione migliore • stimare la migliore retta di regressione significa calcolare una stima dei coefficienti associati ai regressori che entrano nel modello (tutto ciò con il vincolo di minimizzare gli errori di approssimazione) Regressione lineare – Analisi preliminari Prima di stimare il modello • costruire variabili dummy se necessario (ossia se si vogliono utilizzare variabili qualitative nominali come regressori) • valutare il coefficiente di correlazione lineare (PROC CORR) tra la variabile dipendente e tutti i potenziali regressori • valutare la presenza di multicollinearità tra i regressori (PROC CORR per analizzare la matrice di correlazione tra i regressori che entrano nel modello) Regressione lineare – Selezione regressori Scelta dei regressori che entrano nel modello • selezione a priori di un sottoinsieme di regressori (ad es. si scelgono le variabili con valori alti del coefficiente di correlazione lineare con la variabile dipendente. PROC REG senza opzioni di selezione variabili) • metodo di selezione automatica (PROC REG con opzione STEPWISE) Regressione lineare – Regressione stepwise Procedura sequenziale che valuta l’ingresso/uscita dal modello dei singoli regressori (in base a indicatori legati all’R-quadro) • • • • • Step 0si considera un insieme di potenziali regressori Step 1entra il primo regressore. Ossia, viene stimato un modello contenente un unico regressore tra quelli proposti (il regressore che spiega meglio la variabilità della variabile dipendente) Step 2si valutano tutti i possibili modelli contenenti il regressore individuato allo step 1 e uno dei rimanenti regressori, e si tiene il modello con il fit migliore (ossia entra il regressore che dà il contributo maggiore alla spiegazione della variabilità) Step 3come nello step 2, entra il regressore che dà il contributo maggiore alla spiegazione della variabilità Step 4si valuta l’uscita di ognuno dei regressori presenti (in base alla minor perdita di capacità esplicativa del modello) e l’ingresso di un nuovo regressore (in base al maggior incremento nella capacità esplicativa del modello) La procedura continua con l’ingresso/uscita dei regressori fino a quando non si può più migliorare la capacità esplicativa del modello. Regressione lineare – Interpretazione coefficienti Il coefficiente beta (output della PROC REG) associato ad uno specifico regressore X ha il seguente significato Y 0 1 X 1 2 X 2 ... pXp • se X aumenta/diminuisce di una unità (e tutti gli altri regressori rimangono invariati) allora 1) se il coefficiente è positivo Y aumenta/diminuisce di una percentuale pari al valore del coefficiente 2) se il coefficiente è negativo Y diminuisce/aumenta di una percentuale pari al valore del coefficiente • in genere si considerano i coefficienti standardizzati (opzione STB della PROC REG) che non sono influenzati dall’unità di misura delle variabili Regressione lineare – Valutazione modello Valutazione della bontà del modello (output della PROC REG) • coefficiente di determinazione R-quadro per valutare la capacità del modello di rappresentare la relazione tra la variabile dipendente e i regressori (tra 0 e 1, quanto più si avvicina ad 1 tanto migliore è il modello) • test F per valutare la significatività di tutti i coefficienti (se p-value del test piccolo allora si rifiuta l’ipotesi di tutti i coefficienti simultaneamente nulli il modello è buono) • test t per valutare la significatività dei singoli coefficienti (se p-value del test piccolo allora si rifiuta l’ipotesi di coefficiente nullo il regressore corrispondente è rilevante per la spiegazione della variabile dipendente) PROC REG – Sintassi Modello di regressione lineare – k regressori specificati a priori proc reg data= dataset; model variabile dipendente= regressore_1 . . . regressore_k /option(s); run; OPTIONS: • /stb calcola i coefficienti standardizzati • /selection=stepwise applica la procedura stepwise per la selezione dei regressori PROC REG – Esempio 1 Variabile dipendente e regressori Nome variabile soddisfazione_globale AccessoWeb_2 AltriOperatori_2 assistenza_2 Autoricarica_2 CambioTariffa_2 ChiamateTuoOperatore_2 ChiarezzaTariffe_2 ComodatoUso_2 copertura_2 CostoMMS_2 CostoSMS_2 diffusione_2 DurataMinContratto_2 immagine_2 MMSTuoOperatore_2 NavigazioneWeb_2 NoScattoRisp_2 NumeriFissi_2 Promozioni_2 SMSTuoOperatore_2 vsPochiNumeri_2 Livello di Livello di Livello di Livello di Livello di Descrizione variabile soddisfazione globale relativo al telefono cellulare soddisfazione relativo al costo di accesso a internet soddisfazione relativo ai costi verso altri operatori soddisfazione relativo al servizio di assistenza soddisfazione relativo alla possibilità di autoricarica Livello di soddisfazione relativo alla facilità di cambiamento della tariffa Livello di soddisfazione relativo alla possibilità di effettuare chiamate a costi inferiori verso numeri dello stesso operatore Livello di soddisfazione relativo alla chiarezza espositiva delle tariffe Livello di soddisfazione relativo alla possibilità di rivecere un cellulare in comodato d'uso Livello di soddisfazione relativo alla copertura della rete Livello di soddisfazione relativo al costo degli MMS Livello di soddisfazione relativo al costo degli SMS Livello di soddisfazione relativo alla diffusione Livello di soddisfazione relativo alla presenza di una durata minima del contratto Livello di soddisfazione relativo all'immagine Livello di soddisfazione relativo alla possibilità inviare MMS a costi inferiori verso numeri dello stesso operatore Livello di soddisfazione relativo al costo di navigazione in internet Livello di soddisfazione relativo all'assenza di scatto alla risposta Livello di soddisfazione relativo alle agevolazioni verso numeri fissi Livello di soddisfazione relativo alla possibilità di attivare promozioni sulle tariffe Livello di soddisfazione relativo alla possibilità inviare SMS a costi inferiori verso numeri dello stesso operatore Livello di soddisfazione relativo alle agevolazioni verso uno o più numeri di telefono PROC REG – Esempio 1 Modello di regressione lineare variabile dipendente= SODDISFAZIONE_GLOBALE, regressori= 21 variabili di soddisfazione (livello di soddisfazione relativo a tariffe, promozioni, ecc.) VARIABILE DIPENDENTE proc reg data= corso.telefonia; model soddisfazione_globale= CambioTariffa_2 ChiarezzaTariffe_2 /stb; run; opzione per ottenere i coefficienti standardizzati REGRESSORI … PROC REG – Output esempio 1 attenzioneper stimare il modello SAS non utilizza i record con valori mancanti il modello è abbastanza buono (spiega il 62% della variabilità della variabile dipendente) Number of Observations Read Number of Observations Used Number of Observations with Missing Values Root MSE Dependent Mean Coeff Var Source Model Error Corrected Total DF 21 213 234 236 235 1 0.88085 6.49362 13.56492 Analysis of Variance Sum of Squares 271.47294 165.26749 436.74043 R-Square Adj R-Sq 0.6216 0.5843 Mean F Value Pr > F Square 12.92728 16.66 <.0001 0.7759 il modello è significativo (il p-value del test F è piccolo) PROC REG – Output esempio 1 Variable DF Intercept CambioTariffa_2 MMSTuoOperatore_2 copertura_2 NoScattoRisp_2 Autoricarica_2 CostoMMS_2 NumeriFissi_2 DurataMinContratto_2 vsPochiNumeri_2 diffusione_2 ComodatoUso_2 ChiarezzaTariffe_2 AccessoWeb_2 AltriOperatori_2 SMSTuoOperatore_2 assistenza_2 immagine_2 ChiamateTuoOperatore_2 Promozioni_2 CostoSMS_2 NavigazioneWeb_2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Parameter Estimates Parameter Standard t Value Estimate Error 1.05063 0.40052 2.62 0.12034 0.0331 3.64 -0.00139 0.01586 -0.09 0.06579 0.04557 1.44 -0.02286 0.02539 -0.9 -0.00947 0.02736 -0.35 0.00949 0.03211 0.3 0.0584 0.03599 1.62 0.03014 0.03124 0.96 -0.01002 0.03212 -0.31 0.05247 0.05206 1.01 0.06531 0.02891 2.26 0.06117 0.03412 1.79 0.02487 0.05946 0.42 0.06777 0.03564 1.9 0.01755 0.03696 0.47 0.0504 0.04082 1.23 0.01288 0.04614 0.28 0.15362 0.04424 3.47 0.14316 0.0426 3.36 0.02739 0.04167 0.66 -0.04249 0.06017 -0.71 Pr > |t| 0.0093 0.0003 0.9303 0.1503 0.3689 0.7295 0.768 0.1062 0.3358 0.7555 0.3147 0.0249 0.0744 0.6762 0.0586 0.6354 0.2183 0.7803 0.0006 0.0009 0.5117 0.4809 Standardized Estimate 0 0.19584 -0.00425 0.07419 -0.04257 -0.01698 0.01558 0.08448 0.04964 -0.01566 0.0565 0.11126 0.10058 0.04024 0.1006 0.02923 0.06798 0.01638 0.21813 0.20717 0.04154 -0.06822 coefficienti significativiregressori rilevanti per la spiegazione del fenomeno PROC REG – Output esempio 1 Parameter Estimates Variable DF Parameter Standard t Value Estimate Error Intercept 1 1.05063 0.40052 2.62 CambioTariffa_2 1 0.12034 0.0331 3.64 MMSTuoOperatore_2 1 -0.00139 0.01586 -0.09 copertura_2 1 0.06579 0.04557 1.44 NoScattoRisp_2 1 -0.02286 0.02539 -0.9 Autoricarica_2 1 -0.00947 0.02736 -0.35 CostoMMS_2 1 0.00949 0.03211 0.3 NumeriFissi_2 1 0.0584 0.03599 1.62 DurataMinContratto_2 1 0.03014 0.03124 0.96 se la variabile NoScattoRisp_2 aumenta vsPochiNumeri_2 1 -0.01002 0.03212 -0.31 (diminuisce) di una unità allora la soddisfazione diffusione_2 1 0.05247 0.05206 1.01 globale diminuisce (aumenta) del 4% ComodatoUso_2 1 0.06531 0.02891 2.26 ChiarezzaTariffe_2 1 0.06117 0.03412 1.79 AccessoWeb_2 1 0.02487 0.05946 0.42 AltriOperatori_2 1 0.06777 0.03564 1.9 SMSTuoOperatore_2 1 0.01755 0.03696 0.47 assistenza_2 1 0.0504 0.04082 1.23 immagine_2 1 0.01288 0.04614 0.28 ChiamateTuoOperatore_2 1 0.15362 0.04424 3.47 Promozioni_2 1 0.14316 0.0426 3.36 CostoSMS_2 1 0.02739 0.04167 0.66 NavigazioneWeb_2 1 -0.04249 0.06017 -0.71 Pr > |t| 0.0093 0.0003 0.9303 0.1503 0.3689 0.7295 0.768 0.1062 0.3358 0.7555 0.3147 0.0249 0.0744 0.6762 0.0586 0.6354 0.2183 0.7803 0.0006 0.0009 0.5117 0.4809 Standardized Estimate 0 0.19584 -0.00425 0.07419 -0.04257 -0.01698 0.01558 0.08448 0.04964 -0.01566 0.0565 0.11126 0.10058 0.04024 0.1006 0.02923 0.06798 0.01638 0.21813 0.20717 0.04154 -0.06822 se la variabile CambioTariffa_2 aumenta (diminuisce) di una unità allora la soddisfazione globale aumenta (diminuisce) del 20% PROC REG – Esempio 2 Scelta dei regressori utili alla spiegazione della SODDISFAZIONE_GLOBALE sulla base del coefficiente di correlazione lineare con la variabile dipendente e analisi della multicollinearità. scelta dei regressori proc corr data= corso.telefonia; var soddisfazione_globale; with CambioTariffa_2 SMSTuoOperatore_2 … ; run; analisi multicollinearità regressori candidati: 21 variabili di soddisfazione proc corr data= corso.telefonia; var CambioTariffa_2 ChiarezzaTariffe_2 …; run; regressori selezionati (quelli con coeff correlaz lineare elevato) PROC REG – Esempio 2 Regressione di SODDISFAZIONE_GLOBALE sull’insieme di 8 regressori scelti a priori sulla base del coefficiente di correlazione lineare. stima del modello di regressione proc reg data= corso.telefonia; model soddisfazione_globale= CambioTariffa_2 ChiarezzaTariffe_2 AltriOperatori_2 SMSTuoOperatore_2 Assistenza_2 ChiamateTuoOperatore_2 Promozioni_2 CostoSMS_2 /stb; run; regressori selezionati in base al coefficiente di correlaz lineare PROC CORR - Scelta regressori - Output esempio 2 CambioTariffa_2 CambioTariffa_2 MMSTuoOperatore_2 MMSTuoOperatore_2 copertura_2 copertura_2 NoScattoRisp_2 NoScattoRisp_2 Autoricarica_2 Autoricarica_2 CostoMMS_2 CostoMMS_2 NumeriFissi_2 NumeriFissi_2 DurataMinContratto_2 DurataMinContratto_2 vsPochiNumeri_2 vsPochiNumeri_2 diffusione_2 diffusione_2 ComodatoUso_2 ComodatoUso_2 Pearson Correlation Coefficients Prob > |r| under H0: Rho=0 Number of Observations soddisfazione_globale soddisfazione_globale 0.55638 0.5014 ChiarezzaTariffe_2 <.0001 ChiarezzaTariffe_2 <.0001 235 235 0.20027 0.15544 AccessoWeb_2 0.002 AccessoWeb_2 0.0171 235 235 0.30879 0.43996 AltriOperatori_2 <.0001 AltriOperatori_2 <.0001 235 235 0.1361 SMSTuoOperatore_2 0.46648 0.0371 SMSTuoOperatore_2 <.0001 235 235 0.26927 0.42899 assistenza_2 <.0001 assistenza_2 <.0001 235 235 0.22365 0.36016 immagine_2 0.0006 immagine_2 <.0001 235 235 0.36509 ChiamateTuoOperatore_2 0.57824 <.0001 ChiamateTuoOperatore_2 <.0001 235 235 0.29973 0.60634 Promozioni_2 <.0001 Promozioni_2 <.0001 235 235 0.33324 0.43441 CostoSMS_2 <.0001 CostoSMS_2 <.0001 235 235 0.32321 0.13071 NavigazioneWeb_2 <.0001 NavigazioneWeb_2 0.0453 235 235 0.25317 coeff correlaz lineare>=0.5 <.0001 coeff correlaz lineare>=0.4 235 PROC CORR – Analisi multicollinearità Output esempio 2 Pearson Correlation Coefficients, N = 236 CambioTar Chiarezza AltriOperat SMSTuoO assistenza ChiamateT Promozion CostoSMS iffa_2 Tariffe_2 ori_2 peratore_2 _2 uoOperato i_2 _2 re_2 CambioTar 1 0.41856 0.33324 0.25611 0.34255 0.4098 0.49403 0.31947 iffa_2 Chiarezza 0.41856 1 0.36892 0.29734 0.3176 0.32382 0.55166 0.30541 Tariffe_2 AltriOperat 0.33324 0.36892 1 0.31469 0.19209 0.26941 0.37051 0.28354 ori_2 SMSTuoO 0.25611 0.29734 0.31469 1 0.19893 0.56586 0.37221 0.58255 peratore_2 assistenza 0.34255 0.3176 0.19209 0.19893 1 0.27931 0.40113 0.15707 _2 ChiamateT 0.4098 0.32382 0.26941 0.56586 0.27931 1 0.43619 0.52141 uoOperato re_2 Promozion 0.49403 0.55166 0.37051 0.37221 0.40113 0.43619 1 0.27395 i_2 CostoSMS 0.31947 0.30541 0.28354 0.58255 0.15707 0.52141 0.27395 1 _2 PROC REG – Output esempio 2 attenzioneper stimare il modello SAS non utilizza i record con valori mancanti Number of Observations Read Number of Observations Used Number of Observations with Missing Values Root MSE Dependent Mean Coeff Var 236 235 1 0.88904 6.49362 13.69104 R-Square Adj R-Sq 0.591 0.5765 il modello è abbastanza buono ma non del tutto soddisfacente (R-quadro più basso di prima perché ci sono meno regressori) PROC REG – Output esempio 2 Variable Intercept CambioTariffa_2 ChiarezzaTariffe_2 AltriOperatori_2 SMSTuoOperatore_2 assistenza_2 ChiamateTuoOperatore_2 Promozioni_2 CostoSMS_2 Parameter Estimates DF Parameter Standard t Value Estimate Error 1.82201 0.28363 6.42 1 0.11539 0.03235 3.57 1 0.06327 0.03259 1.94 1 0.09227 0.03252 2.84 1 0.03359 0.03489 0.96 1 0.10052 0.03519 2.86 1 0.17321 0.04109 4.22 1 0.14581 0.04016 3.63 1 0.02984 0.03688 0.81 1 Pr > |t| Standardized Estimate <.0001 0 0.0004 0.18779 0.0534 0.10404 0.005 0.13698 0.3367 0.05595 0.0047 0.1356 <.0001 0.24594 0.0003 0.211 0.4193 0.04526 coefficienti significativiregressori rilevanti per la spiegazione del fenomeno PROC REG – Sintassi Modello di regressione lineare – selezione automatica dei regressori (a partire da p regressori) proc reg data= dataset; model variabile dipendente= regressore_1 . . . regressore_p /stb selection= stepwise; run; PROC REG – Esempio 3 Regressione di SODDISFAZIONE_GLOBALE su un insieme di regressori scelti tramite la procedura stepwise proc reg data= corso.telefonia; model soddisfazione_globale= CambioTariffa_2 ChiarezzaTariffe_2 … /stb selection= stepwise; run; tutte le 21 variabili di soddisfazione PROC REG – Esempio 3 Verifica multicollinearità sui regressori selezionati dalla procedura stepwise proc corr data= corso.telefonia; var CambioTariffa_2 Copertura_2 ComodatoUso_2 ChiarezzaTariffe_2 AltriOperatori_2 Assistenza_2 ChiamateTuoOperatore_2 Promozioni_2; run; PROC REG – Output esempio 3 PROC REG – Output esempio 3 Root MSE Dependent Mean Coeff Var Variable DF Intercept CambioTariffa_2 copertura_2 ComodatoUso_2 ChiarezzaTariffe_2 AltriOperatori_2 assistenza_2 ChiamateTuoOperatore_2 Promozioni_2 1 1 1 1 1 1 1 1 1 0.8706 R-Square 0.6078 6.49362 Adj R-Sq 0.5939 13.40707 Parameter Estimates Parameter Standard Estimate Error 1,28835 0,34002 0,11167 0,0314 0,09188 0,04233 0,07199 0,02572 0,06856 0,03238 0,08115 0,03206 0,06765 0,03747 0,19919 0,03449 0,14977 0,03898 t Value 3,79 3,56 2,17 2,8 2,12 2,53 1,81 5,78 3,84 Pr > |t| 0,0002 0,0005 0,031 0,0056 0,0353 0,012 0,0723 <.0001 0,0002 Standardized Estimate 0 0,18173 0,10361 0,12264 0,11273 0,12048 0,09126 0,28283 0,21673 quasi tutti i coefficienti sono significativi PROC REG – Output esempio 3 Analisi multicollinearità tra i regressori selezionati dalla stepwise Pearson Correlation Coefficients, N = 236 CambioT copertura Comodat Chiarezz AltriOper assistenz Chiamate Promozio ariffa_2 _2 oUso_2 aTariffe_ atori_2 a_2 TuoOper ni_2 2 atore_2 CambioTariffa_2 copertura_2 ComodatoUso_2 ChiarezzaTariffe_2 AltriOperatori_2 assistenza_2 ChiamateTuoOperatore_2 Promozioni_2 1 0.17398 0.15965 0.41856 0.33324 0.34255 0.4098 0.49403 0.17398 1 -0.0047 0.04225 0.10103 0.43697 0.27442 0.20653 0.15965 -0.0047 1 0.23512 0.26158 0.08806 0.06068 0.1271 0.41856 0.04225 0.23512 1 0.36892 0.3176 0.32382 0.55166 0.33324 0.10103 0.26158 0.36892 1 0.19209 0.26941 0.37051 0.34255 0.43697 0.08806 0.3176 0.19209 1 0.27931 0.40113 0.4098 0.27442 0.06068 0.32382 0.26941 0.27931 1 0.43619 0.49403 0.20653 0.1271 0.55166 0.37051 0.40113 0.43619 1 PROC REG – Riepilogo Per stimare un modello di regressione lineare 1. individuare la variabile dipendente (=il fenomeno da analizzare) 2. individuare l’insieme dei potenziali regressori (eventualmente tutte le variabili nel dataset) 3. se necessario costruire variabili dummy 4. analizzare il coefficiente di correlazione lineare dei potenziali regressori con la variabile dipendente ed eventualmente fare una prima selezione dei regressori 5. verificare la presenza di multicollinearità tra i regressori usciti dalla prima selezione ed eventualmente eliminarne alcuni 6. far girare la PROC REG con il metodo stepwise e verificare la bontà del modello (R-quadro e significatività dei coefficienti) 7. se il modello non è soddisfacente verificare nuovamente la presenza di multicollinearità tra i regressori selezionati dalla stepwise e ripetere dal punto 4 Costruzione variabili dummy esempio Non si possono inserire variabili qualitative nominali tra i regressoriper considerare questo tipo di variabili all’interno del modello bisogna costruire delle variabili dicotomiche (0-1) che identificano le modalità della variabile nominale originaria). Es. Si vuole considerare tra i regressori la variabile qualitativa nominale “Area” che identifica l’area di residenza degli intervistati N° questionario 1 2 3 4 5 6 7 8 9 10 AREA nord nord sud nord centro nord centro sud nord centro La variabile “Area” assume tre modalità (nord-centro-sud) si costruiscono due variabili dummy Costruzione variabili dummy esempio Le variabili dummy da costruire sono due (la terza sarebbe ridondantepuò essere ottenuta come combinazione delle altre due) • Area_nordvale 1 se l’intervistato è residente al nord e 0 in tutti gli altri casi • Area_centrovale 1 se l’intervistato è residente al centro e 0 in tutti gli altri casi Costruzione variabili dummy esempio N° questionario 1 2 3 4 5 6 7 8 9 10 AREA nord nord sud nord centro nord centro sud nord centro AREA_NORD AREA_CENTRO 1 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 VARIABILE ORIGINARIA (non entra nel modello) VARIABILI DUMMY (entrano nel modello) Costruzione variabili dummy esempio Nella PROC REG si inseriscono le due variabili dummy (ma non la variabile originaria!) nella lista dei regressorii relativi coefficienti rappresentano l’effetto della singola modalità (nord/centro) della variabile “Area”. proc reg data= … ; model Y= X1 X2 … area_nord area_centro /stb selection= stepwise; run; Assegnazione di etichette alle variabili di un dataset • Talvolta i nomi delle variabili costruite a partire dalle domande del questionario non sono sufficientemente esplicativi • Una volta importati i dati in SAS è possibile assegnare alle variabili delle etichette che contengano una descrizione più dettagliata delle variabili stesse • La creazione di etichette deve avvenire all’interno di un passo di “DATA” • Le etichette vengono visualizzate negli output prodotti dalle procedure SAS Assegnazione di etichette alle variabili di un dataset Si assegnano le etichette alle 4 variabili del dataset “anagrafica” data anagrafica; set anagrafica; label n_questionario= "identificativo questionario"; label d_1= "eta intervistato"; label d_2= "area residenza intervistato"; label d_3= "sesso intervistato"; run;