Calcolo delle Probabilita'e Statistica Matematica 2 A.A. 2010/11 … · 2011. 6. 7. ·...

92
Calcolo delle Probabilita'e Statistica Matematica 2 A.A. 2010/11 LABORATORIO DI SAS – A. MICHELETTI LETTURA DATI E STATISTICA DESCRITTIVA LETTURA DATI Dati scritti nel corpo del programma: ESEMPIO1.SAS data class; input nome$ alt peso age; cards; Alfredo 168 70.0 14 Alice 156 58.0 13 Barbara 165 55.5 13 Carla 162 54.5 14 Enrico 163 70.0 14 Giorgio 170 62.5 13 Carlo 168 60.5 12 Luisa 158 52.0 12 Franco 164 60.0 14 Sandra 155 48.0 13 ; proc print data=class; run; SAS System 13:13 Tuesday, October 12, 2010 1 Oss nome alt peso age 1 Alfredo 168 70.0 14 2 Alice 156 58.0 13 3 Barbara 165 55.5 13 4 Carla 162 54.5 14 5 Enrico 163 70.0 14 6 Giorgio 170 62.5 13 7 Carlo 168 60.5 12 8 Luisa 158 52.0 12 9 Franco 164 60.0 14 10 Sandra 155 48.0 13 Dati scritti in un file testo separato IMPDATITESTO.SAS data class2; filename dati 'E:\didattica\aa10-11\SAS\file_lezione1\studenti.txt'; infile dati; input nome$ alt peso age; cards; Dati da prelevare solo da alcune colonne di un file di testo

Transcript of Calcolo delle Probabilita'e Statistica Matematica 2 A.A. 2010/11 … · 2011. 6. 7. ·...

  • Calcolo delle Probabilita'e Statistica Matematica 2 A.A. 2010/11

    LABORATORIO DI SAS – A. MICHELETTI

    LETTURA DATI E STATISTICA DESCRITTIVA

    LETTURA DATI

    Dati scritti nel corpo del programma: ESEMPIO1.SAS data class; input nome$ alt peso age; cards;

    Alfredo 168 70.0 14 Alice 156 58.0 13 Barbara 165 55.5 13 Carla 162 54.5 14 Enrico 163 70.0 14 Giorgio 170 62.5 13 Carlo 168 60.5 12 Luisa 158 52.0 12 Franco 164 60.0 14 Sandra 155 48.0 13 ;

    proc print data=class; run; SAS System 13:13 Tuesday, October 12, 2010 1 Oss nome alt peso age 1 Alfredo 168 70.0 14 2 Alice 156 58.0 13 3 Barbara 165 55.5 13 4 Carla 162 54.5 14 5 Enrico 163 70.0 14 6 Giorgio 170 62.5 13 7 Carlo 168 60.5 12 8 Luisa 158 52.0 12 9 Franco 164 60.0 14 10 Sandra 155 48.0 13

    Dati scritti in un file testo separato IMPDATITESTO.SAS data class2; filename dati 'E:\didattica\aa10-11\SAS\file_lezione1\studenti.txt'; infile dati; input nome$ alt peso age; cards; Dati da prelevare solo da alcune colonne di un file di testo

  • data lavoro1; filename dati 'E:\didattica\aa10-11\SAS\dati\Laur92fs.txt'; infile dati; input tipolaurea 1-1 regione 2-3 mesi 41-42; cards; Dati scritti in un file di formato database (Excel, Access, etc.). Questo file si produce anche usando la modalita’ interattiva di caricamento dei dati. IMPORTDATI.SAS PROC IMPORT OUT= Tmp1.studenti DATAFILE= "C:\user\statmat1\studenti1.xls" DBMS=EXCEL2000 REPLACE; GETNAMES=YES; RUN;

    PROCEDURA MEANS: INDICI STATISTICI DESCRITTIVI Useremo spesso come dataset di riferimento i file del tipo telefonate_gen2008 In esso sono riportati i dati relativi alle telefonate ricevute dal centralino del servizio 118 di Milano nel 2008, in questo caso nel mese di gennaio. Ne useremo altri relativi ad altri mesi dell’anno. In tutti, le variabili riportate sono: DT_INLINE= data e ora di arrivo della telefonata. Se non ci sono operatori liberi, la chiamata viene messa in attesa DT_INCALL=data e ora in cui risponde un operatore. I dati persi si riferiscono a telefonate in cui il chiamante ha riappeso prima che un operatore rispondesse DT_ENDCALL=data e ora di fine telefonata, identificata con l’istante in cui il chiamante riappende. GIORNO (del mese), MESE, Weekday (giorno della settimana),ORA, Minuti, Secondi di inizio chiamata: estratti da DT_INLINE ImpegnoOper = tempo passato al telefono con un operatore = DT_ENDCALL-DT_INCALL; espresso in secondi Dur_Telef= durata della telefonata = DT_ENDCALL – DT_INLINE; espresso in secondi DS_COMUNE= comune in cui e’ avvenuto l’infortunio per cui e’ richiesto l’intervento del 118 ID_CODICE=codice di urgenza dell’infortunio: R=rosso, G=giallo, V=verde, B=bianco, X=codice errato DS_MOTIVO=motivo dell’infortunio DS_DET_MOTIVO=motivo specifico dell’infortunio MEANS.SAS data Tmp1.telefonate_gen08; proc means; var impegnoOper Dur_Telef; run; SAS 18:55 Thursday, October 14, 2010 La procedura MEANS Variabile Etichetta N Media Dev std Minimo Massimo ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ImpegnoOper ImpegnoOper 54611 60.2167512 54.4911097 0 1997.00

  • Dur_Telef Dur_Telef 65534 68.1801202 59.8549488 0 2000.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ

    MEANS2.SAS proc means data=mylib.telefonate_gen2008 n max min range mean std median kurtosis skewness maxdec=2;; var impegnoOper Dur_Telef; run; quit; SAS 10:22 Friday, October 15, 2010 1 La procedura MEANS Variabile Etichetta N Media Dev std Minimo Massimo ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ImpegnoOper ImpegnoOper 48916 60.7105446 54.8978866 0 1997.00 Dur_Telef Dur_Telef 58770 68.6420112 60.2828170 0 2000.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ SAS 10:22 Friday, October 15, 2010 2 La procedura MEANS Variabile Etichetta N Massimo Minimo Range Media Dev std ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ImpegnoOper ImpegnoOper 48916 1997.00 0.00 1997.00 60.71 54.90 Dur_Telef Dur_Telef 58770 2000.00 0.00 2000.00 68.64 60.28 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Variabile Etichetta Mediana Curtosi Skewness ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ImpegnoOper ImpegnoOper 51.00 60.26 4.15 Dur_Telef Dur_Telef 59.00 35.84 2.98 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ MEANS3.SAS proc means data=mylib.telefonate_gen2008 n max min range mean std median kurtosis skewness maxdec=2;; var impegnoOper Dur_Telef; class ID_codice; run; quit; SAS 10:22 Friday, October 15, 2010 3 La procedura MEANS N. ID_CODICE oss Variabile Etichetta N Massimo Minimo Range ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ B 11638 ImpegnoOper ImpegnoOper 11638 1326.00 1.00 1325.00 Dur_Telef Dur_Telef 11638 1353.00 5.00 1348.00 G 10462 ImpegnoOper ImpegnoOper 10462 699.00 1.00 698.00

  • Dur_Telef Dur_Telef 10462 709.00 5.00 704.00 R 1734 ImpegnoOper ImpegnoOper 1734 401.00 0.00 401.00 Dur_Telef Dur_Telef 1734 450.00 5.00 445.00 V 9067 ImpegnoOper ImpegnoOper 9067 620.00 1.00 619.00 Dur_Telef Dur_Telef 9067 646.00 8.00 638.00 X 8507 ImpegnoOper ImpegnoOper 8507 1997.00 0.00 1997.00 Dur_Telef Dur_Telef 8507 2000.00 2.00 1998.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ N. ID_CODICE oss Variabile Etichetta Media Dev std Mediana Curtosi ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ B 11638 ImpegnoOper ImpegnoOper 68.26 67.50 50.00 35.85 Dur_Telef Dur_Telef 88.73 70.94 72.00 29.38 G 10462 ImpegnoOper ImpegnoOper 66.60 37.78 59.00 19.82 Dur_Telef Dur_Telef 86.52 42.76 79.00 12.48 R 1734 ImpegnoOper ImpegnoOper 78.87 39.83 70.00 7.96 Dur_Telef Dur_Telef 98.29 44.29 90.00 6.13 V 9067 ImpegnoOper ImpegnoOper 81.84 46.43 71.00 13.35 Dur_Telef Dur_Telef 103.07 51.11 93.00 9.69 X 8507 ImpegnoOper ImpegnoOper 27.28 48.91 11.00 327.26 Dur_Telef Dur_Telef 42.49 53.18 26.00 229.73 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ N. ID_CODICE oss Variabile Etichetta Skewness ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ B 11638 ImpegnoOper ImpegnoOper 4.08 Dur_Telef Dur_Telef 3.56 G 10462 ImpegnoOper ImpegnoOper 2.69 Dur_Telef Dur_Telef 2.01 R 1734 ImpegnoOper ImpegnoOper 1.91 Dur_Telef Dur_Telef 1.57 V 9067 ImpegnoOper ImpegnoOper 2.55 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ SAS 10:22 Friday, October 15, 2010 4 La procedura MEANS N. ID_CODICE oss Variabile Etichetta Skewness ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ V 9067 Dur_Telef Dur_Telef 2.08 X 8507 ImpegnoOper ImpegnoOper 10.82 Dur_Telef Dur_Telef 8.59 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ

  • PROCEDURA FREQ: CALCOLO FREQUENZE E ISTOGRAMMI (senza grafici)

    Studiamo dapprima la distribuzione di una variabile discreta:

    FREQ1.sas

    /* analizzo la distribuzione delle ore del giorno: ci sono orari con chiamate piu' frequenti?*/ proc freq data=mylib.telefonate_gen2008 ; TABLES ora /out=work.contotel; /*salvo l'output nel dataset work.contotel*/ run; SAS 10:22 Friday, October 15, 2010 23 La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 1819 3.10 1819 3.10 1 1671 2.84 3490 5.94 2 1454 2.47 4944 8.41 3 1294 2.20 6238 10.61 4 1122 1.91 7360 12.52 5 1145 1.95 8505 14.47 6 1292 2.20 9797 16.67 7 1685 2.87 11482 19.54 8 2169 3.69 13651 23.23 9 2949 5.02 16600 28.25 10 3344 5.69 19944 33.94 11 3279 5.58 23223 39.52 12 3113 5.30 26336 44.81 13 3080 5.24 29416 50.05 14 3083 5.25 32499 55.30 15 2980 5.07 35479 60.37 16 3009 5.12 38488 65.49 17 3062 5.21 41550 70.70 18 3266 5.56 44816 76.26 19 3231 5.50 48047 81.75 20 3321 5.65 51368 87.41 21 2951 5.02 54319 92.43 22 2347 3.99 56666 96.42 23 2104 3.58 58770 100.00 Analizziamo ora una variabile continua: prima di applicare la procedura freq dovremo “discretizzarla” attraverso la procedura format: FREQ2.sas /* analizzo la distribuzione dell' impegno operatore. Le durate sono in secondi*/ proc format; /* definisce range di valori: serve per raggruppare i dati, associando un'etichetta a ogni gruppo*/

    value durata low-30='A meno di mezzo minuto' /*nell'output elenca le etichette in ordine lessicografico */

  • 30-60='B mezzo-un minuto' 60-120='C uno-due minuti' 120-300='D due-cinque minuti' 300-high='E più di 5 minuti'; run; proc freq data=mylib.telefonate_gen2008 order=formatted; TABLES ImpegnoOper; format ImpegnoOper durata.; run; quit; SAS La procedura FREQ ImpegnoOper Frequenza Percentuale ImpegnoOper Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ A meno di mezzo minuto 14233 29.10 14233 29.10 B mezzo-un minuto 14620 29.89 28853 58.98 C uno-due minuti 15186 31.05 44039 90.03 D due-cinque minuti 4616 9.44 48655 99.47 E più di 5 minuti 261 0.53 48916 100.00 Frequenza mancanti = 9854 Vediamo ora come si possono effettuare analisi separate per classi diverse, dove le classi sono i valori assunti da una variabile discreta. In tal caso si usa prima la procedura sort per ordinare i dati secondo valori crescenti di tale variabile discreta, e poi si usa lo statement “by” all’interno della procedura freq. FREQ3.SAS /* analizzo la distribuzione delle ore del giorno divise per codici ci sono orari con codici piu' frequenti?*/ /*prima devo ordinare i dati per valori crescenti della variabile ID_CODICE*/ proc sort data=tmp1.telefonate_gen2008 out=work.ordinati; by ID_CODICE; run; proc freq data=work.ordinati; TABLES ora /out=work.contocodice; /*salvo l'output nel dataset work.contocodice*/ by ID_CODICE; run; quit; OUTPUT: SAS 17:33 Monday, April 4, 2011 1 ----------------------------------------- ID_CODICE= ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale

  • ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 457 2.63 457 2.63 1 398 2.29 855 4.92 2 356 2.05 1211 6.98 3 334 1.92 1545 8.90 4 274 1.58 1819 10.48 5 294 1.69 2113 12.17 6 339 1.95 2452 14.12 7 403 2.32 2855 16.44 8 512 2.95 3367 19.39 9 754 4.34 4121 23.74 10 958 5.52 5079 29.25 11 1063 6.12 6142 35.38 12 1064 6.13 7206 41.50 13 988 5.69 8194 47.20 14 1024 5.90 9218 53.09 15 924 5.32 10142 58.41 16 969 5.58 11111 64.00 17 978 5.63 12089 69.63 18 1159 6.68 13248 76.30 19 1084 6.24 14332 82.55 20 1105 6.36 15437 88.91 21 830 4.78 16267 93.69 22 570 3.28 16837 96.98 23 525 3.02 17362 100.00 SAS 17:33 Monday, April 4, 2011 2 ----------------------------------------- ID_CODICE=B ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 450 3.87 450 3.87 1 387 3.33 837 7.19 2 338 2.90 1175 10.10 3 301 2.59 1476 12.68 4 251 2.16 1727 14.84 5 263 2.26 1990 17.10 6 244 2.10 2234 19.20 7 306 2.63 2540 21.83 8 404 3.47 2944 25.30 9 522 4.49 3466 29.78 10 633 5.44 4099 35.22 11 555 4.77 4654 39.99 12 542 4.66 5196 44.65 13 508 4.37 5704 49.01 14 525 4.51 6229 53.52 15 471 4.05 6700 57.57 16 499 4.29 7199 61.86 17 519 4.46 7718 66.32 18 548 4.71 8266 71.03 19 662 5.69 8928 76.71 20 816 7.01 9744 83.73 21 742 6.38 10486 90.10 22 631 5.42 11117 95.52 23 521 4.48 11638 100.00

  • SAS 17:33 Monday, April 4, 2011 3 ----------------------------------------- ID_CODICE=G ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 310 2.96 310 2.96 1 299 2.86 609 5.82 2 290 2.77 899 8.59 3 224 2.14 1123 10.73 4 204 1.95 1327 12.68 5 194 1.85 1521 14.54 6 252 2.41 1773 16.95 7 341 3.26 2114 20.21 8 513 4.90 2627 25.11 9 646 6.17 3273 31.28 10 645 6.17 3918 37.45 11 631 6.03 4549 43.48 12 603 5.76 5152 49.24 13 556 5.31 5708 54.56 14 514 4.91 6222 59.47 15 499 4.77 6721 64.24 16 486 4.65 7207 68.89 17 506 4.84 7713 73.72 18 552 5.28 8265 79.00 19 499 4.77 8764 83.77 20 498 4.76 9262 88.53 21 452 4.32 9714 92.85 22 384 3.67 10098 96.52 23 364 3.48 10462 100.00 SAS 17:33 Monday, April 4, 2011 4 ----------------------------------------- ID_CODICE=R ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 70 4.04 70 4.04 1 64 3.69 134 7.73 2 35 2.02 169 9.75 3 36 2.08 205 11.82 4 36 2.08 241 13.90 5 36 2.08 277 15.97 6 50 2.88 327 18.86 7 53 3.06 380 21.91 8 99 5.71 479 27.62 9 109 6.29 588 33.91 10 118 6.81 706 40.72 11 86 4.96 792 45.67 12 94 5.42 886 51.10 13 80 4.61 966 55.71

  • 14 79 4.56 1045 60.27 15 85 4.90 1130 65.17 16 73 4.21 1203 69.38 17 71 4.09 1274 73.47 18 83 4.79 1357 78.26 19 103 5.94 1460 84.20 20 74 4.27 1534 88.47 21 71 4.09 1605 92.56 22 71 4.09 1676 96.66 23 58 3.34 1734 100.00 SAS 17:33 Monday, April 4, 2011 5 ----------------------------------------- ID_CODICE=V ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 237 2.61 237 2.61 1 268 2.96 505 5.57 2 201 2.22 706 7.79 3 204 2.25 910 10.04 4 188 2.07 1098 12.11 5 167 1.84 1265 13.95 6 197 2.17 1462 16.12 7 316 3.49 1778 19.61 8 397 4.38 2175 23.99 9 589 6.50 2764 30.48 10 594 6.55 3358 37.04 11 541 5.97 3899 43.00 12 460 5.07 4359 48.08 13 512 5.65 4871 53.72 14 493 5.44 5364 59.16 15 482 5.32 5846 64.48 16 457 5.04 6303 69.52 17 448 4.94 6751 74.46 18 400 4.41 7151 78.87 19 427 4.71 7578 83.58 20 407 4.49 7985 88.07 21 436 4.81 8421 92.88 22 343 3.78 8764 96.66 23 303 3.34 9067 100.00 SAS 17:33 Monday, April 4, 2011 6 ----------------------------------------- ID_CODICE=X ------------------------------------------ La procedura FREQ ORA Frequenza Percentuale ORA Frequenza Percentuale cumulativa cumulativa ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 0 295 3.47 295 3.47 1 255 3.00 550 6.47 2 234 2.75 784 9.22 3 195 2.29 979 11.51

  • 4 169 1.99 1148 13.49 5 191 2.25 1339 15.74 6 210 2.47 1549 18.21 7 266 3.13 1815 21.34 8 244 2.87 2059 24.20 9 329 3.87 2388 28.07 10 396 4.65 2784 32.73 11 403 4.74 3187 37.46 12 350 4.11 3537 41.58 13 436 5.13 3973 46.70 14 448 5.27 4421 51.97 15 519 6.10 4940 58.07 16 525 6.17 5465 64.24 17 540 6.35 6005 70.59 18 524 6.16 6529 76.75 19 456 5.36 6985 82.11 20 421 4.95 7406 87.06 21 420 4.94 7826 91.99 22 348 4.09 8174 96.09 23 333 3.91 8507 100.00 ESERCIZIO 1 Utilizzando le procedure di statistica descrittiva viste, dare una prima risposta alle seguenti domande:

    • Il processo di arrivo di telefonate al centralino del 118 (DT_INLINE) si può considerare un processo di Poisson a intensità costante?

    • Ciascuno dei sottoprocessi degli arrivi di telefonate divisi per codice di emergenza, si può considerare un processo di Poisson a intensità costante?

    • Ciascuno dei sottoprocessi degli arrivi di telefonate divisi per motivi (DS_MOTIVO), si può considerare un processo di Poisson a intensità costante?

  • MANIPOLAZIONE DI DATASETS

    Vediamo come si possono combinare più datasets fra loro CREO_DATASETS.sas data dati1; input anno var1 var2; cards; 2000 1 11 2001 2 22 2003 3 33 2004 4 44 ; data dati2; input anno var1 var2; cards; 2000 5 55 2001 6 66 2002 7 77 2003 8 88 ; /*unisco i due dataset mettendoli uno sopra l'altro */ /*ATTENZIONE: il numero di variabili e la loro collocazione nei due datasets deve essere uguale*/ data combined; set dati1 dati2; run; /* affianco i due datasets */ /*prima creo due nuove variabili con nomi diversi dalle precedenti, salvandole in un nuovo dataset*/ data dati22; set dati2; var3=var1; var4=var2; run; /*ora affianco dati1 e dati22 */ data combined2; merge dati22 dati1; run; /*ora li affianco ma considerando i valori diversi assunti da "anno"*/ data combined3; merge dati22 dati1; by anno; run; /*N.B.: poichè non ho eliminato var1 e var2 da dati22, mantiene il loro contenuto dove dati1 e' vuoto, ossia in corrispondenza dell'anno 2002. Rinominiamo var1 e var2 in dati2 e rieseguiamo: */ data dati222; set dati2 (rename=(var1=var3 var2=var4)); run; data combined33; merge dati1 dati222; by anno; run; /*se voglio aggiornare alcuni valori di un dataset con quelli contenuti in un altro: */

  • data dati3; input anno var1 var2; cards; 2000 8 88 2004 9 99 ; /*aggiorno dati1 con dati3 */ data updated; update dati1 dati3; by anno; run; /*creo un nuovo dataset contenente solo alcuni dati e con una nuova variabile*/ data new; set dati1; where var1 > 1; if anno < 2002 then var3=1; else var3=0; run;

  • Istogrammi e torte GRAPH1.SAS /*disegno un istogramma e una torta del numero di telefonate per ora */ proc gchart data=tmp1.telefonate_gen2008; vbar ORA / type=percent midpoints=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23); pie ORA / fill=solid type=percent other=5 midpoints=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23); pie ORA /fill=solid type=percent other=5 slice=arrow midpoints=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23); run; quit;

    PERCENTUALE

    0

    1

    2

    3

    4

    5

    6

    ORA

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

    PERCENTUALE di ORA

    95.02%

    105.69%

    115.58%

    125.30%

    135.24%

    145.25%15

    5.07%

    165.12%17

    5.21%

    185.56%

    195.50%

    205.65%

    215.02%

    ALTRO30.80%

    PERCENTUALE di ORA

    95.02%

    105.69%

    115.58%

    125.30%135.24%

    145.25%155.07%

    165.12%

    175.21%

    185.56%

    195.50%

    205.65%

    215.02%

    ALTRO30.80%

    Gli stessi grafici si possono produrre anche usando l’ opzione DISCRETE, che consente di disegnare una barra o una fetta per ogni valore della variabile considerata: GRAPH1_bis.sas

  • proc gchart data=tmp1.telefonate_gen2008; vbar ORA / discrete type=percent; pie ORA / discrete fill=solid type=percent other=5; pie ORA /discrete fill=solid type=percent other=5 slice=arrow; run; quit;

    Vediamo ora come usare titoli e come dividere i grafici in sottogruppi: GRAPH2.SAS data tmp1.telefonate_gen2008_2; /*creo nuovo dataset*/ set tmp1.telefonate_gen2008; /*copio il vecchio al suo interno ma filtrando i dati*/ where (ID_CODICE eq 'V' or ID_CODICE eq 'G' or ID_CODICE eq 'R') and DS_Comune ne '#VEDINOTE'; /*copio solo i records con codice significativo e destinazione nota*/ if DS_Comune = 'MILANO' then zona = 'MILANO '; /*creo una nuova variabile: zona*/ else zona = 'PROVINCIA'; goptions device=win; title1 'LOCALIZZAZIONE INFORTUNI GENNAIO'; pattern v=s c=pink; proc gchart data=tmp1.telefonate_gen2008_2; vbar zona / type=percent; /*disegno istogramma di zona*/ run; title2 'istogrammi per codice'; proc gchart data=tmp1.telefonate_gen2008_2; hbar zona / type=percent group=ID_codice autoref g100; /*disegno un istogramma diverso per ogni codice*/ run;

    LOCALIZZAZIONE INFORTUNI GENNAIOPERCENTUALE

    0

    10

    20

    30

    40

    50

    60

    zona

    MILANO PROVINCIA

  • LOCALIZZAZIONE INFORTUNI GENNAIOistogrammi per codice

    FREQ.CUM.

    FREQ. PCT.CUM.PCT.

    6057 6057 57.90 57.90

    4405 10462 42.10 100.00

    902 902 52.02 52.02

    832 1734 47.98 100.00

    5427 5427 59.85 59.85

    3640 9067 40.15 100.00

    zonaID_CODICE

    V

    R

    G

    PROVINCIA

    MILANO

    PROVINCIA

    MILANO

    PROVINCIA

    MILANO

    PERCENTUALE

    0 10 20 30 40 50 60

    Generiamo ora grafici separate per i 3 tipi di codice GRAPH3.SAS /* per dividere i grafici in piu' finestre si usa "by" ma bisogna prima ordinare i dati rispetto alla variabile usata nello statement by */ proc sort data=tmp1.telefonate_gen2008_2 out=tmp1.telefonate_gen2008_sorted; by ID_codice; run; goptions device=win; title1 color=blue "Infortuni gennaio"; title2; /*cancella tutti i titoli dal secondo in poi. Se non lo faccio restano attivi per tutta la sessione*/ pattern c=blue; proc gchart data=tmp1.telefonate_gen2008_sorted; vbar zona / type=percent ; by ID_codice; /*disegno un istogramma diverso per ogni codice*/ run; /*ora affianco gli esiti di codici diversi nello stesso */ proc gchart data=tmp1.telefonate_gen2008_2; hbar zona / type=percent subgroup=ID_codice; run; quit;

  • Infortuni gennaioID_CODICE=G

    PERCENTUALE

    0

    10

    20

    30

    40

    50

    60

    zona

    MILANO PROVINCIA

    Infortuni gennaioID_CODICE=R

    PERCENTUALE

    0

    10

    20

    30

    40

    50

    60

    zona

    ID_CODICER

    MILANO PROVINCIA

    Infortuni gennaioID_CODICE=V

    PERCENTUALE

    0

    10

    20

    30

    40

    50

    60

    zona

    ID_CODICEV

    MILANO PROVINCIA

    Infortuni gennaio

    ID_CODICE G R V

    FREQ.CUM.

    FREQ. PCT.CUM.PCT.

    12386 12386 58.25 58.25

    8877 21263 41.75 100.00

    zona

    PROVINCIA

    MILANO

    PERCENTUALE

    0 10 20 30 40 50 60

    GRAPH4.SAS /*disegno un istogramma e una torta dell'impegno operatore */ title1 color=black "Impegno operatore"; pattern c=cyan; proc gchart data=tmp1.telefonate_gen2008; vbar ImpegnoOper / type=percent MIDPOINTS= (30 60 90 120 150 180 210 240 270 300 330); pie ImpegnoOper/ coutline=black woutline=2 percent=inside slice=outside other=5 MIDPOINTS= (60 120 180 240 300); run; quit;

  • Impegno operatorePERCENTUALE

    0

    10

    20

    30

    40

    50

    ImpegnoOper

    30 60 90 120 150 180 210 240 270 300 330

    Impegno operatoreFREQUENZA di ImpegnoOper

    6039280

    80.30%

    1207044

    14.40%

    ALTRO2592

    5.30%

    ESERCIZIO 2 Si considerino i dati sulle telefonate al servizio 118 di Milano. Attraverso procedure numeriche e grafiche di analisi descrittiva si dia una prima risposta alle seguenti domande:

    1. Nelle telefonate del mese di gennaio ci sono differenze significative fra i vari codici di emergenza nella durata dei “tempi morti”, ossia la differenza: durata telefonata – impegno operatore?

    2. Si considerino le sole telefonate relative ad INCIDENTI STRADALI. a. La distribuzione della tipologia specifica di incidente (auto-auto, auto-moto, etc.) .) di gennaio e di

    maggio è diversa? b. La distribuzione della tipologia specifica di incidente è diversa fra i vari giorni della settimana?

    3. Si considerino le sole telefonate relative ad eventi di tipo MEDICO ACUTO. a. La distribuzione della tipologia specifica di infortunio (cardiocircolatoria, respiratoria, etc.) di gennaio e

    di maggio è diversa? b. La distribuzione della tipologia specifica di infortunio è diversa fra i vari giorni della settimana?

  • PROCEDURA UNIVARIATE: INDICI DESCRITTIVI E TEST SULLA MEDIA

    UNIVAR.SAS proc univariate data=tmp1.telefonate_gen2008_2; var Tmorto; histogram Tmorto/normal; qqplot Tmorto; run; La procedura UNIVARIATE Variabile: Tmorto Momenti N 48916 Somma dei pesi 48916 Media 19.3736201 Somma delle osservazioni 947680 Deviazione std 20.1530228 Varianza 406.144326 Skewness 1.65336041 Curtosi 2.74586304 SS non corretta 38226542 SS corretta 19866549.7 Coeff variaz 104.02301 Errore std media 0.09112021 Misure statistiche di base Posizione Variabilità Media 19.37362 Deviazione std 20.15302 Mediana 11.00000 Varianza 406.14433 Moda 3.00000 Range 172.00000 Range interquartile 23.00000 Test di posizione: Mu0=0 Test -Statistica- -----P-value------ T di Student t 212.6161 Pr > |t| = |M| = |S|

  • 17:13 Sunday, November 14, 2010 14 La procedura UNIVARIATE Variabile: Tmorto Osservazioni estreme ---Inferiori--- ---Superiori--- Valore Oss Valore Oss 0 30367 152 13618 0 10286 154 1294 1 56710 154 33509 1 54193 163 1298 1 52878 172 1295 Valori mancanti ---Percentuale di--- Valore Tutte Oss mancante Conteggio le oss mancanti . 9854 16.77 100.00 17:13 Sunday, November 14, 2010 15 La procedura UNIVARIATE Distribuzione normale adattata per Tmorto Parametri per la distribuzione Normale Parametro Simbolo Stima Media Mu 19.37362 Dev std Sigma 20.15302 Test della bontà di adattamento per la distribuzione Normale Test -------Statistica------- ---------P-value--------- Kolmogorov-Smirnov D 0.19311 Pr > D W-Qu A-Qu

  • 90.0 50.00000 45.20076 95.0 64.00000 52.52239 99.0 84.00000 66.25656

    distribuzione medico acuto gen-mag

    0 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 144 153 162 171

    0

    5

    10

    15

    20

    25

    30

    Per

    cent

    uale

    Tmorto

    -6 -4 -2 0 2 4 6

    0

    25

    50

    75

    100

    125

    150

    175

    Tmor

    to

    Quantili normali

    La distribuzione di Tmorto non e’ gaussiana. Verifichiamo la robustezza del test sulla media provando a testare l’ipotesi che la media sia uguale a 19, ossia circa il valore della media aritmetica dei dati. Inoltre sovrapponiamo all’istogramma un grafico di una gaussiana con media e varianza uguali a quelle campionarie: UNIVAR2.SAS proc univariate data=tmp1.telefonate_gen2008_2 Mu0=19; var Tmorto; histogram Tmorto/normal (mu=est sigma=est); run;

  • La procedura UNIVARIATE Variabile: Tmorto Momenti N 48916 Somma dei pesi 48916 Media 19.3736201 Somma delle osservazioni 947680 Deviazione std 20.1530228 Varianza 406.144326 Skewness 1.65336041 Curtosi 2.74586304 SS non corretta 38226542 SS corretta 19866549.7 Coeff variaz 104.02301 Errore std media 0.09112021 Misure statistiche di base Posizione Variabilità Media 19.37362 Deviazione std 20.15302 Mediana 11.00000 Varianza 406.14433 Moda 3.00000 Range 172.00000 Range interquartile 23.00000 Test di posizione: Mu0=19 Test -Statistica- -----P-value------ T di Student t 4.100299 Pr > |t| = |M| = |S|

  • 0 10286 154 1294 1 56710 154 33509 1 54193 163 1298 1 52878 172 1295 Valori mancanti ---Percentuale di--- Valore Tutte Oss mancante Conteggio le oss mancanti . 9854 16.77 100.00 17:13 Sunday, November 14, 2010 21 La procedura UNIVARIATE Distribuzione normale adattata per Tmorto Parametri per la distribuzione Normale Parametro Simbolo Stima Media Mu 19.37362 Dev std Sigma 20.15302 Test della bontà di adattamento per la distribuzione Normale Test -------Statistica------- ---------P-value--------- Kolmogorov-Smirnov D 0.19311 Pr > D W-Qu A-Qu

  • 0 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 144 153 162 171

    0

    5

    10

    15

    20

    25

    30

    Per

    cent

    uale

    Tmorto

    Proviamo ora a utilizzare lo strumento SAS ODS Graphics (Novità della versione 9.2 di SAS). Esso consente di ottenere output grafici e di testo in molti formati: rtf, html, pdf, …. Univar_ODS.sas ODS graphics on; ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout"; proc univariate data=tmp1.telefonate_gen2008_2; var Tmorto; histogram Tmorto/normal (mu=est sigma=est); inset normal(mean std) skewness kurtosis; /*crea nel grafico un riquadro con le stat. specificate*/ run; ods rtf close; ods listing; ods graphics off; L’output (sul file sasrtf.rtf) e’ il seguente:

    Momenti

    N 48916 Somma dei pesi 48916

    Media 19.3736201 Somma delle osservazioni 947680

    Deviazione std 20.1530228 Varianza 406.144326

    Skewness 1.65336041 Curtosi 2.74586304

    SS non corretta 38226542 SS corretta 19866549.7

    Coeff variaz 104.02301 Errore std media 0.09112021

  • Misure statistiche di base

    Posizione Variabilità

    Media 19.37362 Deviazione std 20.15302

    Mediana 11.00000 Varianza 406.14433

    Moda 3.00000 Range 172.00000

    Range interquartile 23.00000

    Test di posizione: Mu0=0

    Test Statistica P-value

    T di Student t 212.6161 Pr > |t| = |M| = |S|

  • Valori mancanti

    Valoremancante Conteggio

    Percentuale di

    Tutte le oss

    Oss mancanti

    . 9854 16.77 100.00

  • 26Parametri per la distribuzione Normale

    Parametro Simbolo Stima

    Media Mu 19.37362

    Dev std Sigma 20.15302

    Test della bontà di adattamento per la distribuzione Normale

    Test Statistica P-value

    Kolmogorov-Smirnov D 0.19311 Pr > D W-Qu A-Qu

  • 27per vedere se ci sono differenze sull'impegno operatore sui due mesi*/ ODS graphics on; ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='univar_ods2.rtf'; /*così l'output è su questo file*/ title 'Impegno operatore maggio-agosto'; proc univariate data=tmp1.combined_genmag; var ImpegnoOper; class mese; histogram ImpegnoOper/normal (mu=est sigma=est) kernel(color=red); inset normal(mean std) skewness kurtosis /position=ne; /*crea nel grafico un riquadro con le stat. specificate e lo mette a nord-est della figura*/ run; ods rtf close; ods listing; ods graphics off; Oltre alle analisi statistiche, otteniamo il seguente output:

    La linea tratteggiata rossa è una Kernel density estimation della p.d.f. della variabile aleatoria: è un metodo alternativo all’istogramma per rappresentare una stima della p.d.f.; la si effettua per distribuzioni CONTINUE. Essa consente di visualizzare meglio le differenze con altre distribuzioni continue come la normale. Si noti che stranamente ci sono dei dati negativi (errori nel database!).

  • 28Proviamo ora a sovrapporre grafici della distribuzione gamma, e fissiamo i midpoints degli istogrammi: UNIVAR_ODS3.sas /*creo un dataset ripulito dai dati "strani" */ data tmp1.combined_genmag_2; set tmp1.combined_genmag; where ImpegnoOper>0; run; /*fisso i midpoints e sovrappongo una gamma*/ ODS graphics on; ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='univar_ods3.rtf'; /*così l'output è su questo file*/ title 'Impegno operatore maggio-agosto'; proc univariate data=tmp1.combined_genmag_2; var ImpegnoOper; class mese; histogram ImpegnoOper/gamma (alpha=est sigma=est) kernel(color=red) midpoints = 30 60 90 120 150 180 210 240;

    histogram ImpegnoOper/exponential (theta=0 sigma=est) kernel(color=red) midpoints = 30 60 90 120 150 180 210 240; run; ods rtf close; ods listing; ods graphics off; Dei risultati riportiamo qui solo i grafici e le statistiche relative ai test non parametrici:

  • 29

    Test della bontà di adattamento per la distribuzione Gamma

    Test Statistica P-value

    Kolmogorov-Smirnov D 0.0499011 Pr > D W-Qu

  • 30

    Test della bontà di adattamento per la distribuzione Esponenziale

    Test Statistica P-value

    Kolmogorov-Smirnov D 0.098396 Pr > D W-Qu A-Qu

  • 31Si consideri il SAS Data set tel_gen08_tattesa , contenente i dati relativi alle telefonate arrivate al 118 di Milano nel gennaio 2008, a cui sono state aggiunte la variabili tattesa, contenente il tempo di attesa fra ciascuna telefonata e la precedente tattesa_cum, contenente il tempo di attesa cumulato (ogni riga contiene la somma di tutte le righe precedenti). Nel dataset i dati sono ordinati per DT_INLINE crescente. Al fine di verificare se il processo di arrivo delle telefonate sia un processo di Poisson, verificare se

    1. I tempi di attesa fra una telefonata e la successiva abbiano distribuzione esponenziale 2. I tempi di attesa fra una telefonata e la successiva NEI SOLI WEEKEND abbiano distribuzione

    esponenziale FACOLTATIVI (aiutarsi con Excel per la creazione dei datasets):

    3. I tempi di attesa fra un codice rosso e il successivo abbiano distribuzione esponenziale 4. I tempi di attesa fra un codice giallo e il successivo abbiano distribuzione esponenziale

  • 32 PROCEDURA TTest: Confronto di medie

    Test T tra campioni indipendenti Durante un esperimento un gruppo di animali da laboratorio viene diviso in due sottogruppi, di cui uno viene trattato con un anestetico e l’altro non viene trattato (1=trattato, 0=non trattato). Si misura in ogni animale il valore del flusso sanguigno nei reni e ci si chiede se l’anestetico influenzi o meno tale valore.

    animale flusso_sangue trattato 1 2,35 0 2 2,55 0 3 1,95 0 4 2,79 1 5 3,21 0 6 2,97 1 7 3,44 1 8 2,58 0 9 2,66 1

    10 2,31 1 11 3,43 1 12 2,37 1 13 1,82 0 14 2,98 0 15 2,53 0 16 2 0 17 1,71 0 18 2,22 0 19 2,71 0 20 1,83 1 21 2,14 1 22 3,72 1 23 2,1 1 24 2,58 0 25 1,32 1 26 3,7 0 27 1,59 0 28 2,07 1 29 2,15 1 30 2,05 1

    TTEST_INDIP.SAS

  • 33ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='ttest_indip.rtf'; /*così l'output è su questo file*/ proc ttest data=tmp1.anestetico alpha=0.01 /*livello di sign. per gli intervalli di fiducia*/ ci=equal /*usa due code uguali per costruire int. di fiducia per la varianza; oppure: ci=UMPU o ci=none */ cochran /*calcola il T Test anche per varianze non uguali*/ H0=0; class trattato; var flusso_sangue; run; ods rtf close; ods listing; Otteniamo il seguente output:

    trattato N Media Dev std Err std Minimo Massimo

    0 15 2.4320 0.5815 0.1501 1.5900 3.7000

    1 15 2.4900 0.6687 0.1727 1.3200 3.7200

    Diff (1-2) -0.0580 0.6266 0.2288

    trattato Metodo MediaMedia CL al

    99% Dev stdDev std CL

    al 99%

    0 2.4320 1.9851 2.8789 0.5815 0.3888 1.0778

    1 2.4900 1.9760 3.0040 0.6687 0.4471 1.2395

    Diff (1-2) Aggregati -0.0580 -0.6902 0.5742 0.6266 0.4643 0.9392

    Diff (1-2) Satterthwaite -0.0580 -0.6911 0.5751

    Metodo Varianze DF Valore t Pr > |t|

    Aggregati Uguale 28 -0.25 0.8017

    Satterthwaite Diverso 27.47 -0.25 0.8018

    Uguaglianza di varianze

    Metodo DF num DF denValore

    F Pr > F

    Folded F 14 14 1.32 0.6081

  • 34

  • 35 Per verificare la normalita’ dei dati, applico anche una procedura univariate, facendo calcolare i test

    non parametrici di fitting con la normale: Test_normality_indip.sas

    proc univariate data=tmp1.anestetico; /*verifico con test non parametrici se la distribuzione dei dati è gaussiana*/ var flusso_sangue; histogram flusso_sangue/normal (mu=est sigma=est); class trattato; run; quit;

    Riporto solo i risultati dei test non parametrici:

    Trattato=0 Test della bontà di adattamento per la distribuzione Normale Test -------Statistica------- ---------P-value--------- Kolmogorov-Smirnov D 0.13287678 Pr > D >0.150 Cramer-von Mises W-Qu 0.03683466 Pr > W-Qu >0.250 Anderson-Darling A-Qu 0.24120398 Pr > A-Qu >0.250

    Trattato=1 Test della bontà di adattamento per la distribuzione Normale Test -------Statistica------- ---------P-value--------- Kolmogorov-Smirnov D 0.17121131 Pr > D >0.150 Cramer-von Mises W-Qu 0.07951635 Pr > W-Qu 0.202 Anderson-Darling A-Qu 0.45065022 Pr > A-Qu 0.242

    In entrambi i casi possiamo accettare l’ipotesi di normalita’, sia dei trattati che dei non trattati, e

    possiamo quindi applicare il t-test anche se il campione non e’ molto numeroso.

  • 36 Test T tra campioni accoppiati

    Supponiamo ora che sugli stessi animali venga misurato il flusso del sangue prima e dopo aver loro somministrato l’anestetico. Si vuole verificare se il flusso subisca un cambiamento significativo.

    animale pre_anestetico dopo_anestetico 1 2,35 22 2,55 1,713 1,95 2,224 2,79 2,715 3,21 1,836 2,97 2,147 3,44 3,728 2,58 2,19 2,66 2,58

    10 2,31 1,3211 3,43 3,712 2,37 1,5913 1,82 2,0714 2,98 2,1515 2,53 2,05

    In tal caso i due campioni non sono indipendenti e si dovra’ eseguire un T test accoppiato TTEST_ACCOPP.SAS ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='ttest_accopp.rtf'; /*così l'output è su questo file*/ proc ttest data=tmp1.anestetico_accoppiati alpha=0.05; paired pre_anestetico*dopo_anestetico; run; ods rtf close; ods listing;

    N Media Dev std Err std Minimo Massimo15 0.4033 0.5358 0.1383 -0.2800 1.3800

  • 37

    Media Media CL al

    95% Dev stdDev std CL

    al 95% 0.4033 0.1066 0.7000 0.5358 0.3923 0.8450

    DF Valore t Pr > |t|14 2.92 0.0113

    Grafici per studiare le discrepanze fra i due campioni:

  • 38

    Grafici per studiare la normalità dei dati:

  • 39

    Questi grafici rivelano già qualitativamente un buon adattamento con la normale. Anche qui, per sicurezza, dato che il campione è piccolo e non si può applicare il TLC, si potrebbero effettuare dei test non parametrici di adattamento della variabile differenza con la normale: test_normality_accopp.sas data work.testdiff; set tmp1.anestetico_accoppiati; differenza=pre_anestetico-dopo_anestetico; run; proc univariate data=work.testdiff; /*verifico con test non parametrici se la distribuzione dei dati è gaussiana*/ var differenza; histogram differenza/normal (mu=est sigma=est); run; quit; Risultati dei test di adattamento: Test della bontà di adattamento per la distribuzione Normale Test -------Statistica------- ---------P-value--------- Kolmogorov-Smirnov D 0.15897741 Pr > D >0.150 Cramer-von Mises W-Qu 0.06927057 Pr > W-Qu >0.250 Anderson-Darling A-Qu 0.48401877 Pr > A-Qu 0.203

  • 40 Di nuovo i p-value sono alti, per cui possiamo accettare l’ipotesi di normalità dei dati.

    ESERCIZIO 4 Si considerino i dati sulle telefonate al servizio 118 di Milano. Attraverso opportuni test di ipotesi si dia una risposta alle seguenti domande:

    1. Nelle telefonate del mese di gennaio ci sono differenze significative fra i tempi medi di “impegno operatore” fra i codici rossi e i codici verdi?

    2. Si considerino le sole telefonate relative ad INCIDENTI STRADALI:

    a. Il numero medio giornaliero di incidenti di tipo auto-moto o caduta da moto e’ significativamente diverso nei mesi di gennaio e di maggio?

    b. Il numero medio giornaliero di incidenti di gennaio di tipo auto-moto o caduta da moto e’ significativamente diverso nei giorni lavorativi e nei weekend?

    3. Si consideri il SAS Data set tel_gen08_tattesa, dell’esercizio precedente.

    a) I tempi di attesa fra una telefonata e l’altra hanno medie significativamente diverse nei giorni lavorativi e nei weekend?

    b) I tempi attesa fra una telefonata e l’altra nei giorni lavorativi hanno medie significativamente diverse nelle ore diurne (fra le 7 e le 18) e notturne (fra le 19 e le 6)?

  • 41 TEST CHI QUADRO

    Procedura FREQ:tabelle di contingenza e confronti di proporzioni

    Utilizzo i dati delle telefonate al 118 nel mese di Gennaio. Voglio verificare se vi sia una differenza significativa fra la distribuzione dei motivi di chiamata fra giorni lavorativi e week end. Programma chisq.sas data tmp1.telefonate_gen2008_3; set tmp1.telefonate_gen2008; where DS_MOTIVO and DS_MOTIVO ne 'INC FERROVIA'; /*seleziona solo le righe in cui DS_MOTIVO non e' vuoto. Gli zeri e i vuoti sono FALSE per where, gli altri valori sono TRUE. Escludo inoltre gli incidenti ferrovia (e' uno solo)*/ if weekday='sab' or weekday='dom' then daylabel='festivo'; else daylabel='feriale'; /* creo una nuova variabile che mi dice se il giorno e' lavorativo o un week end */ run; ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='chisq.rtf'; /*così l'output è su questo file*/ proc freq data=tmp1.telefonate_gen2008_3; tables DS_MOTIVO*daylabel / chisq expected deviation; /*effettuo un test chi quadro, plottando anche le frequenze attese e le differenze f_osservate - f_attese*/ run; ods rtf close; ods listing;

  • 42Tabella di DS_MOTIVO per daylabel

    DS_MOTIVO(DS_MOTIVO) daylabel

    Frequenza Atteso Deviazione Percentuale Pct riga Pct col feriale festivo Totale

    ALTRO 4240.3471.6534

    0.1777.780.23

    1213.653-1.653

    0.0522.220.19

    54

    0.22

    ANIMALI 129.71312.2869

    0.0592.310.07

    13.2869-2.287

    0.007.690.02

    13

    0.05

    CADUTA 18671802.164.851

    7.6377.4010.21

    545609.85-64.85

    2.2322.608.81

    2412

    9.86

    EVENTO DI MASSA 3132.875-1.875

    0.1370.450.17

    1311.1251.8750.05

    29.550.21

    44

    0.18

    EVENTO VIOLENTO 298323.52-25.52

    1.2268.821.63

    135109.4825.520.55

    31.182.18

    433

    1.77

    INC INFORTUNIO 362377.32-15.32

    1.4871.681.98

    143127.6815.316

    0.5828.322.31

    505

    2.06

    INC STRADALE 14881464.423.567

    6.0875.928.14

    472495.57-23.57

    1.9324.087.63

    1960

    8.01

  • 43Tabella di DS_MOTIVO per daylabel

    DS_MOTIVO(DS_MOTIVO) daylabel

    Frequenza Atteso Deviazione Percentuale Pct riga Pct col feriale festivo Totale

    INTOSSICAZIONE 380394.5-14.51.55

    71.972.08

    148133.514.50.60

    28.032.39

    528

    2.16

    MEDICO ACUTO 1331513344-29.2754.4174.5572.83

    45454515.729.27418.5725.4573.46

    17860

    72.99

    NON NOTO 264275.7-11.71.08

    71.541.44

    10593.29811.702

    0.4328.461.70

    369

    1.51

    PREVENZIONE 2121.668-0.668

    0.0972.410.11

    87.33240.6676

    0.0327.590.13

    29

    0.12

    SOCCORSO PERSONA 203196.56.4970.83

    77.191.11

    6066.497-6.497

    0.2522.810.97

    263

    1.07

    Totale 1828374.72

    618725.28

    24470 100.00

  • Statistiche per la tabella di DS_MOTIVO per daylabel

    tatistica DF Valore Prob

    Chi-quadrato 11 29.2284 0.0021

    Chi-quadrato rapp verosim 11 29.5326 0.0019

    Chi-quadrato MH 1 4.5698 0.0325

    Coefficiente Phi 0.0346

    Coefficiente di contingenza 0.0345

    V di Cramer 0.0346

    Dimensione campione = 24470

    Posso quindi dire che c’e’ una differenza significativa, se uso un alpha=0.002 o maggiore. Dagli istogrammi si evidenzia che la differenza principale sta nella classe “Medico Acuto”: le chiamate per motivi medici sono piu’ frequenti nei giorni feriali che nei festivi. Applichiamo ora il test chi quadro a una variabile continua, che andra’ pertanto discretizzata con un “format”: verifichiamo se la distribuzione della variabile “impegno operatore” sia significativamente diversa fra i giorni feriali o festivi. Programma chisq_cont.sas data work.telefonate_gen2008_4; set tmp1.telefonate_gen2008; if weekday='sab' or weekday='dom' then daylabel='festivo'; else daylabel='feriale'; /* creo una nuova variabile che mi dice se il giorno e' lavorativo o un week end */ run; proc format; /* definisce range di valori: serve per raggruppare o discretizzare i dati, associando un'etichetta a ogni gruppo*/ value durata low-30='A meno di mezzo minuto' /*nell'output elenca le etichette in ordine lessicografico */ 30-60='B mezzo-un minuto' 60-120='C uno-due minuti' 120-300='D due-cinque minuti' 300-high='E più di 5 minuti'; run; ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='chisq_cont.rtf'; /*così l'output è su questo file*/ proc freq data=work.telefonate_gen2008_4; tables daylabel*ImpegnoOper / chisq expected deviation cellchi2 plots=none; /*effettuo un test chi quadro, plottando anche le frequenze attese, le differenze f_osservate - f_attese, il contributo alla statistica

  • chi2 dato da ciascuna cella.*/ format ImpegnoOper durata.; run; ods rtf close; ods listing;

    OUTPUT:

    Tabella di daylabel per ImpegnoOper

    daylabel ImpegnoOper(ImpegnoOper)

    Frequenza Atteso Deviazione ChiQuadrato cella Percentuale Pct riga Pct col

    A meno

    di mezzo

    minuto

    B mezzo-un

    minuto

    C uno-due

    minuti

    D due-cinque minuti

    E più di 5

    minuti Totale

    feriale 1018910353-163.92.59620.8328.6471.59

    1061410634-20.440.039321.7029.8372.60

    1117711046130.861.550222.8531.4173.60

    34023357.644.3690.5863

    6.959.56

    73.70

    199 189.85 9.1513 0.4411

    0.41 0.56

    76.25

    35581

    72.74

    festivo 40443880.1163.946.9267

    8.2730.3328.41

    40063985.620.4390.1048

    8.1930.0427.40

    40094139.9-130.94.1363

    8.2030.0626.40

    12141258.4-44.371.5644

    2.489.10

    26.30

    62 71.151 -9.151 1.177 0.13 0.46

    23.75

    13335

    27.26

    Totale 1423329.10

    1462029.89

    1518631.05

    46169.44

    261 0.53

    48916 100.00

    Frequenza mancanti = 9854

    Statistiche per la tabella di daylabel per ImpegnoOper

    Statistica DF Valore Prob

    Chi-quadrato 4 19.1222 0.0007

    Chi-quadrato rapp verosim 4 19.1417 0.0007

    Chi-quadrato MH 1 15.2516

  • Dimensione effettiva campione = 48916Frequenza mancanti = 9854

    WARNING: 17% dei dati è mancante.

    Dunque ci sono differenze significative fra giorni feriali e festivi e le differenze maggiori sono dovute a un aumento rispetto ai valori attesi delle telefonate festive che durano meno di mezzo minuto, con conseguente diminuzione delle telefonate piu’ lunghe.

  • SAS

    La procedura FREQ

    ID_CODICE=' '

    50

    Confronto fra una proporzione sperimentale e una teorica  CASO 1: utilizzo dell’approssimazione asintotica della binomiale con la normale Mi chiedo se la proporzione di telefonate che durano fino a due minuti sia pari al 80% del totale, indistinto rispetto al giorno della settimana, ossia verifico H0: prop. telefonate con durata fino a 2 min = 0.8 prop. telefonate con durata superiore a 2 min = 0.2 contro tutte le alternative. Programma conf_prop_bin1.sas data work.telefonate_gen2008_5; set tmp1.telefonate_gen2008; if ImpegnoOper le 120 then telefonata='corta'; else telefonata='lunga'; /* creo una nuova variabile che mi indica la durata la durata della telefonata */ run; ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='bin1.rtf'; /*così l'output è su questo file*/ proc freq data=work.telefonate_gen2008_5; tables telefonata / binomial (p=0.8) plots(only)=freqplot(type=dot scale=percent); run; ods rtf close; ods listing; OUTPUT:

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 53893 91.70 53893 91.70

    lunga 4877 8.30 58770 100.00

  • SAS

    La procedura FREQ

    ID_CODICE=' '

    51

    Proporzione binomiale per telefonata = corta

    Proporzione 0.9170

    ASE 0.0011

    Limite conf inferiore al 95% 0.9148

    Limite conf superiore al 95% 0.9192

    Limiti conf esatti

    Limite conf inferiore al 95% 0.9148

    Limite conf superiore al 95% 0.9192

  • SAS

    La procedura FREQ

    ID_CODICE=' '

    52

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0016

    Z 70.9188

    Pr unilaterale > Z |Z|

  • SAS

    La procedura FREQ

    ID_CODICE=' '

    53

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 16823 96.90 16823 96.90

    lunga 539 3.10 17362 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.9690

    ASE 0.0013

    Limite conf inferiore al 95% 0.9664

    Limite conf superiore al 95% 0.9715

    Limiti conf esatti

    Limite conf inferiore al 95% 0.9663

    Limite conf superiore al 95% 0.9715

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0030

    Z 55.6559

    Pr unilaterale > Z |Z|

  • SAS

    La procedura FREQ

    ID_CODICE=B

    05:21 martedì, giugno 07, 2011 54

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 10033 86.21 10033 86.21

    lunga 1605 13.79 11638 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.8621

    ASE 0.0032

    Limite conf inferiore al 95% 0.8558

    Limite conf superiore al 95% 0.8684

    Limiti conf esatti

    Limite conf inferiore al 95% 0.8557

    Limite conf superiore al 95% 0.8683

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0037

    Z 16.7455

    Pr unilaterale > Z |Z|

  • SAS

    La procedura FREQ

    ID_CODICE=G

    05:21 martedì, giugno 07, 2011 55

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 9646 92.20 9646 92.20

    lunga 816 7.80 10462 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.9220

    ASE 0.0026

    Limite conf inferiore al 95% 0.9169

    Limite conf superiore al 95% 0.9271

    Limiti conf esatti

    Limite conf inferiore al 95% 0.9167

    Limite conf superiore al 95% 0.9271

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0039

    Z 31.1975

    Pr unilaterale > Z |Z|

  • SAS

    La procedura FREQ

    ID_CODICE=R

    05:21 martedì, giugno 07, 2011 56

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 1505 86.79 1505 86.79

    lunga 229 13.21 1734 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.8679

    ASE 0.0081

    Limite conf inferiore al 95% 0.8520

    Limite conf superiore al 95% 0.8839

    Limiti conf esatti

    Limite conf inferiore al 95% 0.8511

    Limite conf superiore al 95% 0.8835

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0096

    Z 7.0723

    Pr unilaterale > Z |Z|

  • SAS

    La procedura FREQ

    ID_CODICE=V

    05:21 martedì, giugno 07, 2011 57

    telefonata Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 7724 85.19 7724 85.19

    lunga 1343 14.81 9067 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.8519

    ASE 0.0037

    Limite conf inferiore al 95% 0.8446

    Limite conf superiore al 95% 0.8592

    Limiti conf esatti

    Limite conf inferiore al 95% 0.8444

    Limite conf superiore al 95% 0.8591

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0042

    Z 12.3502

    Pr unilaterale > Z |Z|

  • Frequenza PercentualeFrequenzacumulativa

    Percentuale cumulativa

    corta 8162 95.94 8162 95.94

    lunga 345 4.06 8507 100.00

    Proporzione binomiale per telefonata = corta

    Proporzione 0.9594

    ASE 0.0021

    Limite conf inferiore al 95% 0.9553

    Limite conf superiore al 95% 0.9636

    Limiti conf esatti

    Limite conf inferiore al 95% 0.9550

    Limite conf superiore al 95% 0.9635

    Test di H0: Proporzione = 0.8

    ASE con H0 0.0043

    Z 36.7654

    Pr unilaterale > Z |Z|

  • Supponiamo ad esempio di voler verificare se l’arrivo di telefonate al centralino del 118 nel mese di gennaio segue un processo di Poisson a parametro costante.

    Programma Confr_distr_teorica1.sas

    Estraggo la variabile di interesse e la discretizzo

    /*conto il numero di telefonate al giorno in gennaio */ proc freq data=tmp1.telefonate_gen2008; tables giorno/out=work.freq_giorno_gen; run; Calcolo alcune statistiche descrittive che mi sono utili per l’analisi, in particolare per determinare il parametro della distribuzione di Poisson di riferimento /*calcolo la media dei conteggi*/ proc means data=work.freq_giorno_gen mean min max var; var count/; run; /* verifico ora se il numero di telefonate al giorno ha distribuzione di Poisson a parametro uguale alla media calcolata (circa 1896)*/ /*calcolo le proporzioni sperimentali, discretizzando il range di count*/ data work.prop; set work.freq_giorno_gen; /*discretizzo la variabile count */ if count1870 and count1900 and count1930 then partition='I4'; run; Ora calcolo le proporzioni teoriche che dovrei osservare se fosse vera H0: i dati hanno distribuz. di Poisson a parametro 1896 per la discretizzazione scelta. Leggero’ i risultati nel dataset work.prop_teorica. ATTENZIONE: devo esprimere le proporzioni come percentuali intere, e la loro somma deve essere 100. Arrotondare in modo opportuno! (ceil arrotonda verso –inf e floor verso +inf ). data work.prop_teorica; /* Calcolo le proporzioni teoriche in un dataset diverso */ /* sintassi: prob=CDF('POISSON',n,l) con l=media della Poisson, n=punto in cui calcolo la cdf. Ossia: CDF('POISSON',n,l) calcola la probabilità che una v.a. di Poisson a parametro l sia

  • ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='prop_teo.rtf'; /*così l'output è su questo file*/ proc freq data=work.prop; tables partition/ chisq testp=(27,27,24,22) plots(only)=deviationplot(type=dot); run; ods rtf close; ods listing;

    OUTPUT:

    partition Frequenza PercentualeTest sulla

    percentualeFrequenzacumulativa

    Percentuale cumulativa

    I1 16 51.61 27.00 16 51.61

    I2 4 12.90 27.00 20 64.52

    I3 3 9.68 24.00 23 74.19

    I4 8 25.81 22.00 31 100.00

    Test del chi-quadrato per proporzioni specificate

    Chi-quadrato 12.0909

    DF 3

    Pr > ChiQuadr 0.0071

  • Dimensione campione = 31

    Dunque la distribuzione dei dati e’ significativamente diversa da una Poisson(1896).

    CASO 3: utilizzo del test chi quadro per tabelle di contingenza con conteggi già forniti

    Vediamo ora come si può effettuare un test chi quadro quando i dati contengono già i conteggi delle celle della tabella di contingenza. Si consideri il seguente esempio, i cui dati si riferiscono a un sondaggio effettuato in Italia in un campione di bambini delle scuole elementari (file animali_bambini.xls)

  • Censimento a scuola: scuole elementari Quale animale/i possiedi?

    Dimensione Comune: Metropolitano

    Animali posseduti

    Nessuno Altro Uccellino Pesciolino Gatto Gatto e pesciolino Cane

    Cane e uccellino

    Cane e pesciolino

    Cane e gatto

    Num. Num. Num. Num. Num. Num. Num. Num. Num. Num. Ripartizione

    1164 516 77 328 236 37 251 13 44 39Nord Ovest

    Nord Est 147 90 17 37 36 12 27 4 4 6Centro 376 201 41 93 81 8 105 8 17 16Sud 683 320 149 192 59 2 215 30 25 15Isole 604 253 145 56 62 5 255 51 16 37Totale 2974 1380 429 706 474 64 853 106 106 113

    Dimensione Comune: Non metropolitano

    Animali posseduti

    Nessuno Altro Uccellino Pesciolino Gatto Gatto e pesciolino Cane

    Cane e uccellino

    Cane e pesciolino

    Cane e gatto

    Num. Num. Num. Num. Num. Num. Num. Num. Num. Num. Ripartizione

    3399 3779 430 1148 925 219 1329 171 267 472Nord Ovest

    Nord Est 2171 2523 323 537 675 140 865 148 179 329Centro 1621 2490 225 415 576 124 817 99 120 372Sud 6140 4425 942 1110 942 116 2729 294 270 639Isole 2132 1992 522 388 423 55 1314 167 102 259Totale 15463 15209 2442 3598 3541 654 7054 879 938 2071

    Vogliamo verificare se la distribuzione degli animali posseduti sia diversa fra bambini che abitano in centri metropolitani o non metropolitani.

    Considereremo pertanto solo l’ultima riga di entrambe le tabelle precedenti, e rielaboriamo i dati in modo da poter essere letti da SAS adeguatamente, dato che i dati forniscono gia’ i conteggi da inserire nelle celle della tabella di contingenza che analizzeremo.

    Riscriviamo i dati come segue (foglio 2 dello stesso file excel di prima):

    Animali dim_comune frequenze Nessuno metropolitano 2974 Altro metropolitano 1380 Uccellino metropolitano 429

    Pesciolino metropolitano 706 Gatto metropolitano 474 Gatto e pesciolino metropolitano 64 Cane metropolitano 853

  • Cane e uccellino metropolitano 106 Cane e pesciolino metropolitano 106

    Cane e gatto metropolitano 113

    Nessuno non metropolitano 15463

    Altro non metropolitano 15209

    Uccellino non metropolitano 2442

    Pesciolino non metropolitano 3598

    Gatto non metropolitano 3541

    Gatto e pesciolino

    non metropolitano 654

    Cane non metropolitano 7054

    Cane e uccellino

    non metropolitano 879

    Cane e pesciolino

    non metropolitano 938

    Cane e gatto non metropolitano 2071

    Questi sono i dati che leggeremo con SAS, cosi memorizzeremo 3 variabili:

    animali, contenente il tipo di animali posseduti

    dim_comune, che indica se il comune e’ metropolitano o no

    frequenze, che indica i conteggi da inserire nella tabella di contingenza.

    Eseguiamo a questo punto il programma SAS seguente:

    Chi_quadro_bambini_animali.sas

    /* leggo i dati */ PROC IMPORT OUT= WORK.bambini DATAFILE= "C:\Users\Alex\Desktop\SAS\dati\animali_elementari.xls" DBMS=EXCEL REPLACE; SHEET="foglio2$"; GETNAMES=YES; RUN; proc freq data=work.bambini; weight frequenze; /*mi dice che in frequenze e' contenuto il conteggio osservato in ogni cella */ tables animali*dim_comune / chisq expected cellchi2; run;

  • OUTPUT:

    La procedura FREQ Tabella di Animali per dim_comune Animali(Animali) dim_comune(dim_comune) Frequenza ‚ Atteso ‚ ChiQuadrato cella‚ Percentuale ‚ Pct riga ‚ Pct col ‚metropol‚non metr‚ Totale ‚itano ‚opolitan‚ ‚ ‚o ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Altro ‚ 1380 ‚ 15209 ‚ 16589 ‚ 2024 ‚ 14565 ‚ ‚ 204.9 ‚ 28.472 ‚ ‚ 2.34 ‚ 25.75 ‚ 28.09 ‚ 8.32 ‚ 91.68 ‚ ‚ 19.15 ‚ 29.33 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Cane ‚ 853 ‚ 7054 ‚ 7907 ‚ 964.71 ‚ 6942.3 ‚ ‚ 12.935 ‚ 1.7975 ‚ ‚ 1.44 ‚ 11.94 ‚ 13.39 ‚ 10.79 ‚ 89.21 ‚ ‚ 11.84 ‚ 13.60 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Cane e gatto ‚ 113 ‚ 2071 ‚ 2184 ‚ 266.46 ‚ 1917.5 ‚ ‚ 88.384 ‚ 12.282 ‚ ‚ 0.19 ‚ 3.51 ‚ 3.70 ‚ 5.17 ‚ 94.83 ‚ ‚ 1.57 ‚ 3.99 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Cane e pesciolin ‚ 106 ‚ 938 ‚ 1044 o ‚ 127.38 ‚ 916.62 ‚ ‚ 3.5871 ‚ 0.4985 ‚ ‚ 0.18 ‚ 1.59 ‚ 1.77 ‚ 10.15 ‚ 89.85 ‚ ‚ 1.47 ‚ 1.81 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Cane e uccellino ‚ 106 ‚ 879 ‚ 985 ‚ 120.18 ‚ 864.82 ‚ ‚ 1.6724 ‚ 0.2324 ‚ ‚ 0.18 ‚ 1.49 ‚ 1.67 ‚ 10.76 ‚ 89.24 ‚ ‚ 1.47 ‚ 1.70 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Totale 7205 51849 59054 12.20 87.80 100.00 (Continua)

  • La procedura FREQ Tabella di Animali per dim_comune Animali(Animali) dim_comune(dim_comune) Frequenza ‚ Atteso ‚ ChiQuadrato cella‚ Percentuale ‚ Pct riga ‚ Pct col ‚metropol‚non metr‚ Totale ‚itano ‚opolitan‚ ‚ ‚o ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Gatto ‚ 474 ‚ 3541 ‚ 4015 ‚ 489.86 ‚ 3525.1 ‚ ‚ 0.5134 ‚ 0.0713 ‚ ‚ 0.80 ‚ 6.00 ‚ 6.80 ‚ 11.81 ‚ 88.19 ‚ ‚ 6.58 ‚ 6.83 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Gatto e pescioli ‚ 64 ‚ 654 ‚ 718 no ‚ 87.601 ‚ 630.4 ‚ ‚ 6.3585 ‚ 0.8836 ‚ ‚ 0.11 ‚ 1.11 ‚ 1.22 ‚ 8.91 ‚ 91.09 ‚ ‚ 0.89 ‚ 1.26 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Nessuno ‚ 2974 ‚ 15463 ‚ 18437 ‚ 2249.4 ‚ 16188 ‚ ‚ 233.38 ‚ 32.431 ‚ ‚ 5.04 ‚ 26.18 ‚ 31.22 ‚ 16.13 ‚ 83.87 ‚ ‚ 41.28 ‚ 29.82 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Pesciolino ‚ 706 ‚ 3598 ‚ 4304 ‚ 525.12 ‚ 3778.9 ‚ ‚ 62.307 ‚ 8.6582 ‚ ‚ 1.20 ‚ 6.09 ‚ 7.29 ‚ 16.40 ‚ 83.60 ‚ ‚ 9.80 ‚ 6.94 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Uccellino ‚ 429 ‚ 2442 ‚ 2871 ‚ 350.28 ‚ 2520.7 ‚ ‚ 17.69 ‚ 2.4582 ‚ ‚ 0.73 ‚ 4.14 ‚ 4.86 ‚ 14.94 ‚ 85.06 ‚ ‚ 5.95 ‚ 4.71 ‚ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Totale 7205 51849 59054 12.20 87.80 100.00 3 La procedura FREQ

  • Statistiche per la tabella di Animali per dim_comune Statistica DF Valore Prob ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Chi-quadrato 9 719.5111

  • ESERCIZIO 6

    Si consideri il problema affrontato nell’esempio del programma

    Confr_distr_teorica1.sas

    Se si cambia la discretizzazione della variabile count (conteggio del numero di telefonate al giorno) cambiano i risultati del test chi quadro?

    Esercizio 7

    Si consideri il file di dati excel Colazione_bambini.xls, che si riferisce a un sondaggio effettuato presso alcune scuole elementari italiane sulle abitudini alimentari dei bambini.

    Rielaborando opportunamente le tabelle presenti nei 3 fogli excel del file, si risponda alla seguente domanda:

    ci sono differenze significative di alimentazione fra bambini che vivono in centri metropolitani o in centri non metropolitani?

  • LEZIONE 9: REGRESSIONE e ANALISI DELLA VARIANZA

    Regressione: Procedura Reg

    Utilizziamo il SAS data set Milano_covar.sas7bdat, contenente il numero di interventi giornalieri effettuati dal servizio 118 di Milano dal 2005 al 2007 sul solo comune di Milano, sia totale che diviso per tipologia o sotto-tipologia di infortunio. Nel data set sono anche riportati i valori di alcune variabili climatiche (temperatura, pressione, etc.) e di alcuni inquinanti, nonche’ l’incidenza della sindrome influenzale, misurata come n. di casi segnalati dai medici di base ogni 1000 assistiti. Vogliamo dapprima vedere se gli interventi di tipo medico acuto abbiano una dipendenza lineare (usiamo una retta) dalla temperatura.

    REGR1.SAS ODS graphics on; /*attivo la grafica*/ ods listing close; ods rtf path="C:\Users\Alex\Desktop\SAS\ODSout" file='reg1.rtf'; /*così l'output è su questo file*/ proc reg data=tmp1.Milano_covar; model totale_medico_acuto=tempera