Regressione lineare Metodi Quantitativi per Economia, Finanza e Management Esercitazione n° 8 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; 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 → oss influente proc reg data=corso.aziende; model tot_margine= lista 12 regressori /stb influence ; output out=corso.aziende_out cookd=cook H=leverage; run; 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. 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 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 /VIF; run; 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. 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à Modello di regressione lineare : step di analisi • Stimare un modello di regressione lineare utilizzando la procedura automatica di selezione delle variabili (stepwise) • Controllare la bontà del modello (R-square, Test F) • Controllare la significatività dei singoli coefficienti (Test t) • Analisi di influenza, eventualmente ristimare il modello senza le osservazioni influenti e controllarne la bontà • Verificare la presenza di multicollinearità (se i regressori del modello sono i fattori di un’analisi fattoriale, risultano non correlati per costruzione tutti i VIFj =1) • Impatto dei regressori nella spiegazione del fenomeno (ordinarli usando il valore assoluto dei coefficienti standardizzati e controllare il segno dei coefficienti) • Interpretazione del coefficienti standardizzati Esercizio Il dataset ct_telefonia.sas7bdat contiene i dati di 382 clienti di una compagnia telefonica e 23 variabili quantitative # Variable Descrizione 1 Ammontare delle ricariche bonus 2 .AMMONT_RICARICA_PAG 3 AMMONT_RICARICA_PAG_LOTTO Ammontare delle ricariche effettuate tramite circuito lotto sisal 4 AMMONT_RICARICA_RICORRENTE Ammontare delle ricariche ricorrenti 5 ANZIANITA_SIM Anzianità della Sim espressa in mesi 6 BYTE_TOT Byte utilizzati negli ultimi 6 mesi 7 CONTATTI_INBOUND Numero di volte in cui il call center della compagnia ha contattato il cliente negli ultimi 6 mesi 8 CONTATTI_OUTBOUND Numero di volte in cui il cliente ha contattato il call center della compagnia negli ultimi 6 mesi 9 MINUTI_VOCE_FREE Minuti voce free effettuati dal cliente negli ultimi 6 mesi AMMONT_RICARICA_BONUS Ammontare delle ricariche pagate dal cliente 10 MINUTI_VOCE_ITZ Minuti voce verso direttrici internazionali effettuati dal cliente negli ultimi 6 mesi 11 MINUTI_VOCE_OFFNET 12 MINUTI_VOCE_ONNET Minuti voce offnet (non verso SIM appartenenti alla compagnia) effettuati dal cliente negli ultimi 6 mesi Minuti voce onnet (verso SIM appartenenti alla compagnia) effettuati dal cliente negli ultimi 6 mesi 13 MINUTI_VOCE_RF Minuti voce effettuati dal cliente verso rete fissa negli ultimi 6 mesi 14 NUMERO_RICARCIHE_BONUS Numero di ricariche bonus ricevute negli ultimi 6 mesi 15 NUMERO_RICARICHE_RICORRENTI Numero di ricariche ricorrenti effettuate negli ultimi 6 mesi 16 OPZ_ATTIVE Numero di opzioni attive 17 RECENZA_CAMBIO_PIANO Mesi trascorsi dall'ultimo cambio piano 18 REC_CONT_INBOUND Mesi trascorsi dall'ultima volta in cui il call center ha contattato il cliente 19 REC_CONT_OUTBOUND Mesi trascorsi dall'ultima volta in cui il cliente ha contattato il call center 20 SIM_ATTIVE Numero di SIM attive associate allo stesso cliente 21 SMS_FREE Numero di SMS gratuiti inviati dal cliente 22 arpu 23 eta_customer Valore Arpu: ricavi medi ottenuti mensilmente per ciascun utente Eta del cliente Esercizio 1. Allocare una libreria che punti alla cartella in cui si è salvato il dataset. 2. Stimare un modello di regressione lineare utilizzando come variabile dipendente il valore dell’Arpu e come potenziali regressori tutte le altre variabili presenti nel dataset. Utilizzare l’opzione di stepwise (ed i relativi livelli di significatività), calcolare i coefficienti standardizzati. a. Il valore dell’R-quadro è soddisfacente? b. Cosa possiamo affermare osservando i dati relativi al test F e ai test t? c. Quale regressore influenza maggiormente la variabile dipendente. d. Se la variabile MINUTI_VOCE_OFFNET aumenta di un’unità cosa succede alla variabile dipendente? E se diminuisce? Esercizio 3. Sono presenti osservazioni influenti? 4. Esiste un problema di multicollinearità? In base ai livelli di significatività che scegliete (0.01, 0.05 oppure 0.1) i risultati cambiano. Esercizio Regressori da utilizzare: BYTE_TOT CONTATTI_INBOUND CONTATTI_OUTBOUND REC_CONT_INBOUND REC_CONT_OUTBOUND ANZIANITA_SIM SIM_ATTIVE OPZ_ATTIVE MINUTI_VOCE_FREE MINUTI_VOCE_ITZ MINUTI_VOCE_OFFNET MINUTI_VOCE_ONNET MINUTI_VOCE_RF SMS_FREE RECENZA_CAMBIO_PIANO AMMONT_RICARICA_BONUS AMMONT_RICARICA_PAG AMMONT_RICARICA_PAG_LOTTO AMMONT_RICARICA_RICORRENTE NUMERO_RICARICHE_BONUS NUMERO_RICARICHE_RICORRENTI ETA_CUSTOMER