Regressione lineare - Esercizi Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°12 Consegna lavoro di gruppo e Date appelli • Le date per la consegna del lavoro di gruppo sono inderogabilmente fissate: – – • lunedì 11 gennaio 2010 entro le ore 12 lunedì 25 gennaio 2010 entro le ore 12 Le date d’esame relative alla sessione invernale sono: – – – lunedì 18 gennaio 2010 lunedì 1 febbraio 2010 lunedì 15 febbraio 2010 Multicollinearità Quando un regressore è combinazione lineare di altri regressori nel modello, le stime sono instabili e hanno standard error elevato. Questo problema è chiamato multicollinearità. La PROC REG fornisce nell’output un indicatore per ogni regressore per investigare questo problema: Variance Inflation Factors (opzione VIF nel model statment). R2 Multicollinearità Per verificare la presenza di multicollinearità • regressione lineare di Xj sui rimanenti p-1 regressori - Rj² misura la quota di varianza di Xj spiegata dai rimanenti p-1 regressori valori alti=multicollin. - VIFj = 1 / (1 – Rj²) misura il grado di relazione lineare tra Xj e i rimanenti p-1 regressori valori alti= multicollin. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 0.98 0.99 VIF 1.11 1.25 1.43 1.67 2.00 2.50 3.33 5.00 10.00 20.00 50.00 100.00 PROC REG – Sintassi Modello di regressione lineare proc reg data=dataset; model variabile_dipendente= regressore_1 ... regressore_p /option(s); run; OPTIONS: • STB calcola i coefficienti standardizzati • selection=stepwise applica la procedura stepwise per la selezione dei regressori • slentry=… livello di significatività richiesto per il test F parziale affinchè il singolo regressore possa entrare nel modello • slstay=… livello di significatività richiesto per il test F parziale affinchè il singolo regressore non sia rimosso dal modello • VIF per verificare presenza di multicollinearietà Esempio L’analisi fattoriale ci permette di risolvere il problema della multicollinearietà, come? 1° Modello di regressione lineare • variabile dipendente= SODDISFAZIONE_GLOBALE, • regressori= 21 variabili di soddisfazione (livello di soddisfazione relativo a tariffe, promozioni, ecc.) 2° Modello di regressione lineare • variabile dipendente= SODDISFAZIONE_GLOBALE, • 6 fattori creati con un’analisi fattoriale sulle 21 variabili di soddisfazione (livello di soddisfazione relativo a tariffe, promozioni, ecc.) Esempio 1° Modello di regressione lineare 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 Paramete Standard t Value Pr > |t| Standardize Variance r d Estimate Error Estimate Inflation 1.05063 0.40052 2.62 0.0093 0 0 0.12034 0.0331 3.64 0.0003 0.19584 1.63324 -0.00139 0.01586 -0.09 0.9303 -0.00425 1.32504 0.06579 0.04557 1.44 0.1503 0.07419 1.48622 -0.02286 0.02539 -0.9 0.3689 -0.04257 1.25835 -0.00947 0.02736 -0.35 0.7295 -0.01698 1.35409 0.00949 0.03211 0.3 0.768 0.01558 1.56654 0.0584 0.03599 1.62 0.1062 0.08448 1.52619 0.03014 0.03124 0.96 0.3358 0.04964 1.49001 -0.01002 0.03212 -0.31 0.7555 -0.01566 1.42001 0.05247 0.05206 1.01 0.3147 0.0565 1.76896 0.06531 0.02891 2.26 0.0249 0.11126 1.36501 0.06117 0.03412 1.79 0.0744 0.10058 1.77144 0.02487 0.05946 0.42 0.6762 0.04024 5.21015 0.06777 0.03564 1.9 0.0586 0.1006 1.57539 0.01755 0.03696 0.47 0.6354 0.02923 2.13318 0.0504 0.04082 1.23 0.2183 0.06798 1.70656 0.01288 0.04614 0.28 0.7803 0.01638 1.9376 0.15362 0.04424 3.47 0.0006 0.21813 2.22145 0.14316 0.0426 3.36 0.0009 0.20717 2.13881 0.02739 0.04167 0.66 0.5117 0.04154 2.24805 -0.04249 0.06017 -0.71 0.4809 -0.06822 5.25292 Alcuni dei VIFj presentano valori alti Multicollinearità Esempio 2° Modello di regressione lineare Variable DF Intercept Factor1 Factor2 Factor3 Factor4 Factor5 Factor6 1 1 1 1 1 1 1 Parameter Estimate 6.49839 0.51102 0.437 0.06409 0.69395 0.24529 0.32203 Parameter Estimates Standard t Value Pr > |t| Standardized Variance Inflation Error Estimate 0 0.05783 112.38 <.0001 0 1.00 0.05838 8.75 <.0001 0.37142 1.00 0.05822 7.51 <.0001 0.31847 1.00 0.05821 1.1 0.272 0.04672 1.00 0.05813 11.94 <.0001 0.50651 1.00 0.05833 4.2 <.0001 0.17843 1.00 0.05782 5.57 <.0001 0.23622 •L’analisi fattoriale ci permette di trasformare i regressori in componenti non correlate e risolvere il problema della multicollinearità. Tutti i Variance Inflation Factors sono uguali a 1, cioè l’Rj² della regressione lineare di Xj sui rimanenti p-1 regressori è pari a zero. Osservazioni influenti Se un valore yj è particolarmente inusuale rispetto a tutti gli altri allora la stima del modello di regressione può essere notevolmente influenzata da tale osservazione. Per valutare la presenza di osservazioni influenti si elimina una osservazione per volta e si stima nuovamente il modello. Osservazioni la cui esclusione produce variazioni rilevanti nelle stime dei coefficienti sono dette influenti Statistiche di influenza Una misura di influenza è rappresentata dalla Distanza di Cook che misura la distanza tra la stima dei coefficienti senza l’i-esima osservazione e con l’i-esima osservazione. Di yˆ yˆ (i ) 2 pˆ 2 →Le unità per cui Di > 1 sono potenzialmente osservazioni influenti Statistiche di influenza ε̂ i yi ŷi Var( ε̂ i ) σ 2 (1 h ii ) Un’altra misura di influenza è rappresentata dal Leverage H che misura quanto un’osservazione è lontana dal centro dei dati. →Leverage alto per i-esima oss implica che la correlazione tra Yi e il suo valore previsto è quasi 1Yi ha forte influenza sulla stima del suo valore previsto. Se il valore è piccolo vuol dire che ci sono tante oss che contribuiscono alla stima del valore previsto. Un’oss con alto leverage fa spostare di tanto la retta stimata. →Le unità per cui Hi>2*(p+1)/n sono potenzialmente osservazioni influenti [dove p è il numero di regressori e n il numero di osservazioni] N.B. Tende a segnalare troppe oss influenti e tratta tutti i regressori nello stesso modo! Statistiche di influenza Plot delle statistiche di influenza attenzione alle osservazioni nel quadrante in alto a destra D INFLUENTI - D INFLUENTI – SIA D CHE LEVERAGE H INFLUENTI - LEVERAGE H lev H Statistiche di influenza Sintassi La PROC REG fornisce nell’output i valori della distanza di Cook e del levarage H per ogni osservazione del dataset: proc reg data=dataset; model variabile_dipendente= regressore_1 ... regressore_p / influence r; output out=dataset_output cookd=cook H=leverage; run; OPTIONS: • Influence e r forniscono una serie di indicatori di influenza tra cui D e H • Cookd= crea nel dataset di output una variabile con i valori della Distanza di Cook per ogni osservazione • H= crea nel dataset di output una variabile con i valori del Leverage per ogni osservazione Esempio • Il data set AZIENDE contiene informazioni relative ai comportamenti di 500 clienti del segmento Aziende di una banca. • L’obiettivo è stimare il margine totale del cliente Esempio 1. Modello di regressione lineare usando come variabile dipendente il margine totale del cliente e come regressori le 66 variabili contenute nel data set 2. Procedura di selezione automatica delle variabili (stepwise) 3. Valutazione della bontà del modello 4. Analisi di influenza 5. Eliminazione delle osservazioni influenti 6. Ristima del modello con procedura di selezione automatica delle variabili 7. Valutazione della bontà del modello Esempio Output regressione stepwise : Parameter Estimates Variable Label Parameter Standard Estimate Error t Value Pr > |t| Standardized Estimate 1 -149.2749 84.6517 -1.76 PROFT_T1 Reddività totale al T1 1 1.70328 0.02438 69.85 <.0001 0.88285 _cs_np12 Possesso Risparmio Gestito N. Prodotti Conto Corrente Raccolta diretta al T1 1 803.64053 184.38473 4.36 <.0001 0.03096 1 171.16171 60.96896 2.81 0.0052 0.02176 1 -0.0038 0.00083562 Numero Medio Bonifici Entrata+Uscita Scost. Ass N. Prod. Cross Selling C.Correnti - Numero movimenti C.Correnti - Saldo Contabile Medio Avere C.Correnti - Saldo Contabile Medio Dare Estero: Anticipi in Euro Import Portafoglio: Valore Effetti non scaduti Portafoglio: Valore Effetti scaduti 1 -6.18124 2.11413 1 -165.10376 22.12247 -7.46 <.0001 -0.05213 1 7.75747 1.59384 4.87 <.0001 0.07754 1 0.00837 0.00137 6.11 <.0001 0.10111 1 0.00617 0.00101 6.13 <.0001 0.07593 1 0.02729 0.00969 2.82 0.0051 0.02084 1 -0.00645 0.00145 1 0.01127 0.00305 Intercept cs_np01 racc_dir_t1 sbon1 scanumt2 sccnmov1 sccvsma1 sccvsmd1 sesinae1 spovnsc1 spovsca1 Intercept DF 0.0785 0 -4.55 <.0001 -0.07592 -2.92 -0.04454 0.0036 -4.44 <.0001 3.69 0.0002 proc reg data=corso.aziende; model tot_margine= lista 66 regressori /stb selection= stepwise slentry=0.01 slstay=0.01; run; -0.04738 0.04086 Esempio Output analisi influenza : Distanza di Cook>1 e Leverage >0.052 =2*(12+1)/500 proc reg data=corso.aziende; model tot_margine= lista 12 regressori /stb influence ; output out=aziende_out cookd=cook H=leverage; run; → oss influente Esempio Come si individuano e eliminano le osservazioni influenti (quelle con Distanza di Cook>1 e Leverage >0.052)? 1. Si esporta il data set aziende_out in excel, 2. si verifica la presenza di osservazioni influenti (vedi aziende_out.xls), 3. se ce ne sono si fa una copia del file chiamandolo aziende_new.xls dove si eliminano le osservazioni influenti 4. si importa il nuovo data set in SAS. Esempio In alternativa in SAS: /*Creazione dei flag per individuare le osservazioni con valori di distanza di cook o valori di leverage sopra soglia: */ data aziende_out; set aziende_out; if cook>1 then flag_cook=1; else flag_cook=0; if leverage>2*(12+1)/500 then flag_leverage=1; else flag_leverage=0; run; /*Quante sono le osservazioni influenti? con distanza di cook>1 e leverage >0.052: */ proc freq data=aziende_out; tables flag_cook*flag_leverage; run; /*Esclusione delle osservazioni influenti*/ data corso.aziende_new; set aziende_out; if flag_cook=1 and flag_leverage=1 then delete; run; Esportazione Esportazione guidata di un file SAS in un file excel Esempio Output ristima coefficienti di regressione al netto della osservazione influente : Parameter Estimates Variable Label Intercept PROFT_T1 _cs_np12 Intercept Reddività totale al T1 Possesso Risparmio Gestito Raccolta diretta al T1 Scost. Ass N. Prod. Cross Selling C.Correnti - Numero movimenti C.Correnti - Saldo Contabile Medio Avere C.Correnti - Saldo Contabile Medio Dare Estero: Anticipi in Euro Import Estero: Operatività Totale racc_dir_t1 scanumt2 sccnmov1 sccvsma1 sccvsmd1 sesinae1 sesoptot1 DF Parameter Estimate 13.02789 1 1.72412 1 811.93397 1 Standard t Value Pr > |t| Standardized Error Estimate 53.52084 0.24 0.8078 0 0.02464 69.98 <.0001 0.89474 184.46258 4.4 <.0001 0.03174 1 1 -0.00282 -158.54071 0.00067655 21.75354 -4.17 <.0001 -7.29 <.0001 -0.05604 -0.0508 1 7.30311 1.21192 6.03 <.0001 0.05551 1 0.00729 0.00121 6.04 <.0001 0.08317 1 0.00457 0.00081505 5.61 <.0001 0.05708 1 0.04441 0.01022 4.35 <.0001 0.03441 1 -0.00662 0.00206 -3.21 0.0014 -0.02624 proc reg data=aziende_new; model tot_margine= lista 66 regressori /stb selection= stepwise slentry=0.01 slstay=0.01; run; N.B.: aziende_new è lo stesso dataset iniziale SENZA l’osservazione influente E la multicollinearità? La valutazione della bontà del modello ha dato un esito più che positivo Sono state eliminate le osservazioni influenti che producevano variazioni rilevanti nelle stime dei minimi quadrati. ATTENZIONE!! E’ necessario controllare anche la presenza di multicollinearità che porta a stime instabili con standard error elevato. E la multicollinearità? Parameter Estimates Variable Intercept PROFT_T1 _cs_np12 racc_dir_t1 scanumt2 sccnmov1 sccvsma1 sccvsmd1 sesinae1 sesoptot1 Label DF Parameter Standard t Value Pr > |t| Standardiz Variance ed Estimate Error Estimate Inflation Intercept 13.02789 53.52084 0.24 0.8078 0 0 1 Reddività totale al T1 1.72412 0.02464 69.98 <.0001 0.89474 3.46725 1 Possesso Risparmio Gestito 811.93397 184.46258 4.4 <.0001 0.03174 1.10266 1 Raccolta diretta al T1 -0.00282 0.00067655 -4.17 <.0001 -0.05604 3.83293 1 Scost. Ass N. Prod. Cross Selling 1 -158.54071 21.75354 -7.29 <.0001 -0.0508 1.03037 C.Correnti - Numero movimenti C.Correnti - Saldo Contabile Medio Avere C.Correnti - Saldo Contabile Medio Dare Estero: Anticipi in Euro Import Estero: Operatività Totale 1 1 7.30311 0.00729 1.21192 0.00121 6.03 <.0001 6.04 <.0001 0.05551 0.08317 1.79962 4.01959 1 0.00457 0.00081505 5.61 <.0001 0.05708 2.1947 4.35 <.0001 -3.21 0.0014 0.03441 -0.02624 1.32917 1.41794 1 1 0.04441 -0.00662 proc reg data=aziende_new; model tot_margine= lista 9 regressori /stb vif ; run; 0.01022 0.00206