ESERCITAZIONI R 1 Gestione dati 1 – Caricamento dati > Dati<-read.table("Dataset_220311.csv", header=TRUE, sep=";") > str(Dati) 'data.frame': 42 obs. of 6 variables: $ SESSO: int 2 1 2 2 2 2 1 1 1 2 ... $ ETA : int 26 29 30 28 37 51 24 35 43 17 ... $ REG : int 1 1 1 1 2 2 2 3 3 3 ... $ TIT : int 3 3 4 3 3 3 4 3 2 2 ... $ GV : int 10 14 14 7 14 21 14 16 20 15 ... $ RED : int 900 1200 1200 1000 1400 2000 800 2300 1700 0 ... 2 Gestione dati 2 – Conversione variabili quantitative in fattori > Dati$SESSO<-factor(Dati$SESSO, labels=c("M","F")) > str(Dati) 'data.frame': 42 obs. of 6 variables: $ SESSO: Factor w/ 2 levels "M","F": 2 1 2 2 2 2 1 1 1 2 ... $ ETA : int 26 29 30 28 37 51 24 35 43 17 ... $ REG : int 1 1 1 1 2 2 2 3 3 3 ... $ TIT : int 3 3 4 3 3 3 4 3 2 2 ... $ GV : int 10 14 14 7 14 21 14 16 20 15 ... $ RED : int 900 1200 1200 1000 1400 2000 800 2300 1700 0 ... 3 Gestione dati 3 – Conversione variabili quantitative in fattori > library(Rcmdr) ………. > str(Dati) 'data.frame': 42 obs. of 6 variables: $ SESSO: Factor w/ 2 levels "M","F": 2 1 2 2 2 2 1 1 1 2 ... $ ETA : int 26 29 30 28 37 51 24 35 43 17 ... $ REG : Factor w/ 5 levels "Lazio","Campania",..: 1 1 1 1 2 2 2 3 3 3 ... $ TIT : Factor w/ 4 levels "L. elementare",..: 3 3 4 3 3 3 4 3 2 2 ... $ GV : int 10 14 14 7 14 21 14 16 20 15 ... $ RED : int 900 1200 1200 1000 1400 2000 800 2300 1700 0 ... 4 Gestione dati 4 > names(Dati) [1] "SESSO" "ETA" – Rinominare una variabile e salvare il file di dati attivo "REG" "TIT" "GV" "RED" > names(Dati)[c(5)]<-c("GI_VAC") > str(Dati) 'data.frame': 42 obs. of 6 variables: $ SESSO : Factor w/ 2 levels "M","F": 2 1 2 2 2 2 1 1 1 2 ... $ ETA : int 26 29 30 28 37 51 24 35 43 17 ... $ REG : Factor w/ 5 levels "Lazio","Campania",..: 1 1 1 1 2 2 2 3 3 3 ... $ TIT : Factor w/ 4 levels "Lic. elementare",..: 3 3 4 3 3 3 4 3 2 2 ... $ GI_VAC: int 10 14 14 7 14 21 14 16 20 15 ... $ RED : int 900 1200 1200 1000 1400 2000 800 2300 1700 0 ... > save("Dati", file="C:/Users/Mario/Documents/Dati.rda") (> load("C:/Users/Mario/Documents/Dati.rda")) 5 Analisi monovariata 1 – Distribuzioni di frequenza attach(Dati) > table(REG) REG Lazio Campania Toscana Sicilia Lombardia 11 8 8 7 8 > table(REG)/length(REG) REG Lazio Campania Toscana Sicilia Lombardia 0.2619048 0.1904762 0.1904762 0.1666667 0.1904762 6 Analisi monovariata 2 – Distribuzioni di frequenza e rappresentazioni grafiche > (table(REG)/length(REG))*100 REG Lazio Campania Toscana Sicilia Lombardia 26.19048 19.04762 19.04762 16.66667 19.04762 > pie(table(REG)) 7 Analisi monovariata 3 – Rappresentazioni grafiche > colori=c("red","blue","yellow","green","orange") > pie(table(REG), col=colori, main="Diagramma a torta delle regioni di provenienza") 8 Analisi monovariata 4 – Rappresentazioni grafiche > slices<-c(26,19,19,17,19) > lbs<-c("Lazio","Campania","Toscana","Sicilia","Lombardia") > lbs<-paste(lbs,slices) > lbs<-paste(lbs,"%",sep="") > pie(slices, labels=lbs, col=colori,main="Diagramma a torta delle regioni di provenienza") 9 Analisi monovariata 5 – Rappresentazioni grafiche 10 Analisi monovariata 6 – Rappresentazioni grafiche > library(plotrix) > pie3D(slices,labels=lbs, col=colori, main="Diagramma a torta delle regioni di provenienza") 11 Analisi monovariata 7 – Rappresentazioni grafiche > plot(REG) > plot(REG, col="dark blue", ylim=c(0,12), main="Grafico a barre delle regioni di provenienza") 12 Analisi monovariata 8 – Variabili quantitative > summary(GI_VAC) Min. 1st Qu. Median Mean 3rd Qu. Max. 3.00 12.00 14.00 15.21 19.75 30.00 > mean(GI_VAC) [1] 15.21429 > median(GI_VAC) [1] 14 > min(GI_VAC) [1] 3 13 Analisi monovariata 9 – Variabili quantitative > max(GI_VAC) [1] 30 > range(GI_VAC) [1] 3 30 > quantile(GI_VAC) 0% 25% 50% 75% 100% 3.00 12.00 14.00 19.75 30.00 14 Analisi monovariata 10 – Variabili quantitative > var(GI_VAC) [1] 32.70906 > sd(GI_VAC) [1] 5.719183 > cv(GI_VAC) [1] 0.3714067 #richiede il pacchetto labstatR 15 Analisi monovariata 11 – Variabili quantitative Boxplot > boxplot(GI_VAC, main="Boxplot distribuzione giorni vacanza") 16 Analisi monovariata 12 – Variabili quantitative: aggregazione delle modalità in classi > table(ETA) ETA 10 17 18 19 21 23 24 25 26 27 28 29 30 31 32 34 35 37 39 41 43 44 45 49 51 52 55 59 65 66 74 1 1 1 1 1 2 1 1 1 2 3 1 1 1 1 1 1 3 1 1 2 2 1 1 1 2 1 2 2 1 1 > table(cut(ETA,breaks=c(0,20,40,60,80))) (0,20] (20,40] (40,60] (60,80] 4 21 13 4 > table(cut(ETA,breaks=c(0,20,40,60,80),right=FALSE)) [0,20) [20,40) [40,60) [60,80) 4 21 13 4 17 Analisi monovariata 13 – Variabili quantitative rappresentazioni grafiche > hist(ETA) > hist(ETA,xlab="Età",col="orange", main="Istogramma delle età") 18 Analisi monovariata 14 – Rappresentazioni grafiche > hist(ETA,c(10,20,30,50,80),xlab="Età",col="orange", main="Istogramma delle età") 19 Analisi monovariata 15 – Variabili quantitative: rappresentazioni grafiche Nella precedente espressione, di default le classi sono aperte a sinistra: (a,b] ad eccezione della prima Aggiungendo il parametro right impostato a FALSE le classi sono invece aperte a destra: [a,b) Il comando diventerebbe: > hist(ETA,c(10,20,30,50,80),right=FALSE, xlab="Età",col="orange", main="Istogramma delle età") 20 Analisi monovariata 16 – Variabili quantitative: concentrazione di caratteri trasferibili > table(RED) RED 0 600 800 900 1000 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2300 2600 3000 5 1 1 2 5 5 2 3 1 5 3 1 1 3 1 1 1 1 > gini(RED) #richiede il pacchetto labstatR … $R [1] 0.2827435 …… 21 Analisi monovariata 17 – Variabili quantitative: concentrazione di caratteri trasferibili 22 Analisi bivariata 1 – Tabelle di contingenza >tab1<-table(SESSO, REG) > tab1 REG SESSO Lazio Campania Toscana Sicilia Lombardia M 4 4 6 3 4 F 7 4 2 4 4 23 Analisi bivariata 2 – Tabelle di contingenza > margin.table(tab1, margin=1) SESSO M F 21 21 > margin.table(tab1, margin=2) REG Lazio Campania Toscana Sicilia Lombardia 11 8 8 7 8 > margin.table(tab1) [1] 42 24 Analisi bivariata 3 – Tabelle di contingenza – rappresentazione grafica > barplot(tab1,ylab="Sesso", beside=T, col=c("dark red", "orange"),main="Distribuzione per sesso e per regione di provenienza") > legend("topright",c("M","F"),fill=c("dark red", "orange")) 25 Analisi bivariata 4 – Tabelle di contingenza rappresentazione grafica > barplot(tab1,ylab="Sesso", col=c("dark red", "orange"),main="Distribuzione per sesso e per regione di provenienza") > legend("topright",c("M","F"),fill=c("dark red", "orange")) 26 Analisi bivariata 5 – Misure di asociazione tra due variabili nominali Se il campione è non probabilistico si può utilizzare l’ndice chi quadrato (e le sue misure derivate) per verificare se esiste dipendenza tra due caratteri tipicamente qualitativi nominali, ma anche ordinali o quantitativi divisi in classi > chi2(REG,TIT) [1] 0.1121711 > phi2<-chi2(REG,TIT)/42 > phi2 [1] 0.002670741 > V<-sqrt(phi2/3) >V [1] 0.02983701 27 Analisi bivariata 6 – Misure di asociazione tra due variabili nominali Se invece il campione è probabilistico e si può fare inferenza, è utile calcolare il test del chi quadrato > chisq.test(tab3) Pearson's Chi-squared test data: tab3 X-squared = 14.1336, df = 12, p-value = 0.2923 28 Analisi bivariata 7 – Misure di asociazione tra due variabili quantitative La correlazione misura quale direzione e quanto intenso è il legame lineare esistente tra due variabili quantitative. Si utilizza di solito il coefficiente di correlazione lineare di Pearson ρ=σxy/σxσy > cor(ETA,RED) [1] 0.6339968 29 Analisi bivariata 8 –Variabili quantitative rappresentazione grafica > plot(ETA,RED,xlab="Età",ylab="Reddito mensile", main="Grafico a dispersione del reddito e dell'età") 30 Regressione Lineare 31 32 33 In R si avrà: Il coefficiente dell’intercetta (239,512) costituisce il valore α dell’equazione della retta (ovvero l’intersezione tra la retta e l’asse delle ordinate, il coefficiente di RED (28,417) costituisce il valore β, ovvero il coefficiente angolare della retta. Dunque: RED=239,512 + 28,417*ETA 34 Il significato del coefficiente di regressione è il seguente: per ogni incremento unitario della variabile indipendente, la variabile dipendente cresce di 28,417 unità. I valori stimati di reddito in funzione dell’età mediante la retta di regressione si ottengono come segue: 35 La retta può essere rappresentata all’interno del diagramma a dispersione delle due variabili nel modo seguente: 2000 1500 1000 500 0 Reddito mensile 2500 3000 Grafico a dispersione del reddito e dell'età 10 20 30 40 50 60 70 Età 36 Una retta di regressione multipla si ottiene semplicemente inserendo più di una variabile indipendente: 37 In questo caso il significato dei coefficienti di regressione, ad esempio di quello dell’età è il seguente: per ogni incremento unitario dell’età, mantendo costanti le altre variabili indipendenti (ovvero in questo caso la sola variabile GI_VAC) , la variabile dipendente cresce di 30,936 unità. 38 Regressione Logistica 39 Il modello di regressione logistica viene utilizzato quando si è interessati a studiare o analizzare la relazione causale tra una variabile dipendente dicotomica e una o più variabili indipendenti. Nella regressione logistica la variabile dipendente, essendo dicotomica, definisce l’appartenenza a un gruppo (o all’altro). Consideriamo ad esempio il seguente dataset: La variabile dipendente sarà viaggio, che assume la modalità viaggio_si se il rispondente al questionario ha fatto almeno un viaggio con la propria famiglia negli ultimi 4 mesi e viaggi_no altrimenti. La variabile bipartisce quindi il campione in due gruppi, e ciò che interessa non è il valore atteso (o predetto), come nella regressione lineare, ma la probabilità che un dato soggetto appartenga a meno a uno dei due gruppi. 40 Occorre introdurre alcune grandezze- Dovrebbe essere abbastanza noto il concetto di probabilità. La probabilità di un evento è pari al rapporto tra il numero di eventi favorevoli e il numero di eventi complessivi. Essendo: Risulta che, preso a caso un individuo nel campione, la probabilità che abbia fatto almeno un viaggio con la famiglia negli ultimi 4 mesi è pari a 0,32. Meno noto è l’odds, un modo di esprimere la probabilità mediante un rapporto. Si calcola facendo il rapporto tra le frequenze osservate in un livello con le frequenze osservate nell’altro, ovvero, numero di eventi favorevoli diviso numero di eventi contrari. Il valore dell’odds esprime il rapporto tra due categorie. Nel caso specifico: Mediante l’odds vediamo che la relazione tra chi ha fatto almeno un viaggio e chi non lo ha fatto è pari a 0,48. 41 La “lettura dell’odds si fa con riferimento al denominatore: in altre parole, per ogni individuo che non ha fatto il viaggio ci sono 0,48 individui che lo hanno fatto. Ovviamente un valore dell’odds pari a 1 indica uguale frequenza tra eventi favorevoli e contrari, un valore maggiore di 1 indica che ci sono più eventi favorevoli e un valore minore di 1, come nell’esempio, indica che cii sono più eventi sfavorevoli. Per esprimere la relazione tra due categorie in funzione di un’altra variabile (valutare cioè l’associazione tra due variabili) è possibile utilizzare un altro indice chiamato odds ratio o rapporto tra gli odds. Tale indice si ottiene facendo un rapporto tra gli odds di una data variabile (ad esempio, la variabile Y) ottenuti per ciascun livello della seconda variabile (ad esempio, la variabile X). Supponiamo ad esempio di voler esprimere l’odds della variabile viaggio alla luce di un’altra variabile del dataset, ad esempio la variabile pos che suddivide ulteriormente il campione tra le professioni insegnanti ed ingegneri. La domanda che possiamo porci è la seguente: il rapporto (odds) tra coloro che hanno fatto almeno un viggio con la famiglia negli ultimi 4 mesi e coloro che non lo hanno fatto è uguale nei differenti lavori? 42 Per descrivere la diversa distribuzione delle categorie della variabile sesso nelle categorie della variabile lavoro mediante una statistica unica possiamo utilizzare l’odds ratio, che come detto precedentemente corrisponde al rapporto tra i rapporti tra le categorie. Essendo: Risulta: OR=(6019/12840)/(4783/7359)=0,72 Per l’interpretazione degli odds ratio si procede nel seguente modo: valori diversi da 1 indicano un’associazione tra le variabili. In questo caso, poiché il valore è diverso da 1, si può dire che esiste un’associazione tra le variabili viaggio e pos. In particolare, si osserva che la proporzione di coloro che hanno viaggiato tra gli insegnanti è 0,72 volte la stessa proporzione tra gli ingegneri. In altre parole, per ogni ingegnere che ha viaggiato con la famiglia (piuttosto che non farlo) ci sono 0,72 insegnanti che hanno viaggiato con la famiglia (piuttosto che non farlo); gli ingegneri viaggiano relativamente di più. 43 Ovviamente se scegliamo come riferimento gli insegnanti si avrà: OR=(4783/7359)/(6019/12840)= 1,3865 Per cui per ogni insegnante che ha viaggiato con la famiglia (piuttosto che non farlo) ci sono 1,39 ingegneri che hanno viaggiato con la famiglia (piuttosto che non farlo). Tornando alla regressione logistica, per esprimere la relazione tra la variabile indipendente e la variabile dipendente in termini lineari possiamo partire dalla seguente formulazione in cui il valore atteso della variabile dipendente è la probabilità, per cui la probabilità di Y = 1 come funzione lineare di X diventa: P(Y =1) =α + βX Questo modello non è adeguato, dal momento che i valori della probabilità sono compresi tra 0 e 1, mentre il termine α + βX può assumere valori che vanno da – ∞ a + ∞. Allora, per provare a risolvere il problema possiamo applicare la trasformazione esponenziale al termine di destra della funzione che diventa: P(Y = 1) = eα +βX Anche questa trasformazione, seppure consente di restringere i valori dell’equazione entro il range 0 + ∞, non risolve completamente il problema. 44 A partire dalla precedente equazione con opportuni passaggi matematici si perviene alla formula: E l’equazione della retta diviene: 45 Per ottenere una regressione logistica con R si digita il comando: Avendo cura, dentro la parentesi, di inserire prima la variabile dipendente e poi, dopo la tilde, la variabile indipendente. Base è il dataset cje contiene le variabili, mentre family=binomial è un input fisso per ottenere la regressione logistica. Si ottiene: 46 Come si vede, l’output è praticamente identico a quello della regressione lineare. I punti più importanti è il coefficiente di regressione (tra l’altro significativo, in questo esempio, come si vede dalle stellette a destra) calcolato, come si vede, prendendo come riferimento gli insegnanti. Se si applica a tale coefficiente l’operatore matematico esponenziale (l’opposto del logaritmo) si ottiene: Pari all’odds ratio che abbiamo trovato “a mano” in precedenza, e, ovviamente con la stessa interpretazione. Naturalmente, in una regressione logistica possono essere inserite più variabili indipendenti. Se queste variabili sono dicotomiche, sono già “pronte” per essere inserite nella regressione. Se invece esse presentano più di due modalità, la via più semplice è quella di creare delle variabili cosiddette dummy, composte di soli 0 e 1, per ciascuna modalità tranne che per una scelta come riferimento. Nel nostro dataset di esempio, esisteva una variabile “provenienza geografica” a 3 modalità: nord, centro e sud. A partire da essa sono state costruite due variabili dummy nord e sud. Le variabili dummy nord sono state costruita a partire da quella “provenienza geografica (pg)” nel modo seguente: 47 nord=1 se pg=nord, nord=0 altrimenti sud=1 se pg=sud, sud=0 altrimenti La modalità esclusa, centro, diventa automaticamente il riferimento, nel senso che andremo a valutare l’effetto di nord e sud sulla variabile dipendente viaggi confrontandole con il centro. Si avrà: 48 Per cui: •Per ogni insegnante che ha viaggiato con la famiglia negli ultimi 4 mesi ci sono 1,41 ingegneri che lo hanno fatto; •Per ogni individuo proveniente dal centro che ha viaggiato con la famiglia negli ultimi 4 mesi ci sono 1,03 individui provenienti dal nord che lo hanno fatto; •Per ogni individuo proveniente dal centro che ha viaggiato con la famiglia negli ultimi 4 mesi ci sono 0,66 individui provenienti dal sud che lo hanno fatto; In termini di modalità dunque, essere ingegnere piuttosto che insegnante ha un effetto favorevole sulla variabile dipendente, provenire dal nord piuttosto che dal centro ha un leggerissimo effetto favorevole, mentre provenire dal sud piuttosto che dal centro ha un effetto sfavorevole. 49 Analisi delle Componenti Principali 50 Esempio: Analisi di 15 tipi di gelato 51 Obiettivo: sintetizzare l’insieme di informazioni costituito dalla matrice dei dati in uno spazio di dimensioni ridotte Applicazione dell’ANALISI DELLE COMPONENTI PRINCIPALI Quando le p variabili tutte quantitative sono numerose e molto difficile riuscire a cogliere le strutture esistenti nei dati. Si pone quindi il PROBLEMA: è possibile sostituire le p variabili originarie con un numero minore di variabili “artificiali” (k<<p), dette COMPONENTI PRINCIPALI, che garantiscono la SINTESI con la MINOR PERDITA DI INFORMAZIONE POSSIBILE? Ossia, in termini geometrici, è possibile rappresentare le osservazioni, anziché nello spazio originario a p dimensioni, in uno spazio di dimensioni ridotte (1, 2, 3,……), con una perdita limitata d’informazione? L’ ANALISI IN COMPONENTI PRINCIPALI è un metodo statistico multivariato che permette la riduzione delle dimensioni con la minore perdita di informazione. 52 Nel caso dei gelati il numero delle variabili non è particolarmente elevato, ma l’applicazione dell’ACP è comunque utile …. Una volta caricato il pacchetto FactoMineR, che useremo per l’acp, si lancia il comando: La sintassi è la seguente: Si crea un nuovo oggetto in R il cui nome – come si vede – è assolutamente ininfluente e a discrezione, e si fornisce come input alla funzione PCA il dataset oggetto di studio. Essendo le variabili tutte quantitative, le utilizziamo tutte e quindi non c’è bisogno di specificare nulla. Si ottengono i due grafici seguenti: 53 1.0 Variables factor map (PCA) 0.5 peso 0.0 kcal fibre proteine grassi -1.0 -0.5 Dim 2 (16.83%) carboidrati -1.0 -0.5 0.0 0.5 1.0 Dim 1 (76.93%) Come noto, le componenti principali sono in numero esattamente pari a quello delle variabili originarie, quindi nel caso specifico sono pari a 6. Si tratta di: a) Scegliere il numero di componenti che intendiamo utilizzare; b) Interpretare tali componenti, ovvero dargli un significato. 54 Il grafico precedente, detto cerchio delle correlazioni, ci aiuta per entrambe le operazioni. Esso rappresenta il piano formato dalle prime due componenti principali, e le percentuali accanto agli assi indicano la percentuale di informazione associata a ciascuno di essi. Il primo asse (ovvero la prima componente principale) che è quello orizzontale “spiega” il 77% circa dell’informazione contenuta nella matrice dei dati, il secondo, quello verticale, ne spiega il 17% circa. Dunque le prime due CP riassumono in maniera molto soddisfacente le informazioni delle 6 variabili di partenza (il 94% circa: la perdita è uguale solo al 6,246% della varianza totale) e possono essere assolutamente sufficienti a rappresentare i dati originari, con l’ulteriore vantaggio che due sole variabili individuano un unico piano e quindi permettono una comoda rappresentazine grafica bidimensionale. Per vedere comunque le percentuali di informazione associate a ciascuna componente principale basta digitare il comando: 55 Dunque possiamo pertanto considerare solo le prime due CP. Ma quale significato va attribuito a ciascuna di queste due variabili sintetiche? La risposta è data dalla relazione tra le due CP e le variabili originarie, mostrata ancora nel cerchio delle correlazioni. Nel grafico ciascuna variabile è rappresentata da una freccia. Una variabile è tanto più correlata con un asse quanto più è grande la sua proiezione sull’asse stesso, e questo dipende dalla lunghezza della freccia ( più è lunga più è grande la proiezione) e dall’angolo formato dalla freccia con l’asse (più l’angolo è piccolo, maggiore sarà la proiezione). Nell’ingrandimento, la linea verde scuro rappresenta la proiezione della variabile carboidrati sul primo asse, quella celeste la proiezione sul secondo asse. Tale variabile risulta evidentemente maggiormente associata con il primo asse. Questa analisi va ripetuta variabile per variabile. 56 In base a quanto detto, la prima CP presenta una relazione diretta molto forte con le variabili nutrizionali e più debole con il peso, mentre la seconda CP mostra una relazione diretta abbastanza elevata solo con il peso. Dunque: -la prima CP può interpretarsi come un INDICATORE SINTETICO DELLE CARATTERISTICHE NUTRIZIONALI; -la SECONDA CP è connessa al PESO DELLA SINGOLA PORZIONE DI GELATO. Questo è dunque il significato delle prime due componenti principali. Praticamente tutta l’informazione contenuta nella matrice iniziale dei dati, contenuta in 6 variabili, è riassumibile utilizzandone solamente due. Il secondo grafico mostra la disposizione delle singole unità statistiche nel piano formato dalle prime due componenti principali. 57 3 Individuals factor map (PCA) LIUK 1 MAGNIFICO CUCCIOLONE SOLERO LEMONISSIMO CARTE D_OR FIORDIFRAGOLA COPPAMUSIC 0 Dim 2 (16.83%) 2 CALIPPO CORNETTO MAGNUM PASSION -1 VIENNETTA CROCCANTE -2 CREMINO -4 -2 0 2 4 6 Dim 1 (76.93%) Sulla base del significato attribuito alle CP, nella parte del grafico verso destra si collocano i gelati con i valori più elevati delle variabili nutrizionali e verso l’alto quelli di peso maggiore. In prossimità dell’origine degli assi si posizionano i gelati con valori prossimi alla media per entrambi gli aspetti riassunti dalle prime 2 CP. 58 Vediamo una seconda applicazione su un dataset più complesso. 59 Le prime 12 variabili contengono le temperature medie per i dodici mesi dell’anno per 23 capitali europee. Le variabili Annual e Amplitude rappresentano rispettivamente le temperature medie annuali e la maggiore escursione termica (differenza tra la maggior temperatura media mensile e quella minore). Infine ci sono le due variabili posizionali longitudine e latitudine. Tutte le prime 16 variabili sono quantitative; l’ultima è una variabile qualitativa che indica la posizione geografica della città in Europa. Obiettivo dell’indagine è quello di studiare le temperature delle capitali europee. Come visto, la matrice dei dati è composta da 17 variabili. Trattandosi di variabili quantitative operiamo una pca allo scopo di vedere se è possibile ridurre il numero delle variabili mantenendo un alto contenuto informativo. In questo caso distingueremo tra variabili attive e variabili illustrative; solo le prime concorrono a “costruire” le variabili artificiali che chiamiamo componenti principali, mentre delle seconde studiamo l’associazione con le componenti principali. In questo caso considereremo attive le prime 12 variabili, ovvero le temperature medie mensili, mentre le altre saranno illustrative: 4 quantitative e l’ultima, la posizione geografica, qualitativa. 60 La sintassi del comando è la seguente: In cui indichiamo alla funzione che ci sono variabili illustrative e le distinguiamo in quantitative (quanti.sup) e qualitative (quali.sup). Le variabili illustrative vengono indicate sempre seguendo l’ordine in cui esse compaiono nell’outptu del comando str(temperature). Siccome in questo dataset esse sono consecutive, possiamo indicarle con l’espressione 13.16, ad indicare che dalla 13° alla 16° sono appunto illustrative quantitative. Altrimenti avremmo potuto usare la sintassi : Del tutto equivalente. Si ottiene il cerchio delle correlazioni: 61 1.0 Variables factor map (PCA) Amplitude Longitude 0.0 September April Annual October Latitude March November -0.5 Dim 2 (15.4%) 0.5 June July May August -1.0 February December January -1.0 -0.5 0.0 0.5 1.0 Dim 1 (82.9%) In cui sono anche rappresentate le variabili illustrative quantitative (in blu). L’interpretazione delle prime due componenti principali (sufficienti ai nostri scopi in quanto restituenti oltre il 98% dell’informazione complessiva) avviene comunque sulla base delle variabili attive. 62 La prima CP presenta una relazione diretta molto forte con tutte le variabili riportanti le temperature medie mensili. Essa può quindi essere interpretata come una misura media complessiva, ovvero come una temperatura media annuale. Questa interpretazione è supportata dall’osservazione che la variabile illustrativa annual, avente lo stesso significato, è praticamente coincidente con il primo asse. Osservndo le direzioni delle frecce, si può pertanto concludere che il primo asse distingue le capitali con una bassa temperatura media annua (a sinistra) da quelle che hanno un’alta temperatura media annua (a destra). La seconda CP sembra distinguere i mesi di maggio, giugno, luglio e agosto in alto, dai mesi di dicembre, gennaio e febbraio in basso. Tenendo conto che si tratta rispettivamente dei mesi più caldi e più freddi si può concludere che il secondo asse distingue la bella stagione (in alto) da quella brutta (in basso). Questa opposizione riflette il fatto che, per una data temperatura media annua (ovvero, fissato un punto dell’asse orizzontale), alcune città sono piuttosto calde in estate rispetto a tale temperatura, altre sono relativamente fredde. 63 3 Individuals factor map (PCA) Moscow 2 Kiev Budapest Minsk East Athens Madrid Rome South 0 ElsinkiOslo Stockholm Sofia Prague Sarajevo Berlin Copenhagen -1 North West Paris Brussels Amsterdam London Lisbon -2 Dim 2 (15.4%) 1 Krakow Dublin -3 Reykjavik -5 0 5 Dim 1 (82.9%) Il secondo grafico, che riporta la collocazione delle città nel piano formato dalle prime due componenti principali, aiuta a capire meglio soprattutto l’interpretazione dell’asse verticale. Città come Kiev, Mosca o Budapest hanno temperature piuttosto alte durante l’estate, e 64 temperature piuttosto basse durante il resto dell’anno. D’altra parte, città come Dublino e Reykjavic hanno temperature piuttosto basse durante l’estate e meno rigide durante l’inverno. Si distinguono in questo modo città costiere (come queste ultime) , con una bassa escursione termica, da città continentali (come le altre dette in precedenza) con una escursione termica più forte. Quest’ultimo fatto è anche desumibile dal rapporto che esiste tra la seconda componente principale e la variabile illustrativa amplitude. Infine, sul grafico è riportata la distribuzione delle modalità della variabile qualitativa area, in cui ovviamente trovano la corretta collocazione le varie città. 65 Analisi delle Corrispondenze Multiple 66 L’analisi delle corrispondenze multiple è una tecnica che produce risultati piuttosto simili a quelli dell’analisi in componenti principali ma lavora su variabili qualitative. In realtà l’algoritmo matematico su cui si basa è profondamente diverso da quello dell’acp, per cui bisogna avere molta cautela nel portare avanti questa analogia. L’ output dell’mca è, in genere, prettamente grafico: obiettivo di questa analisi è la rappresentazione grafica delle associazioni esistenti tra le variabili qualitative oggetto di studio e le loro modalità, allo scopo di cogliere andamenti sottostanti e collegamenti che non è possibile cogliere nella matrice dei dati originale. Questo è uno dei motivi, tra l’altro, per cui spesso la percentuale complessiva di informazione associata agli assi individuati è sensibilmente più bassa di quella che in genere si ottiene in una acp. La perdita di informazione è “compensata” dalla rappresentabilità grafica. 67 Caricato il pacchetto FactoMineR: Il comando da digitare è il seguente: 68 Vediamo i singoli elementi di questo comando: • a sinistra del simbolo di assegnazione, il nome da dare all’oggetto R che andiamo a creare; tale nome è assolutamente ininfluente –come si vede dalla scelta fatta. •Tra parentesi, i vari input che vanno forniti al comando MCA: 1. Tea_survey2: il nome del dataset su cui si opera; 2. Ncp=2: Il numero di fattori da estrarre (teoricamente, tanti quante sono le variabili attive; in realtà molto spesso l’obiettivo di una mca è quello di ottenere un grafico, per cui in questo caso diciamo alla funzione di estrarne 2 per avere un grafico bidimensionale. Se non si indica nulla di default vengono estratti 5 fattori). 3. Quali.sup=c(1,6,15): qui vanno indicate le variabili illustrative qualitative. Nella parentesi vanno indicate le loro posizioni nell’output del comando str(tea_survey2). Le illustrative considerate sono età, frequenza e sesso e le cui posizioni - nella slide precedente- sono appunto rispettivamente 1,6 e 15. 4. Altri eventuali input che possono essere forniti alla funzione MCA sono reperibili nella guida di R, digitando ?MCA e premendo invio. 69 Si ottengono i tre grafici seguenti: 0.6 where 0.4 price how 0.2 0.0 Dim 2 (8.103%) 0.8 1.0 Variables representation Tea age_Q dinner How work resto sugar breakfast lunch sex frequency pubfriendstearoom evening home alwaystea.time 0.0 0.2 0.4 0.6 Dim 1 (9.885%) 0.8 1.0 In questo grafico sono rappresentate le v. attive in rosso e quelle illustrative in verde. Interessano le prime: variabili poste più a destra sono maggiormente legate con il primo asse fattoriale, quello orizzontale. Variabili poste più in alto sono maggiormente legate con il secondo asse fattoriale, quello verticale. Le percentuali tra parentesi accanto agli assi indicano la percentuale di informazione (variabilità) restituita da ciascun asse; in questo caso quindi, i due assi restituiscono complessivamente il 18% circa dell’informazione originaria. 70 MCA factor map 1.0 195 211 227 182 31 220 0.0 0.5 297248 272 299 261 16 66 206 94 10 287 171 191 62 271 277 203 288 153 81 209 159148 52 50 35 110 120 15 224 17 54 278 240 25 196 9 113 217 241 238 14979 173 269 207 161 205 40 59 24 266 163 23 186 82 22 180 102 226164 83 198255 87 112 48 253 225 167 189 93 268 231 37 38 6188 213 4154 57 262 243 197 134 291 283 151 21 201 34 296 29 178 187 55 200 235 44 252 295 18 244 172 223162 20 156 82144213 183 56 122 2 275 204 33128 280 233 279 64135 228 160 193 63 545 284 51 234 12767 265 47169 152 166 140 139 119 133 30 32 194 58 1 111 218 109 256 96 260 68 117 3185 300 121 292 6527 246103 232 124 146 158 49 784 247 263 257 132 264 259 258 123 116 192 270 61 237155 14 70144 9189 286 138 39 136 176 150 12 60 230 72 251 77 298 147 19 267 184 36 170 85 137 175 115 105 242 177 254 250 71 281 80 143 219 76 285 97 216 276 282 181 78 108 141 11 131 92 90 239 118 99 41 157 126 179 73 101 145 174 107 106 43 69 104 114 129 245 210 98215 142 236 274 221 28 26 293 289 130 125 46 75 290294 86 88 -0.5 Dim 2 (8.103%) 212 165 199 222249 168190202 208 229 100 74 95 53 -1.0 -0.5 0.0 0.5 1.0 Questo grafico mostra la “nuvola dei punti”, ovvero la disposizione degli individui (le righe della matrice originaria) nel piano fattoriale generato dalle variabili attive. 273 1.5 Dim 1 (9.885%) 71 MCA factor map tea shop 2 unpackaged 1 0 green dinner +60 black lemon tearoom Not.friends No.sugar M Not.breakfast Not.resto 45-59 Not.work 35-44 1 to 2/week chain store+tea shop Not.tea time Not.lunch alone 3 25-34 to 6/week Not.pub tea always bag+unpackaged Not.evening +2/day other home Not.always Not.dinner evening Not.home Not.tearoom tea time friends 1/day F pub breakfast sugar p_variable p_cheap Earl Grey work milk chain store 15-24 lunch resto p_branded tea bag p_private label p_unknown -1 Dim 2 (8.103%) p_upscale -1 0 Dim 1 (9.885%) 1 2 Questo grafico mostra la disposizione delle modalità delle v. attive (in rosso) e delle modalità delle v. illustrative (in verde) nel piano fattoriale. Siccome il passo successivo consiste nell’interpretazione di ciascun asse fattoriale, conviene eliminare dal grafico le v. illustrative e cercare di rendere più chiare le etichette delle varie modalità. A tale scopo si può digitare il comando: 72 1. pippo: il nome dell’oggetto R creato in precedenza, contenente tutti gli output dell’mca. MCA factor map 2 tea shop unpackaged 2. Invisible=c(“ind”, “quali.sup”): si dice alla funzione di eliminare dal grafico gli individui (“ind”) e le modalità delle v. illustrative (“quali.sup”), senza indicare le v. attive (“var”). 1 green dinner 0 black lemon tearoom Not.friends No.sugar Not.breakfast Not.resto ork chain store+tea shop Not.teaNot.w time Not.lunch alone alwtea Not.pub aysbag+unpackaged other Not.evening home Not.alw aysevening Not.dinner Not.home Not.tearoom tea time friends pub breakfast sugar p_variable p_cheap Earl Grey w ork chain store milk lunch resto p_branded tea bag p_private label p_unknow n -1 Dim 2 (8.103%) p_upscale -1 0 Dim 1 (9.885%) 1 2 3. Cex=0.7: parametro grafico con cui si ottengono caratteri più piccoli e quindi etichette più leggibili 73 L’interpretazione degli assi si basa sull’analisi della disposizione delle modalità in orizzontale (primo asse fattoriale) e in verticale (secondo asse fattoriale). Nel primo caso a destra dell’origine troviamo modalità quali pub, tearoom, lunch, breakfast, work, friends, always, mentre a sinistra troviamo le corrispondenti negazioni (not pub, not tearoom, etc). Il primo asse si basa sulla tipologia di consumatori e distingue i consumatori abituali a destra dai consumatori occasionali a sinistra. Nel caso dell’asse verticale, in alto troviamo modalità quali tea shop, unpackaged, price_upscale, cui si contrappongono in basso tea_bag, price-unknown, price_cheap, etc. Il secondo asse si basa sulla qualità del tè consumato e distingue tra un consumo di alta qualità in alto e un consumo di bassa qualità in basso. A fronte delle 18 variabili attive che avevamo considerato, l’output precedente ci dice che tenendo conto di questi due aspetti si considera quasi il 20% di tutto il contenuto informativo contenuto nella matrice dei dati originale. Questi due aspetti sono comunque i più importanti, tenendo conto che la portata del contenuto informativo di ciascun asse fattoriale è decrescente. 74 Per studiare le v. illustrative basta lanciare il comando: ottenendo: MCA factor map M 1 to 2/w eek 45-59 35-44 25-34 3 to 6/w eek 0.0 +2/day 1/day -0.2 F 15-24 -0.4 Dim 2 (8.103%) 0.2 0.4 +60 -0.4 -0.2 0.0 Dim 1 (9.885%) 0.2 Da cui si evince ad esempio che le donne consumano più tè degli uomini (sono a destra sull’asse orizzontale) ma questi ultimi bevono un tè migliore (sono più in alto sull’asse verticale), oppure che a consumare il tè migliore sono soprattutto persone di una certa età (+60, in alto) rispetto ai giovani che bevono un tè di qualità inferiore (15-24, in basso) 0.4 75 Le variabili illustrative possono essere ovviamente anche di natura quantitativa. A tale scopo consideriamo il seguente dataset: Che è analogo al precedente con la sola differenza che la variabile età è quantitativa a tutti gli effetti, e non quantitativa suddivisa in classi e quindi qualitativa come in precedenza. 76 Il comando da lanciare è il seguente: I due assi fattoriali sono esattamente identici a quelli trovati prima, perché le variabili attive che li producono sono rimaste inalterate. Nell’output della funzione c’è però un grafico aggiuntivo: -0.5 0.0 age -1.0 Dim 2 (8.103%) 0.5 1.0 Supplementary variables on the MCA factor map -1.0 -0.5 0.0 Dim 1 (9.885%) 0.5 1.0 77 Ovvero un cerchio delle correlazioni in cui possiamo leggere che la variabile illustrativa quantitativa age risulta legata quasi esclusivamente al secondo asse ed è concorde con l’asse. Questo risultato non è sorprendente, pensando a come si disponevano in precedenza le modalità della variabile suddivisa in classi. MCA factor map M 1 to 2/w eek 45-59 35-44 25-34 3 to 6/w eek 0.0 +2/day 1/day Esse infatti si muovevano dal basso verso l’alto, come mostra il “vecchio” grafico al quale è stata aggiunta la spezzata rossa per evidenziarne l’andamento -0.2 F 15-24 -0.4 Dim 2 (8.103%) 0.2 0.4 +60 -0.4 -0.2 0.0 Dim 1 (9.885%) 0.2 0.4 78 Tutti gli altri grafici risultano identici a quelli già visti tranne quello recante la disposizione delle variabili illustrative qualitative nel piano fattoriale, in cui ovviamente non c’è più la variabile age. 0.1 M 1 to 2/w eek 3 to 6/w eek 0.0 +2/day F -0.2 -0.1 1/day -0.3 Dim 2 (8.103%) 0.2 0.3 MCA factor map -0.4 -0.2 0.0 0.2 0.4 Dim 1 (9.885%) 79 Cluster Analysis 80 Si consideri il seguente dataset Costituito da un insieme di 6 variabili legate al fenomeno turistico registrate sulle 20 regioni italiane. L’obiettivo è quello di trovare dei gruppi di regioni che, rispetto alle variabili in esame, presentino un comportamento simile al loro interno e dissimile tra gruppi diversi. 81 Per operare una classificazione gerarchica, calcoliamo innanzitutto la matrice delle distanze euclidee: Poi ci calcoliamo il dendrogramma e lo rappresentiamo: Lombardia Sicilia Campania Liguria Emilia_Romagna Trentino_Alto_Adige Lazio Veneto Toscana Friuli_Venezia_Giulia Umbria Abruzzo Valle_d_Aosta Piemonte Sardegna Molise Marche Puglia Basilicata Calabria 50 0 Height 100 150 200 Cluster Dendrogram matdist hclust (*, "ward") 82 Tenendo conto che le classificazioni migliori si ottengono “tagliando” il dendrogramma in corrispondenza dei rami più alti, potreemo avere una classificazione a 2, 3 o al limite a 5 gruppi. Scegliendo quella da tre si ha: Per cui Piemonte, Abruzzo, Puglia, Valle d’Aosta, Marche, Molise, Basilicata, Sardegna e Calabria stanno tutte insieme e appartengono al gruppo 1, etc. I gruppi ottenuti andranno poi caratterizzati studiando le caratteristiche comuni dei loro elementi. 83 Volendo operare una classificazione su base partizionale si procede con il comando: A questo riguardo vale la pena osservare che: a) Nel caso dei cluster partizionali, il numero di gruppi va indicato a priori, senza alcun ausilio grafico (per cui spesso si va per tentativi); b) La classificazione è venuta identica a quella precedente (in quanto il dataset è molto piccolo e contiene poche variabili); in generale non è così perche gli algoritmi utilizzati sono molto diversi. 84 Un’altra classificazione su base partizionale, tramite un ulteriore diverso algoritmo, si ottiene con il comando: In questo caso, con l’opzione medoids, si ottengono anche i “centri” dei 3 cluster, ovvero le unità statistiche che meglio rappresentano ciascun gruppo. Questo può essere un valido ausilio per la caratterizzazione dei gruppi ottenuti. 85 Spesso, soprattutto nel caso di grandi dataset con molte variabili, invece di classificare i dati originali si ricorre ad una precedente analisi fattoriale per ridurre le dimensioni, e si opera la cluster analysis sulle coordinate fattoriali. Il pacchetto FactoMineR permette di operare una cluster analysis gerarchica (metodo di ward) direttamente sugli assi fattoriali e non sui dati originali. Lavorando per continuità di esempio sul dataset turismo_08 (sebbene le sue dimensioni rendano assolutamente superfluo il ricorso all’analisi fattoriale), si procederà calcolandone le componenti principali e poi digitando il comando: (dove prendiamo solo le prime due componenti principali perché il dataset è piccolo) che restituisce il dendrogramma rappresentante la successione delle classificazioni e una riga scura rappresentante un suggerimento di “taglio” in base alla massimizzazione di un opportuno indice di validazione. 86 Non c’è motivo per non accettare il suggerimento (che prevede dunque la scelta di 3 gruppi) per cui cliccando in corrispondenza della riga scura si ottiene: 87 0.0 0.5 1.0 1.5 Hierarchical Clustering Click to cut the tree 0.5 1.0 1.5 inertia gain Hierarchical clustering on the factor map 1.0 2 Friuli_Venezia_GiuliaToscana Umbria 1 0.5 Trentino_Alto_Adige 0 Lazio Piemonte Campania Liguria Lombardia Valle_d_Aosta -1 Puglia Marche Sardegna Molise Abruzzo Emilia_Romagna Sicilia -2 Basilicata -3 Calabria -3 -2 -1 0 Dim 2 (26.76%) 3 Veneto 0.0 height 1.5 2.0 Lazio Trentino_Alto_Adige Sicilia Lombardia Campania Emilia_Romagna Liguria Valle_d_Aosta Calabria Piemonte Basilicata Sardegna Puglia Abruzzo Molise Veneto Marche Umbria Toscana Friuli_Venezia_Giulia 0.0 cluster 1 cluster 2 cluster 3 1 2 3 4 Dim 1 (42.1%) 88 E soprattutto: 3 Factor map cluster 1 cluster 2 cluster 3 Veneto 2 Friuli_Venezia_Giulia Toscana Umbria 1 0 Puglia Marche Molise Campania Piemonte Lombardia Liguria Valle_d_Aosta Lazio Sardegna Abruzzo -1 Emilia_Romagna Sicilia -2 Basilicata Calabria -3 Dim 2 (26.76%) Trentino_Alto_Adige -2 0 2 4 Dim 1 (42.1%) 89 Sui dati fattoriali si può anche operare una classificazione con metodo partizionale, ad esempio con il metodo delle k medie. Tale operazione però non può essere svolta direttamente da funzioni del pacchetto FactoMineR, per cui bisogna “estrarre” le coordinate fattoriali. Il comando: Crea un nuovo oggetto R contenente le 20 coppie di coordinate fattoriali, una coppia per ogni regione del dataset originario. Su di esso potremo lanciare il comando kmeans: Che produrrà, ad esempio, la seguente classificazione: 90 O ancora, tramite l’algoritmo pam: In cui, ad esempio, è cambiato il “centro” del primo cluster. 91 Analogo discorso può essere fatto, nel caso di variabili qualitative, per i risultati di una mca. Tornando all’esempio del tè, in cui pippo era l’oggetto R contenente l’output dell’mca,, va digitato il comando: Che restituisce come in precedenza il dendrogramma rappresentante la successione delle classificazioni e una riga scura rappresentante un suggerimento di “taglio” in base alla massimizzazione di un opportuno indice di validazione. Non c’è motivo per non accettare il suggerimento (che prevede dunque la scelta di 3 gruppi) per cui cliccando in corrispondenza della riga scura si ottiene: 92 0.08 0.04 0.00 Click to cut the tree inertia gain 0.06 0.08 0.10 Hierarchical Clustering Hierarchical clustering on the factor map 195 190 211 168 202 182 208 227 31 100 220 74 95 229 212 165 248 199 249261 222 272 53297 299 16 287 206 94 66 10 171 191 62 271 277 288 203120 153 81209 159148 52 5035 15 110 224 54 17 278 240 217 113 25 241 196 9 161 149 238 173 269 207 205 79 40 59 24 266 186 163 23 83198 82243 22283 102 180 226 255 225 87 167 189 164 112 48 93 38 6223 213 231 37 253 268 262 4 57 200 187 188 154 197 134 34 29 151 291 178 21 201 55 162 296 275 235 18 172 252 44 295 156 183 2121 20 8784 42 33 128 244 56 122 13 204 280 233 279 64 135 127 67265 273 193 47 166 152 140 139 63 228 545 214 284 160 51 234 1155 169 111 194 119 30 58 32 133 300 158 146 124 117 256 218 292 109 96 260 65 27 3 185 246 68 232 14 263 258 123 116 257 144 132 192 49 247 136 103 264 270 259 61 237 176 70 230 150 12 138 91 286 60 39 251 285 184 36 115 85 250 175 137 105 77 298 170 147 242 19 281 89 72 267 219 97 76 177 181 254 216 71 276 143 78 282 80 108 141 41 157 126 118 11 179 73 131 92 90 101 239 99 145 104 174 107 106 43 69 142 245 114 129 210 98 215 236 221 28 293 289 274 125 130 46 290 7526 86 294 88 -1.0 1.0 0.5 Dim 2 (8.1%) 0.06 0.04 1.5 0.02 0.00 height 187 200 6 38 262 205 188 167 4 55 223 193 154 197 134 34 162 156 186 102 180 163 189 226 213 231 23 164 37 153 81 54 209 217 149 161 113 191 15 159 300 1 237 76 97 219 47 152 166 183 2 169 63 139 140 228 155 285 36 184 85 176 115 232 124 146 158 14 263 70 258 257 123 116 117 256 144 111 194 41 141 145 181 157 293 177 254 230 150 126 118 250 216 12 77 175 137 11 105 104 142 245 296 275 8 20 5 45 119 121 218 132 292 29 151 42 291 178 24 79 83 40 82 266 198 57 243 21 33 201 255 93 48 112 128 235 280 160 233 253 18 214 30 49 7 192 298 170 71 19 147 242 84 138 174 43 106 107 114 179 73 131 276 92 143 78 129 247 96 109 260 65 284 13 204 3 27 91 282 281 89 90 80 185 58 290 294 86 125 210 289 98 130 215 236 88 227 195 182 211 31 212 165 199 222 249 74 95 229 100 53 168 208 190 202 297 248 220 16 206 261 299 272 148 288 203 25 9 241 196 238 173 94 62 171 10 120 110 52 271 277 287 60 286 39 69 101 274 239 28 221 46 75 108 26 279 64 51 246 135 32 244 56 172 136 72 103 264 133 68 234 17 224 240 269 59 225 22 207 50 35 278 66 251 99 267 270 67 265 259 61 122 44 252 127 283 295 268 87 273 0.00 0.08 0.02 0.10 0.04 cluster 1 cluster 2 cluster 3 0.0 -0.5 -1.0 -0.5 0.0 0.5 1.0 1.5 Dim 1 (9.88%) 93 E soprattutto: Factor map 1.0 cluster 1 cluster 2 cluster 3 195 211 227 182 31 220 0.0 0.5 297248 272 299 261 16 66 206 94 10 287 171 191 62 271 277 203 288 153 81 209 159148 52 50 35 110 120 15 224 17 54 278 240 25 196 9 113 217 241 238 149 173 269 207 161 205 40 59 79 266 163 23 24 186 82 22 180 102 226164 83 198255 87 112 48 253 225 167 189 93 268 231 37 38 61884 197 213 57 262 243 134 291 283 154 151 21 201 34 29 178 200 55 187 296 235 44 252 295 18 244 172 223162 20 156 82144213 183 56 122 2 275 204 33128 280 233 279 64135 228 160 193 63 545 284 51 234 12767 265 47169 166 152 140 139 119 133 30 32 194 58 1 111 218 109 256 96 260 68 117 3185 300 121 292 6527 246103 232 158 146 124 49 784 247 263 257 132 264 259 258 123 116 192 270 61 237155 14 70144 9189 286 138 39 136 176 150 12 60 230 72 251 77 298 147 19 267 184 36 170 85 175 137 115 105 242 177 254 250 71 281 80 143 219 97 285 76 216 276 282 181 78 108 141 11 131 92 90 239 118 99 41 157 126 179 73 101 145104 174 107 106 43 129 114 245 210 98215 142 236 69 28 26 274 221 293 289 130 125 46 75 290294 86 88 -0.5 Dim 2 (8.1%) 212 165 199 222249 168190202 208 229 100 74 95 53 -1.0 -0.5 0.0 0.5 1.0 273 1.5 Dim 1 (9.88%) 94 Che rappresenta la classificazione degli individui (si tratta evidentemente della stessa “nuvola di punti” ottenuta in precedenza con l’mca) nei 3 gruppi. Le caratteristiche di ciascun gruppo dipendono dalla posizione del gruppo stesso rispetto agli assi fattoriali. Il gruppo verde ad esempio, per quanto detto sarà caratterizzato principalmente da bevitori abituali di tè. Attraverso il comando: Si ottengono comunque delle informazioni più precise in merito. Scorrendo l’output si arriva alla sezione “category”, che in questo caso significa gruppo e che quindi ha una voce per ciascun cluster: 95 96 Vengono rappresentate le modalità che, in ciascun cluster, presentano una significativa sovra o sotto presenza rispetto al dato campionario complessivo, e che quindi risultano particolarmente utili per caratterizzare il cluster stesso. In particolare: Global è la frequenza della modalità nel campione, ovvero nel dataset; Mod/Cla è la frequenza percentuale della modalità nel gruppo; Cla/Mod indica la percentuale che gli individui nel gruppo aventi questa modalità rappresentano sul totale. Nella slide precedente è riportato l’estratto dell’output relativo al primo gruppo. Prendiamo ad esempio la terza riga, ovvero la modalità Not.tearoom della variabile tearoom (ovvero, coloro che non bevono il tè nelle apposite sale). In questo gruppo, il 97% circa degli individui presenta tale modalità a fronte di un valore campionario complessivo pari all’80,6%. Questa modalità caratterizza quindi il primo gruppo, essendo decisamente più frequente nel gruppo rispetto al campione. Il 65% di tutti gli individui che non bevono il tè nella sala da tè si concentra in questo gruppo. La caratterizzazione dei gruppi si fa pertanto analizzando le modalità presentate in questo output. 97 Occorre fare attenzione peraltro a interpretare correttamente i dati riportati nell’output. Le modalità indicate non sono infatti necessariamente quelle più frequenti nel gruppo, ma solo quelle che risultano statisticamente diverse, per eccesso o per difetto, rispetto al dato complessivo campionario. Consideriamo ad esempio la sesta riga, relativa alla modalità Not.friends della variabile friends (ovvero coloro che non bevono il tè con gli amici, contrapposta alla omonima modalità friends che indica coloro che lo fanno). Sebbene sia corretto caratterizzare il cluster in base a tale variabile, la distribuzione della variabile nel gruppo è: friends=52,44%, Not.friends=47,56. In altre parole, all’interno del gruppo sono di più coloro che bevono il tè con gli amici rispetto a coloro che non lo fanno. Ma la percentuale di questi ultimi (appunto, 47,56) risulta comunque maggiore in modo statisticamente significativo rispetto al dato complessivo campionario (pari al 34,66%). Per converso, essendo la variabile friends dicotomica, la modalità friends (27° riga nell’output), pur essendo comunque la più frequente nel gruppo, risulta minore in modo statisticamente significativo rispetto al dato complessivo campionario (pari al 65,33%) 98 Analogamente, sui dati fattoriali dell’mca si può anche operare una classificazione con metodo partizionale, ad esempio con il metodo delle k medie, operazione non possibile con il pacchetto FactoMineR. Occorre allora estrarre le coordinate fattoriali degli individui. La procedura è analoga a quella vista nel caso delle componenti principali: Crea un nuovo oggetto R contenente le 300 coppie di coordinate fattoriali, una coppia per ogni individuo del dataset originario. Su di esso potremo lanciare il comando kmeans: Che produrrà, ad esempio, la seguente classificazione: 99