Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
princomp(x, cor = FALSE, scores = TRUE,) x cor scores una matrice numerica o un data.frame rispetto a cui calcolare le componenti principali valore logico che indica se le componenti debbono essere calcolate sulla base della matrice di correlazione (=TRUE) o di covarianza (=FALSE) valore logico che indica se debbono essere calcolati i punteggi individuali per ogni componente
Output della funzione princomp: $sdev l'errore standard delle componenti principali (ossia, la radice quadrata degli autovalori della matrice di varianze e covarianze dei dati); $loadings la matrice dei pesi o dei coefficienti delle componenti principali (ossia, gli autovettori della matrice di varianze e covarianze dei dati); $scores se scores = T, la matrice dei punteggi; n.obs il numero delle osservazioni
Obiettivo: descrivere le caratteristiche dei 38 modelli di auto in forma sintetica, usando un numero ridotto di variabili. In altri termini, possibile sintetizzare le caratteristiche/variabili osservate costruendo delle variabili latenti, non osservate, ma che esprimono le caratteristiche fondamentali delle auto analizzate?
Lettura del file di testo senza intestazioni di colonna, aggiungo i nomi delle variabili con colnames
> > + > > cars <- read.table("cars.txt") colnames(cars) <- c("modello", "nazione", "consumo", "peso", "rapporto_trasmissione", "potenza","cilindrata","num_cilindri","ripresa") dcars <- cars[,3:9] Costruisco un data.frame dcars in cui inserisco solo le variabili rispetto rownames(dcars) <- cars[,1]
a cui calcolare le CP, e gli assegno come nomi di riga i nomi dei modelli
3
Analisi delle Componenti Principali Vi sono caratteristiche delle auto, tra quelle rilevate, che presentano correlazione tra di loro?
> round(cor(dcars),3) consumo peso rapporto_trasmissione potenza cilindrata num_cilindri ripresa consumo 1.000 -0.902 0.417 -0.871 -0.786 -0.805 -0.057 peso -0.902 1.000 -0.688 0.917 0.951 0.917 -0.033 rapporto_trasmissione 0.417 -0.688 1.000 -0.589 -0.798 -0.692 0.194 potenza -0.871 0.917 -0.589 1.000 0.872 0.864 -0.253 cilindrata -0.786 0.951 -0.798 0.872 1.000 0.940 -0.143 num_cilindri -0.805 0.917 -0.692 0.864 0.940 1.000 -0.129 ripresa -0.057 -0.033 0.194 -0.253 -0.143 -0.129 1.000 > pairs(dcars)
Alcuni gruppi di variabili mostrano coefficienti di correlazione elevati, possiamo quindi ritenere che lACP consenta di ottenere una sintesi significativa di tali variabili
>
Errore standard di ciascuna componente Peso relativo dellerrore associato a ciascuna componente Cumulata del peso relativo dellerrore delle componenti
Le prime due componenti spiegano l86.7% della variabilit, ed inoltre la terza presenta un valore inferiore allunit; Come sintesi delle 9 caratteristiche osservate possiamo quindi utilizzare le prime due componenti con una perdita di informazione che riteniamo trascurabile.
> pca.cars$loadings Loadings: consumo peso rapporto_trasmissione potenza cilindrata num_cilindri ripresa Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 0.388 0.279 0.432 -0.317 0.630 -0.200 -0.219 -0.435 -0.130 0.105 -0.463 -0.753 0.335 -0.217 -0.769 -0.378 0.139 -0.293 -0.418 -0.317 0.313 0.734 0.259 0.132 -0.434 0.169 -0.227 -0.621 0.587 -0.424 -0.772 0.451 -0.137 -0.924 0.300 0.208
I loadings (1) e le correlazioni tra le variabili e le componenti (2), consentono di fornire uninterpretazione delle componenti
Sulla prima componente, troviamo valori positivi del consumo (Km percorsi con 1 litro) e del rapporto di trasmissione mentre sono correlate negativamente variabili legate alla dimensione delle auto (peso, cilindrata, potenza, n.cilindri). Troveremo quindi a sinsitra, su questa componente le auto di maggior peso, potenza, cilindrata e consumi magggiori. La seconda componente invece caratterizzata positivamente dalla sportivit (ripresa).
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.143 0.143 0.143 0.143 0.143 0.143 0.143 0.143 0.286 0.429 0.571 0.714 0.857 1.000
> t(pca.cars$sdev*t(pca.cars$loadings)) Loadings: consumo peso rapporto_trasmissione potenza cilindrata num_cilindri ripresa Comp.1 0.873 -0.980 0.754 -0.940 -0.975 -0.954 0.155 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 0.289 0.336 -0.115 0.160 -0.134 -0.101 -0.225 -0.597 -0.138 -0.246 0.114 0.187 0.131 -0.136 -0.282 -0.959 0.232
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 SS loadings 5.059 1.076 0.602 0.133 0.065 0.048 0.017 Proportion Var 0.723 0.154 0.086 0.019 0.009 0.007 0.002 Cumulative Var 0.723 0.876 0.962 0.981 0.991 0.998 1.000
> biplot(pca.cars,cex=0.7)
Il biplot consente infine di avere una rappresentazione grafica, in questo caso su un piano definito dalle due componenti selezionate, delle variabili (indicate in rosso) e delle unit (i modelli di auto).
pca.cars$scores[,1:2]
Comp.1 -4.0516170 -4.0757397 -2.6616014 -3.9323160 2.5312061 0.9938035 1.5266299 2.0907490 0.6475970 -0.8869904 0.7715256 -1.0910416 -1.2449001 -0.2959353 -1.4500339 -1.8272225 -3.2804391 -3.3320469 -3.9313813 -3.3354754 1.0304297 -0.3802293 2.9558927 2.2236956 1.2780020 2.7089769 2.0931963 0.7140363 -0.3715999 -0.3766132 1.0689626 2.3255428 2.9556973 2.5270118 2.2844184 0.3105822 0.7532534 2.7339740 Comp.2 -0.347628960 0.177935962 -0.187322569 1.048477475 -0.970361864 0.575608475 0.104721016 0.413669183 -1.157409036 0.241955311 -0.886029634 -1.180648578 -0.670540145 -1.346792959 -2.522682776 -0.324787939 -0.478954630 0.828115148 0.892528946 -0.309268106 0.380271502 -1.162491456 -0.003829406 0.892457787 0.019201440 0.057947160 -0.771792155 -0.272795831 2.552426235 1.426376218 1.579657088 1.329034082 -2.497296565 0.683411263 0.509541997 -0.178708493 0.928675121 0.627329693
Buick_Estate_Wagon Ford_Country_Squire_Wagon Chevy_Malibu_Wagon Chrysler_LeBaron_Wagon Chevette Toyota_Corona Datsun_510 Dodge_Omni Audi_5000 Volvo_240_GL Saab_99_GLE Peugeot_694_SL Buick_Century_Special Mercury_Zephyr Dodge_Aspen AMC_Concord_D/L Chevy_Caprice_Classic Ford_LTD Mercury_Grand_Marquis Dodge_St_Regis Ford_Mustang_4 Ford_Mustang_Ghia Mazda_GLC Dodge_Colt AMC_Spirit VW_Scirocco Honda_Accord_LX Buick_Skylark Chevy_Citation Olds_Omega Pontiac_Phoenix Plymouth_Horizon Datsun_210 Fiat_Strada VW_Dasher Datsun_810 BMW_320i VW_Rabbit
Sulla base del biplot e degli scores possiamo valutare la posizione di ciascun modello rispetto alle due nuove variabili. Ad esempio Buick_Estate_Wagon e Ford_Country_Squire_Wagon sono auto, rispetto alla prima componente, di grande potenza e peso e con consumi elevati, mentre non si discostano dai valori medi di ripresa. Sulla prima componente, ma con consumi ridotti e alto rapporto di trasmissione troviamo la Fiat_Strada, la VW_Scirocco e la Datsun_210. Questultima si contraddistingue anche per la sua ripresa, assieme alla Dodge_Aspen, mentre, al contrario, la Chevy_Citation non sembra brillare per le prestazioni sportive.
Salvando i punteggi fattoriali allinterno del data.frame cars, possiamo costruire un grafico in cui, ad esempio, riportare i modelli per paese di costruzione rispetto alle due componenti individuate. Osserviamo che le auto di maggior potenza e con consumi pi elevati (posizionate a sinistra sulla prima componente) sono principalmente statunitensi, mentre, sempre su tale componente, abbiamo una maggior concentrazione a destra di auto giapponesi ed europee.
10
> t(pca.cars2$sdev*t(pca.cars2$rotation)) PC1 PC2 consumo 0.8728783 0.28948390 peso -0.9795237 -0.13447495 rapporto_trasmissione 0.7540230 -0.22480735 potenza -0.9402229 0.06326795 cilindrata -0.9751793 0.02247927 num_cilindri -0.9540236 -0.01593679 ripresa 0.1551230 -0.95854591
PC3 PC4 PC5 PC6 PC7 -0.33551687 0.11544116 -0.1601877872 0.04363806 0.028635191 0.03221734 -0.03827015 0.0002613541 0.10118477 0.098533801 0.59708287 0.13796728 -0.0353564875 0.06414897 -0.001712613 0.24622722 -0.11407670 -0.1865984618 -0.05673830 -0.017279381 -0.13141762 0.08264331 -0.0088527543 0.13575806 -0.076881881 -0.01428000 0.28152005 0.0095866097 -0.09854950 0.017991230 -0.23247303 -0.00239685 -0.0528050008 -0.01498402 -0.008016408
11
12
13
14
LAnalisi delle Corrispondenze Semplici consente di studiare la struttura di relazione che esiste fra due variabili qualitative misurate su scala nominale o su scala ordinale: lanalisi porta ad evidenziare eventuali dipendenze fra le due variabili in esame mediante opportune rappresentazioni grafiche della tabella di contingenza. Uno degli obiettivi dellACS quello di descrivere le relazioni fra due variabili qualitative, rappresentate in una tabella di contingenza, in uno spazio di dimensione ridotta, descrivendo simultaneamente le associazioni fra le categorie (modalit) delle due variabili.
Data la distribuzione congiunta di due caratteri di natura qualsiasi i quesiti sono: esiste dipendenza o indipendenza fra i due caratteri? se esiste dipendenza, come sono associate le modalit dei due caratteri? Per verificare lesistenza della dipendenza fra le due variabili si pu utilizzare lindice chi-quadro. In caso di dipendenza il modo in cui le modalit si associano pu essere studiato tramite lACS.
15
Consideriamo la tabella in cui sono riportate le modalit di acquisto per professione di 426 clienti di un supermercato.
> > > >
dati <- read.csv("tav0701.csv",header=T,sep=";") dd <- as.matrix(dati[,-1]) # trasformo il file importato in una matrice rownames(dd) <- dati[,1] addmargins(dd) # tabella con marginali (totali di riga e colonna)
lastminute giornaliero ricorrenze settimanale Sum 1 3 0 0 4 20 41 4 17 82 2 0 0 3 5 0 2 0 2 4 1 2 1 1 5 19 17 6 21 63 0 0 1 2 3 4 10 0 6 20 4 3 1 7 15 15 28 4 14 61 19 61 16 31 127 19 7 3 1 30 1 3 0 3 7 105 177 36 108 426
artigiano casalinga commerciante dirigente disoccupato impiegato imprenditore insegnante libprof operio pensionato studente altro Sum
Esiste una relazione tra la professione ed il modo con cui gli intervistati effettuano gli acquisti?
> chisq.test(dd)
Pearson's Chi-squared test data: dd X-squared = 70.6546, df = 36, p-value = 0.0004911 Warning message: In chisq.test(dd) : L'approssimazione al Chi-quadrato potrebbe essere inesatta
16
Una prima analisi dei profili (frequenze relative) di riga e di colonna pu consentire di individuare comportamenti specifici, ad esempio gli studenti, rispetto alle altre professioni, hanno una tendenza maggiore ad utilizzare il supermercato per effettuare acquisti last minute, mentre commercianti, imprenditori e dirigenti vi ricorrono per gli acquisti settimanali. Osservando i profili di colonna si registra, tra coloro che effettuano acquisti giornalieri, un peso maggiore rispetto alla media, delle casalinghe e dei pensionati.
# costruzione tabella con profili di colonna > dd2 <- addmargins(dd,2) > round(addmargins(prop.table(dd2,2),1),4)
artigiano casalinga commerciante dirigente disoccupato impiegato imprenditore insegnante libprof operaio pensionato studente altro Sum lastminute giornaliero ricorrenze settimanale Sum 0.0095 0.0169 0.0000 0.0000 0.0094 0.1905 0.2316 0.1111 0.1574 0.1925 0.0190 0.0000 0.0000 0.0278 0.0117 0.0000 0.0113 0.0000 0.0185 0.0094 0.0095 0.0113 0.0278 0.0093 0.0117 0.1810 0.0960 0.1667 0.1944 0.1479 0.0000 0.0000 0.0278 0.0185 0.0070 0.0381 0.0565 0.0000 0.0556 0.0469 0.0381 0.0169 0.0278 0.0648 0.0352 0.1429 0.1582 0.1111 0.1296 0.1432 0.1810 0.3446 0.4444 0.2870 0.2981 0.1810 0.0395 0.0833 0.0093 0.0704 0.0095 0.0169 0.0000 0.0278 0.0164 1.0000 1.0000 1.0000 1.0000 1.0000
17
Rows: name 1 | artg 2 | csln 3 | cmmr 4 | drgn 5 | dscc 6 | impg 7 | impr 8 | insg 9 | lbpr 10 | oper 11 | pnsn 12 | stdn 13 | altr Columns: name 1 | lstm 2 | grnl 3 | rcrr 4 | sttm
| | | | | | | | | | | | |
qlt 927 710 842 780 15 999 735 217 942 698 667 987 526
| | | | | | | | | | | | |
k=1 -15 13 -256 641 48 -117 528 150 -2 5 202 -928 302
cor ctr k=2 cor ctr 0 0 | -750 926 96 | 4 0 | -170 706 101 | 61 9 | 913 780 178 | 699 46 | 218 81 8 | 13 0 | -19 2 0 | 152 24 | 276 847 205 | 135 23 | 1114 600 159 | 189 13 | -58 28 3 | 0 0 | 528 942 179 | 3 0 | -88 696 20 | 593 145 | -72 75 28 | 977 721 | -95 10 12 | 367 18 | 199 159 12 |
Il primo elemento da analizzare nelloutput dellAC costituito dallinerzia spiegata. La tabella Principal inertias riporta gli autovalori di ciascuna componente, ma soprattutto la quota % di inerzia spiegata e la quota cumulata. Nellesempio si osserva che la prima componente spiega il 50.7% della variabilit e, congiuntamente alla seconda componente, arrivano a spiegare l83.8% dellinerzia. Nel considerare le prime due componenti si ha quindi una ridotta perdita di informazione. Definita la quota di informazione rappresentata dalle componenti occorre valutare il ruolo svolto dai singoli punti/profili nella determinazione delle componenti. Le colonne k=1 e k=2 riportano le coordinate standard dei punti rispettivamente sulla prima e sulla seconda componente. I punti con valori pi alti in termini assoluti sono quelli che maggiormente si discostano dal profilo medio. Nellesempio, i profili riga con i valori maggiori sulla prima componente sono costituiti da un lato dagli studenti e dallaltro dai dirigenti. I profili che presentano invece coordinate prossime allo 0 sono invece da ritenere sostanzialmente uguali al profilo medio.
= = = = = = =
| | | |
| | | |
| | | |
massa qualit della rappresentazione bidimensionale (cor1+cor2) inerzia coordinate I componente coordinate II componente contributi relativi (quanto un punto ben rappresentato sul piano fattoriale) contributi assoluti (quanta parte ha avuto una data modalit nel determinare la direzione dellasse fattoriale)
18
Altro elemento da valutare il contributo (ctr) fornito da ciascun punto allinerzia della dimensione. La prima dimensione, rispetto ai profili di riga, caratterizzata da un alto contributo da parte degli studenti e, anche se in misura minore, dei pensionati. La seconda dimensione invece contraddistinta da forti contributi da parte di impiegati, lib.prof. e commercianti. Rispetto alle colonne la prima componente si segnala per il contributo degli acquisti allultimo minuto, mentre la seconda per gli acquisti pianificati, giornalieri e settimanali (anche se i segni delle coordinate sono diversi). Ulteriore aspetto da analizzare sono i contributi relativi (cor) . Esprimono quanto un punto ben rappresentato su ogni asse. Rispetto alla prima dimensione osserviamo che artigiani e casalinghe hanno contributi relativi quasi nulli, mentre risultano ben rappresentati sul secondo asse. La somma dei contributi relativi, relativamente alle dimensioni considerate (in questo caso 2) esprime la qualit (qlt) della rappresentazione di un punto/profilo nello spazio fattoriale considerato (nellesempio il piano). Tra i profili di riga registriamo un valore molto ridotto di questo parametro per i disoccupati, mentre per le colonne vi sono difficolt nella rappresentazione sul piano degli acquisti nei casi di ricorrenze.
Lanalisi del biplot consente di valutare in primo luogo le distanze dei punti riga (colonna) tra di loro (studenti e dirigenti si trovano contrapposti rispetto alla prima componente, oppure, tra le colonne, acquisti giornalieri e settimanali). Inoltre si possono trarre indicazioni dalla vicinanza tra punti riga e colonna. Gli acquisti last minute sono vicini agli studenti, questa prossimit indica che allincrocio tra questi due caratteri, nella tabella di contingenza, si ha una frequenza relativa non modesta. 19
> biplot(ca.ma2)
20
> ca.ma3$col
$coord Dim 1 Dim 2 lastminute 0.50109731 0.02021850 giornaliero -0.16109200 -0.24121807 ricorrenze -0.03792857 0.09652760 settimanale -0.21052320 0.34349687 $contrib Dim 1 Dim 2 lastminute 73.6524740 0.1832719 giornaliero 12.8314315 43.9745768 ricorrenze 0.1446736 1.4322350 settimanale 13.3714210 54.4099163 $cos2 Dim 1 lastminute 0.991860750 giornaliero 0.304586477 ricorrenze 0.004850182 settimanale 0.261348748 $inertia lastminute giornaliero 0.06239835 0.03539982 Dim 2 0.001614746 0.682939660 0.031414358 0.695770607
contributo assoluto
contributo relativo
21
profili di riga
$cos2 artigiano casalinga commerciante dirigente disoccupato impiegato imprenditore insegnante libprof operaio pensionato studente altro Dim 1 3.889186e-04 4.267905e-03 6.115856e-02 6.989666e-01 1.289675e-02 1.518982e-01 1.347005e-01 1.891194e-01 1.618117e-05 2.505558e-03 5.926272e-01 9.770475e-01 3.668920e-01 Dim 2 0.926153803 0.705691905 0.780481858 0.080927398 0.002007813 0.847242502 0.599995089 0.027929039 0.941841436 0.695918180 0.074775525 0.010336406 0.159240622
$inertia artigiano casalinga commerciante 0.005703145 0.007841851 0.012548625 impiegato imprenditore insegnante 0.013290405 0.014562685 0.005585945 pensionato studente altro 0.020538984 0.062050487 0.004097304
22
> plot(ca.ma3)
23
24
Analisi delle Corrispondenze Multiple In unindagine sono stati rilevate le abitudini sul consumo di alcolici da parte della popolazione tra i 18 e 40 anni. > dati <- read.table("giovaniBere.txt",header=T)
> str(dati)
Il data frame in cui sono archiviate le informazioni dati con le seguenti caratteristiche:
'data.frame': 2001 obs. of 9 variables: $ ETA : int 26 27 31 20 18 32 22 31 36 24 ... $ CLETA: Factor w/ 4 levels "(25,30]","(30,35]",..: 1 1 2 4 4 2 4 2 3 4 ... $ SEX : Factor w/ 2 levels "Femmina","Maschio": 2 2 1 1 2 2 1 1 1 2 ... $ ZON : Factor w/ 4 levels "Centro","Nord-Occidentale",..: 4 4 1 4 1 1 1 3 3 2 ... $ CON : Factor w/ 4 levels "Casalinga","Disoccupato",..: 4 4 4 4 4 3 4 3 1 3 ... $ B : Factor w/ 4 levels "1+BiccGio","NoConsumo",..: 4 3 2 3 4 3 3 2 2 2 ... $ V : Factor w/ 4 levels "1+BiccGio","NoConsumo",..: 4 2 1 3 3 3 2 3 2 2 ... $ A : Factor w/ 4 levels "1+BiccSett","eccezionalmente",..: 3 3 3 3 2 3 4 3 3 3 ... $ Beve : Factor w/ 2 levels "Beve","NoBeve": 2 1 1 1 1 1 1 1 2 2 ...
> head(dati)
1 2 3 4 5 6 ETA 26 27 31 20 18 32 CLETA (25,30] (25,30] (30,35] [18,25] [18,25] (30,35] SEX ZON CON B V A Beve Maschio Sud-Isole Studente stagionalmente stagionalmente NoConsumo NoBeve Maschio Sud-Isole Studente raramente NoConsumo NoConsumo Beve Femmina Centro Studente NoConsumo 1+BiccGio NoConsumo Beve Femmina Sud-Isole Studente raramente raramente NoConsumo Beve Maschio Centro Studente stagionalmente raramente eccezionalmente Beve Maschio Centro Occupato raramente raramente NoConsumo Beve
consumo di Birra: B
B_1+BiccGio B_raramente B_stagionalmente B_NoConsumo V_1+BiccGio V_raramente V_stagionalmente V_NoConsumo A_1+BiccSett A_raramente A_eccezionalmente A_NoConsumo 1 bicchiere o pi al giorno pi raramente solo stagionalmente non ne consuma 1 bicchiere o pi al giorno pi raramente solo stagionalmente non ne consuma 1 bicchiere o pi alla settimana pi raramente solo eccezionalmente non ne consuma
Sesso: SEX Maschio Femmina Classe di et: CLETA [18,25] (25,30] (30,35] (35,40]
Area geografica: ZON Nord-Occidentale Nord-Orientale Centro Sud-Isole Condizione lavorativa: CON Occupato Disoccupato Casalinga Studente
consumo di Vino: V
Abitudine al bere: Beve NoBeve non beve o beve solo eccezionalmente o stagionalmente Beve beve anche solo qualche volta almeno uno degli alcolici
25
Utilizzando una analisi delle corrispondenze multiple per studiare le relazioni tra le tre variabili relative al consumo di alcolici si osserva in primo luogo che le prime due componenti spiegano oltre il 90% dellinerzia, che ci porta a ritenere minima la perdita di informazione nel rappresentare le relazioni tra le diverse modalit su un piano. Per quanto riguarda la caratterizzazione degli assi osserviamo che il primo contraddistinto da coordinate positive dei profili relativi al non consumo (in particolare il non consumo di birra presenta anche il maggior contributo assoluto); a questi si contrappongono con valori negativi i profili riguardanti il consumo di alcolici. In relazione al secondo asse si evidenzia invece il ruolo svolto dalle modalit relative ai maggiori consumi (oltre 1 bicchiere) sia in termini di coordinate che di contributi (assoluti e relative)
Columns: 1 2 3 4 5 6 7 8 9 10 11 12 name mass | B_1+BiccGio | 24 | B_raramente | 134 | B_stagionalmente | 49 | B_NoConsumo | 126 | V_1+BiccGio | 52 | V_raramente | 105 | V_stagionalmente | 23 | V_NoConsumo | 153 | A_1+BiccSett | 25 | A_raramente | 48 | A_eccezionalmente | 82 | A_NoConsumo | 178 qlt 620 617 107 644 654 621 213 649 656 662 686 693 inr 70 105 28 167 60 102 31 153 67 64 45 107 | | | | | | | | | | | | k=1 -649 -479 -38 647 -496 -530 -240 567 -743 -661 -366 455 cor ctr k=2 cor ctr 295 20 | -682 326 59 | 589 59 | 105 28 8 | 5 0 | 169 102 7 | 641 102 | -45 3 1 | 428 25 | -360 226 35 | 582 57 | 137 39 10 | 87 3 | 289 126 10 | 648 95 | -16 0 0 | 421 27 | -556 236 41 | 662 41 | 8 0 0 | 495 21 | 227 191 22 | 690 71 | -27 2 1 |
26
Graficamente si evidenziano tre aree, a destra sul primo asse il non consumo, mentre a sinistra, tra i consumatori vi una zona dei consumatori saltuari, collocata positivamente sulla seconda componente, mentre gli abituali si posizionano in basso a sinistra. Altro elemento che si evince il comportamento similare nel consumo dei tre tipi di alcolici: a destra troviamo gli astemi che non bevono nessun tipo di alcolico, mentre in basso a sinistra ci sono gli alcolizzati che invece bevono pi frequentemente tutti e tre i tipi di alcolici.
27
Analisi delle Corrispondenze Multiple inoltre possibile verificare come le variabili socio-demografiche si collochino rispetto alle variabili sul consumo. A questo riguardo possono essere inserite, nellanalisi delle corrispondenze multiple, come variabili supplementari, cio variabili che non contribuiscono alla costruzione delle componenti, ma semplicemente vengono descritte rispetto alle componenti create rispetto alle variabili sul consumo di alcolici.
> dd <- dati[c("B","V","A","CLETA")] > tt <- mjca(dd, nd = 2, lambda = "adjusted",ps="_", supcol = 4)
In questo caso, dal data.frame dati, oltre alle variabili riguardanti il consumo di alcolici (B, V, A) viene estratta la classe di et. Nel comando mjca viene specificato con lopzione supcol che la variabile supplementare la quarta (la classe di et).
28
> summary(tt) Principal inertias (eigenvalues): value % cum% 0.269839 81.6 81.6 0.037393 11.3 92.9 0.016788 5.1 98.0 -------- ----Total: 0.330767 dim 1 2 3 scree plot ************************* **
Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 name mass | B_1+BiccGio | 24 | B_raramente | 134 | B_stagionalmente | 49 | B_NoConsumo | 126 | V_1+BiccGio | 52 | V_raramente | 105 | V_stagionalmente | 23 | V_NoConsumo | 153 | A_1+BiccSett | 25 | A_raramente | 48 | A_eccezionalmente | 82 | A_NoConsumo | 178 | (*)CLETA.[18,25] | <NA> | (*)CLETA.(25,30] | <NA> | (*)CLETA.(30,35] | <NA> | (*)CLETA.(35,40] | <NA> qlt 620 617 107 644 654 621 213 649 656 662 686 693 2 8 3 4 inr 36 54 14 86 31 52 16 79 35 33 23 55 <NA> <NA> <NA> <NA> | | | | | | | | | | | | | | | | k=1 -649 -479 -38 647 -496 -530 -240 567 -743 -661 -366 455 14 -29 -12 16 cor 295 589 5 641 428 582 87 648 421 662 495 690 0 1 0 1 ctr 20 59 0 102 25 57 3 95 27 41 21 71 <NA> <NA> <NA> <NA> k=2 cor ctr | -682 326 59 | | 105 28 8 | | 169 102 7 | | -45 3 1 | | -360 226 35 | | 137 39 10 | | 289 126 10 | | -16 0 0 | | -556 236 41 | | 8 0 0 | | 227 191 22 | | -27 2 1 | | 22 1 <NA> | | 64 7 <NA> | | -35 3 <NA> | | -39 3 <NA> |
Linerzia spiegata rimane la medesima, cos come i parametri relativi alle variabili sul consumo d alcolici, essendo lanalisi effettuata sulle medesime variabili del modello precedente, vengono invece aggiunte le coordinate ed i contributi relativi riguardo alla variabile et. Si pu osservare che le modalit di questultima variabile sono per tutte prossime allorigine e con contributi relativi molto bassi; non sembra quindi vi sia una relazione significativa tra le modalit di consumo di alcolici e let.
29
Il grafico mostra come tutte le classi di et siano vicine al centro, non evidenziando quindi nessuna vicinanza con comportamenti specifici nelle modalit di consumo degli alcolici.
30
dd <- dati[c("B","V","A","SEX")] tt <- mjca(dd, lambda = "adjusted",ps="_", supcol = 4) plot(tt,what=c("none","all"),mass = c(F, TRUE),labels=c(0,2),cex=0.5) summary(tt)
Principal inertias (eigenvalues): value % cum% 0.269839 81.6 81.6 0.037393 11.3 92.9 0.016788 5.1 98.0 -------- ----Total: 0.330767 dim 1 2 3 scree plot ************************* **
Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 name mass | B_1+BiccGio | 24 | B_raramente | 134 | B_stagionalmente | 49 | B_NoConsumo | 126 | V_1+BiccGio | 52 | V_raramente | 105 | V_stagionalmente | 23 | V_NoConsumo | 153 | A_1+BiccSett | 25 | A_raramente | 48 | A_eccezionalmente | 82 | A_NoConsumo | 178 | (*)SEX.Maschio | <NA> | (*)SEX.Femmina | <NA> qlt inr 620 47 | 617 70 | 107 18 | 644 111 | 654 40 | 621 68 | 213 21 | 649 102 | 656 45 | 662 43 | 686 30 | 693 71 | 421 <NA> | 313 <NA> | k=1 -649 -479 -38 647 -496 -530 -240 567 -743 -661 -366 455 -276 291 cor ctr k=2 cor ctr 295 20 | -682 326 59 | 589 59 | 105 28 8 | 5 0 | 169 102 7 | 641 102 | -45 3 1 | 428 25 | -360 226 35 | 582 57 | 137 39 10 | 87 3 | 289 126 10 | 648 95 | -16 0 0 | 421 27 | -556 236 41 | 662 41 | 8 0 0 | 495 21 | 227 191 22 | 690 71 | -27 2 1 | 377 <NA> | -94 44 <NA> | 281 <NA> | 99 33 <NA> |
Si osserva invece una maggiore relazione tra il sesso e le modalit di consumo di alcolici. I contributi relativi, soprattutto con riferimento alla prima componente sono soddisfacenti, e si nota come le coordinate dei maschi presentino valori negativi, contrapponendosi a quelli delle donne. Le donne sembrano quindi pi vicine alla zona del non consumo, a differenza degli uomini che si posizionano a sinistra sul primo asse.
31
Graficamente risulta pi chiara questa distanza tra i due generi con riferimento al consumo di alcolici. Da sottolineare in particolare la vicinanza tra femmine e zona degli astemi, mentre i maschi si collocano lontano da tale zona.
Analisi simili possono poi essere effettuate per le altre variabili. Si potrebbe anche verificare la posizione di tutte le variabili socio-demografice per mezzo di ununica analisi con il comando:
dd <- dati[,c("B","V","A","CLETA","CON","ZON","SEX")] tt <- mjca(dd, nd = 2, lambda = "adjusted",ps="_", supcol = c(4,5,6,7))
ma il grafico potrebbe risultare di difficile lettura a causa dellelevato numero di punti rappresentati.
32
Alberi di classificazione Gli alberi di classificazione rientrano tra le tecniche statistiche di classificazione supervisionata, cio quelle in cui si richiede a priori la conoscenza dei dati. Data quindi una variabile Y di tipo nominale o ordinale che esprime la categoria di appartenenza di una unit ed un set di variabili esplicative (X1,,Xp) rilevate sulle medesime unit, lobiettivo consiste nel definire un insieme di regole che, sfruttando la relazione tra classe di appartenenza e variabili esplicative, consentano di assegnare a queste classi nuove unit per le quali sono note solo le variabili esplicative.
Partendo dallinsieme di unit osservate per cui sono note Y e X1,,Xp si utilizza un insieme di record, detto training set, per determinare linsieme di regole che consentono di assegnare una unit ad una classe di Y. Per validare il modello ottenuto si ricorre sempre un sottoinsieme delle unit osservate, il test set, per le quali viene considerata ignota la classe di appartenenza allo scopo di valutare come si comporta il classificatore, cio se predice in la classe corretta (essendo in realt nota la modalit di Y). Si utilizza quindi il training set per apprendere il modello dei dati ed il test set per validarlo.
Le finalit principali di un albero di classificazione possono quindi essere: 1. Individuazione delle determinanti della variabile dipendente: lanalisi individua le variabili esplicative che meglio spiegano la variabile dipendente. La segmentazione permette, cio di individuare le variabili esplicative rilevanti allinterno di sottoinsiemi di unit via via pi chiaramente definiti. Produzione di regole di previsione o di classificazione: sulla base del campione osservato si crea una regola di previsione del valore della variabile dipendente di un nuovo soggetto per il quale si siano osservate le variabili esplicative.
33
2.
Alberi di classificazione In R la funzione per la costruzione di un albero di classificazione rpart, e richiede lomonima libreria.
Riprendendo lesempio precedente sul comportamento dei giovani nel consumo di alcolici, ed utilizziamo come dipendente la variabile Beve (0=NoBeve se non consuma alcolici di nessun tipo o li consuma solo saltuariamente, 1=Beve se beve almeno uno dei tipi di alcolici considerati con una frequenza maggiore) e verifichiamo se, in base alle variabili socio-demografiche rilevate, possibile classificare i giovani in bevitori o non bevitori.
> library(rpart) > fit <- rpart(Beve~SEX+CLETA+CON+ZON, method="class",xval=20, minsplit=50 ,cp=0.001)
Il primo argomento una formula (Beve~SEX+CLETA+CON+ZON) che segue con la consueta sintassi in cui a sinistra della ~ c la variabile che rappresenta le classi e a destra ci sono le variabili esplicative. L'argomento method specifica il metodo da usare, classificazione nel nostro caso. Va tenuto presente che la funzione rpart serve anche per stimare alberi di regressione, quindi opportuno specificare il metodo, se non viene fatto viene assunto class se la variabile dipendente un fattore, anova se la dipendente continua. L'argomento xval specifica quante validazioni incrociate vengono fatte per la stima dell'errore. Gli argomenti minsplit e cp sono legati alla profondit massima dell'albero da crescere, in particolare minsplit il numero minimo di osservazioni che devono essere presenti in un nodo per considerarne la suddivisione, e cp, parametro di complessit, la minima diminuzione dell'errore che deve produrre una suddivisione per essere presa in considerazione. Si pu anche scegliere il numero minimo di osservazioni in un nodo terminale con l'argomento minbucket.
34
Alberi di classificazione
il comando plot disegna l'albero senza testo, compress=TRUE consente di avere una forma pi compatta del grafico, con uniform=TRUE la spaziatura verticale tra i nodi costante, in caso contrario i nodi vengono distanziati in maniera proporzionale allerrore di adattamento; branch determina linclinazione dei rami, se uguale ad 1 i rami sono verticali il comando text aggiunge le condizioni usate in corrispondenza a ciascuna ramificazione e le classi prevalenti per i nodi terminali. Inoltre, se use.n=TRUE vengono stampate le frequenze assolute delle classi nei nodi terminali; se all=TRUE le classi prevalenti e le frequenze delle classi vengono riportate per ogni nodo e non solo per i nodi terminali; pretty=0 consente di riportare per esteso le modalit di split, se non indicato vengono utilizzate le lettere come abbreviazione dei livelli del fattore di suddivisione; fancy=TRUE marca i nodi con delle ellissi e le foglie con dei rettangoli e riporta sui rami i rispettivi criteri di split.
35
Alberi di classificazione
36
Alberi di classificazione
Il metodo print produce una descrizione testuale dell'albero, in cui per ogni nodo riportata la condizione per la suddivisione, il numero di osservazioni, la perdita, la classe prevalente e le probabilit a posteriori.
> print(fit) n= 2001 node), split, n, loss, yval, (yprob) * denotes terminal node
Nel nodo radice ci sono 775 giovani che non bevono (su 2001) con una percentuale di bevitori del 61.3%.
Il secondo nodo, definito dai maschi, costituito da 1) root 2001 775 Beve (0.6126937 0.3873063) 1026 unit, con una 2) SEX=Maschio 1026 244 Beve (0.7621832 0.2378168) * 3) SEX=Femmina 975 444 NoBeve (0.4553846 0.5446154) percentuale di bevitori del 6) ZON=Centro,Nord-Occidentale,Nord-Orientale 567 271 Beve (0.5220459 0.4779541) 76% (244 non bevono); 12) CON=Occupato,Studente 440 202 Beve (0.5409091 0.4590909) questo nodo rappresenta 24) ZON=Nord-Orientale 146 61 Beve (0.5821918 0.4178082) una foglia dellalbero ed 48) CLETA=(30,35],[18,25] 77 26 Beve (0.6623377 0.3376623) * indicato con *. 49) CLETA=(25,30],(35,40] 69 34 NoBeve (0.4927536 0.5072464) 98) CLETA=(25,30] 31 15 Beve (0.5161290 0.4838710) * Pertanto la prima regola 99) CLETA=(35,40] 38 18 NoBeve (0.4736842 0.5263158) * di classificazione 25) ZON=Centro,Nord-Occidentale 294 141 Beve (0.5204082 0.4795918) identifica i maschi nella 50) CLETA=(25,30],(30,35],(35,40] 213 97 Beve (0.5446009 0.4553991) * classe dei bevitori. 51) CLETA=[18,25] 81 37 NoBeve (0.4567901 0.5432099) *
13) CON=Casalinga,Disoccupato 127 58 NoBeve (0.4566929 0.5433071) 26) CLETA=(25,30],(35,40] 69 33 Beve (0.5217391 0.4782609) 52) CON=Disoccupato 29 12 Beve (0.5862069 0.4137931) * 53) CON=Casalinga 40 19 NoBeve (0.4750000 0.5250000) * 27) CLETA=(30,35],[18,25] 58 22 NoBeve (0.3793103 0.6206897) * 7) ZON=Sud-Isole 408 148 NoBeve (0.3627451 0.6372549) *
Se consideriamo invece il ramo di destra, la cui condizione SEX=Femmina, vi troviamo 975 unit, in cui la maggioranza non beve (54.5%), questo nodo ulteriormente suddiviso in base alla zona.
Prendendo ancora il ramo di destra ZON=Sud-Isole (nodo 7) abbiamo 408 unit delle quali solo 148 bevono, quindi con una prevalenza di non bevitrici (63.7%); abbiamo un gruppo non ulteriormente suddivisibile che costituisce un nodo terminale (foglia). 37
Alberi di classificazione
> summary(fit)
Call: rpart(formula = Beve ~ SEX + CLETA + CON + ZON, method = "class", xval = 20, minsplit = 50, cp = 0.001) n= 2001 CP nsplit rel error xerror xstd 0.112258065 0 1.0000000 1.0000000 0.02811712 0.032258065 1 0.8877419 0.8877419 0.02741583 0.014193548 2 0.8554839 0.8554839 0.02716812 0.004516129 3 0.8412903 0.8774194 0.02733887 0.003870968 5 0.8322581 0.8838710 0.02738722 0.002580645 6 0.8283871 0.8735484 0.02730946 0.001290323 7 0.8258065 0.8709677 0.02728968 0.001000000 9 0.8232258 0.8941935 0.02746283
1 2 3 4 5 6 7 8
Node number 1: 2001 observations, complexity param=0.1122581 predicted class=Beve expected loss=0.3873063 class counts: 1226 775 probabilities: 0.613 0.387 left son=2 (1026 obs) right son=3 (975 obs) Primary splits: SEX splits as RL, improve=94.111280, (0 missing) CON splits as RRLR, improve=21.551660, (0 missing) ZON splits as LLLR, improve=12.147350, (0 missing) CLETA splits as RLLR, improve= 1.536986, (0 missing) Surrogate splits: CON splits as RLLL, agree=0.596, adj=0.171, (0 split) CLETA splits as LLRL, agree=0.529, adj=0.034, (0 split) Node number 2: 1026 observations predicted class=Beve expected loss=0.2378168 class counts: 782 244 probabilities: 0.762 0.238 Node number 3: 975 observations, complexity param=0.03225806 predicted class=NoBeve expected loss=0.4553846 class counts: 444 531 probabilities: 0.455 0.545 left son=6 (567 obs) right son=7 (408 obs) Primary splits: ZON splits as LLLR, improve=12.0421600, (0 missing) CON splits as RRLL, improve= 5.8285320, (0 missing) CLETA splits as RRLR, improve= 0.6072109, (0 missing) Surrogate splits: CON splits as RRLL, agree=0.652, adj=0.169, (0 split)
Informazioni maggiori sulla costruzione dellalbero si ottengono con il comando summary, che fornisce indicazioni sullerrore di classificazione per mezzo della tavola che riporta per ogni split il livello di complessit CP e lerrore, riporta inoltre per ogni nodo, il numero di unit, il criterio di suddivisione e le probabilit di appartenere ad una classe, le possibili variabili di suddivisione con i rispettivi livelli di miglioramento (nel primo nodo la variabile SEX, rispetto a cui stata effettuata la suddivisione, porta ad un miglioramento pari a 94, la seconda variabile in termini di importanza rispetto a cui si sarebbe potuta suddividere la popolazione CON, ma questa avrebbe condotto ad un miglioramento della classificazione molto inferiore).
. . . . .
38
Alberi di classificazione
Informazioni sui nodi possono essere desunte anche per mezzo del comando:
> fit$frame
1 2 3 6 12 24 48 49 98 99 25 50 51 13 26 52 53 27 7 var n wt dev yval complexity ncompete nsurrogate SEX 2001 2001 775 1 0.112258065 3 2 <leaf> 1026 1026 244 1 0.000000000 0 0 ZON 975 975 444 2 0.032258065 2 1 CON 567 567 271 1 0.014193548 2 0 ZON 440 440 202 1 0.004516129 2 0 CLETA 146 146 61 1 0.001290323 1 1 <leaf> 77 77 26 1 0.000000000 0 0 CLETA 69 69 34 2 0.001290323 0 0 <leaf> 31 31 15 1 0.001000000 0 0 <leaf> 38 38 18 2 0.001000000 0 0 CLETA 294 294 141 1 0.004516129 2 1 <leaf> 213 213 97 1 0.000000000 0 0 <leaf> 81 81 37 2 0.000000000 0 0 CLETA 127 127 58 2 0.003870968 2 0 CON 69 69 33 1 0.002580645 2 1 <leaf> 29 29 12 1 0.001000000 0 0 <leaf> 40 40 19 2 0.001000000 0 0 <leaf> 58 58 22 2 0.000000000 0 0 <leaf> 408 408 148 2 0.000000000 0 0 yval2.1 yval2.2 1.0000000 1226.0000000 1.0000000 782.0000000 2.0000000 444.0000000 1.0000000 296.0000000 1.0000000 238.0000000 1.0000000 85.0000000 1.0000000 51.0000000 2.0000000 34.0000000 1.0000000 16.0000000 2.0000000 18.0000000 1.0000000 153.0000000 1.0000000 116.0000000 2.0000000 37.0000000 2.0000000 58.0000000 1.0000000 36.0000000 1.0000000 17.0000000 2.0000000 19.0000000 2.0000000 22.0000000 2.0000000 148.0000000 yval2.3 775.0000000 244.0000000 531.0000000 271.0000000 202.0000000 61.0000000 26.0000000 35.0000000 15.0000000 20.0000000 141.0000000 97.0000000 44.0000000 69.0000000 33.0000000 12.0000000 21.0000000 36.0000000 260.0000000 yval2.4 0.6126937 0.7621832 0.4553846 0.5220459 0.5409091 0.5821918 0.6623377 0.4927536 0.5161290 0.4736842 0.5204082 0.5446009 0.4567901 0.4566929 0.5217391 0.5862069 0.4750000 0.3793103 0.3627451 yval2.5 0.3873063 0.2378168 0.5446154 0.4779541 0.4590909 0.4178082 0.3376623 0.5072464 0.4838710 0.5263158 0.4795918 0.4553991 0.5432099 0.5433071 0.4782609 0.4137931 0.5250000 0.6206897 0.6372549
numero del nodo var = variabile di split n = numero di casi wt = il peso degli eventi nel nodo dev = il numero di eventi in minoranza nel nodo yval = la classe complexity = la complessit ncompete = il numero di competitori nsurrogate = il numero di surrogati yval2.1 = la classe yval2.2 e yval2.3 = il numero di casi per classe yval2.4 e yval2.5 = la probabilit delle classi
39
Alberi di classificazione
Una sintesi del ruolo delle diverse variabili in ogni suddivisione invece desumibile con:
> fit$splits
SEX CON ZON CLETA CON CLETA ZON CON CLETA CON CON ZON CLETA ZON CLETA CON CLETA CON CON CLETA CLETA ZON CON CON CLETA ZON CON CON ZON CLETA ZON count ncat improve index adj 2001 2 94.111281777 1 0.00000000 2001 4 21.551664214 2 0.00000000 2001 4 12.147346878 3 0.00000000 2001 4 1.536986322 4 0.00000000 0 4 0.596201899 5 0.17128205 0 4 0.529235382 6 0.03384615 975 4 12.042156943 7 0.00000000 975 4 5.828532005 8 0.00000000 975 4 0.607210932 9 0.00000000 0 4 0.652307692 10 0.16911765 567 4 1.397958841 11 0.00000000 567 4 1.032569899 12 0.00000000 567 4 0.131595402 13 0.00000000 440 4 0.744773426 14 0.00000000 440 4 0.358021557 15 0.00000000 440 4 0.099541375 16 0.00000000 146 4 2.093085196 17 0.00000000 146 4 0.007166946 18 0.00000000 0 4 0.657534247 19 0.27536232 69 4 0.061514234 20 0.00000000 294 4 0.904989017 21 0.00000000 294 4 0.220001587 22 0.00000000 294 4 0.200472411 23 0.00000000 0 4 0.867346939 24 0.51851852 127 4 1.278494611 25 0.00000000 127 4 0.188457212 26 0.00000000 127 4 0.145061328 27 0.00000000 69 4 0.415817091 28 0.00000000 69 4 0.389030975 29 0.00000000 69 4 0.214269788 30 0.00000000 0 4 0.608695652 31 0.06896552
Nel primo nodo SEX la variabile esplicativa adottata, ed quella che fornisce il maggior grado di miglioramento rispetto allimpurit iniziale, seguono come variabili competitrici nella possibilit di suddividere il nodo radice, in ordine di importanza, CON (condizione professionale), ZON (zona geografica) e CLETA (classe di et). CON e CLETA sono invece possibili variabili surrogato che potrebbero essere utilizzate al posto di SEX nel caso vi fossero unit con dato mancante rispetto a questultima variabile.
40
Alberi di classificazione
Le stime dell'errore di classificazione per i diversi alberi sono visualizzate graficamente e testualmente con i comandi:
> plotcp(fit) > printcp(fit)
Classification tree: rpart(formula = Beve ~ SEX + CLETA + CON + ZON, method = "class", xval = 20, minsplit = 50, cp = 0.001) Variables actually used in tree construction: [1] CLETA CON SEX ZON Root node error: 775/2001 = 0.38731 n= 2001 CP nsplit rel error 0.1122581 0 1.00000 0.0322581 1 0.88774 0.0141935 2 0.85548 0.0045161 3 0.84129 0.0038710 5 0.83226 0.0025806 6 0.82839 0.0012903 7 0.82581 0.0010000 9 0.82323 xerror 1.00000 0.88774 0.85548 0.87742 0.88387 0.87355 0.87097 0.89419 xstd 0.028117 0.027416 0.027168 0.027339 0.027387 0.027309 0.027290 0.027463
1 2 3 4 5 6 7 8
41
Alberi di classificazione
Il dato dellerrore relativo consente di identificare il livello di complessit rispetto a cui potare lalbero per ottenere una rappresentazione pi semplificata senza perdite di informazione. Dalla tavola precedente si osserva che il livello minimo di errore relativo si ha in corrispondenza ad un livello di cp pari a 0.01419.
> fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"] [1] 0.01419355
Con i comando prune quindi possibile ridurre la dimensione dellalbero ottenuto in precedenza
> fit.prune <- prune(fit,cp=0.021) > print(fit.prune) n= 2001 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 2001 775 Beve (0.6126937 0.3873063) 2) SEX=Maschio 1026 244 Beve (0.7621832 0.2378168) * 3) SEX=Femmina 975 444 NoBeve (0.4553846 0.5446154) 6) ZON=Centro,Nord-Occidentale,Nord-Orientale 567 271 Beve (0.5220459 0.4779541) 12) CON=Occupato,Studente 440 202 Beve (0.5409091 0.4590909) * 13) CON=Casalinga,Disoccupato 127 58 NoBeve (0.4566929 0.5433071) * 7) ZON=Sud-Isole 408 148 NoBeve (0.3627451 0.6372549) * > plot(fit.prune, compress=TRUE,uniform=T, branch=0.8) > text(fit.prune,pretty=0,all=TRUE,use.n=TRUE, fancy=T, col="blue",cex=0.8) 42
Alberi di classificazione
Come si pu immediatamente notare lalbero che si ottiene notevolmente semplificato; la suddivisione delle femmine avviene per zona, per cui le femmine del sud-isole sono classificate come non bevitrici, mentre quelle delle atre aree vengono suddivise solamente in base alla condizione per cui le studentesse e quelle occupate rientrano nel gruppo di chi fa uso di alcolici, mentre le casalinghe e le disoccupate sono classificate come non bevitrici.
43
Alberi di classificazione
Sulla base del nuovo albero si ottiene una previsione con il comando:
> fit.prune.pred <- predict(fit.prune) > head(fit.prune.pred) Beve NoBeve [1,] 0.7621832 0.2378168 [2,] 0.7621832 0.2378168 [3,] 0.5409091 0.4590909 [4,] 0.3627451 0.6372549 [5,] 0.7621832 0.2378168 [6,] 0.7621832 0.2378168
che assegna ad ogni unit la probabilit di appartenenza alle varie classi, si ottiene invece la previsione della classe con
> dati$classe.Pred <> head(dati) ETA CLETA SEX 1 26 (25,30] Maschio 2 27 (25,30] Maschio 3 31 (30,35] Femmina 4 20 [18,25] Femmina 5 18 [18,25] Maschio 6 32 (30,35] Maschio predict(fit.prune,type="class") ZON Sud-Isole Sud-Isole Centro Sud-Isole Centro Centro CON B V A Beve classe.Pred Studente stagionalmente stagionalmente NoConsumo NoBeve Beve Studente raramente NoConsumo NoConsumo Beve Beve Studente NoConsumo 1+BiccGio NoConsumo Beve Beve Studente raramente raramente NoConsumo Beve NoBeve Studente stagionalmente raramente eccezionalmente Beve Beve Occupato raramente raramente NoConsumo Beve Beve
predict(fit.prune,type="class")
quindi possibile aggiungere una variabile (classe.Pred) a data frame dati in cui indicata la classe di appartenenza prevista in base al sistema di regole definite in base allalbero di classificazione
44
Alberi di classificazione
> attach(dati) > addmargins(table(Beve,classe.Pred)) classe.Pred Beve Beve NoBeve Sum Beve 1020 206 1226 NoBeve 446 329 775 Sum 1466 535 2001 > tpred <- table(Beve,classe.Pred) > sum(diag(tpred))/sum(tpred) [1] 0.6741629
Dalla tabella in cui sono poste a confronto la casse di appartenenza delle unit (Beve) e la classe prevista (classe.Pred) si pu osservare che su 1226 giovani che bevono, il sistema di regole costruite in base allalbero di classificazione definito utilizzando le variabili sociodemografiche, ne classifica come bevitori 1020. Tuttavia tra i 775 non bevitori, ne vengono classificati correttamente 329.
Utilizzando lalbero di classificazione come strumento per descrivere il fenomeno del bere, ed in particolare per capire quale sia linfluenza delle variabili socio-demografiche su tale fenomeno, si pu concludere che queste variabili non sembrano essere in grado di dare una descrizione piena delluso di alcolici da parte dei giovani. Datra parte anche lanalisi delle corrispondenze sulle medesime variabili non aveva fornito indicazioni significative.
45