Claudio Locci Vincenzo Rundeddu Segmentazione Binaria Obiettivo = permette di esplorare le relazioni tra le variabili attraverso la suddivisione progressiva del campione iniziali in gruppi via via più omogenei al loro interno rispetto alla variabile dipendente “R”: una soluzione open source avanzata per le analisi di mercato Corso di Analisi di Mercato - Anno 2010 1 Segmentazione Binaria Finalità • Individuare le variabili che meglio spiegano quella dipendente • Identificare gruppi devianti (con valori anomali) • Identificare gruppi anomali (di piccole dimensioni) Corso di Analisi di Mercato - Anno 2010 2 Segmentazione Binaria Caricare il pacchetto rpart dal menù a tendina “Pacchetti”; tree<-rpart(nspesemese~.,data=dati, method= tree<method=““anova” anova”) # comando base: la prima variabile è quella scelta come variabile di risposta. Se dopo il simbolo ~ si inserisce il “.”, allora verranno considerati tutti i descrittori del data set. Il comando per stimare gli alberi di regressione e di classificazione è rpart () Quando la variabile dipendente è quantitativa siamo in presenza di una “Regressione ad albero” Quando la variabile di risposta è qualitativa siamo in presenza di una “Classificazione ad albero”. Corso di Analisi di Mercato - Anno 2010 3 Corso di Analisi di Mercato - Anno 2010 4 Regressione ad albero Grafico ad albero spesamedia=a | plot(tree,margin=0.1) # grafico ad albero Con il parametro “margin” si possono modificare i margini dell’albero e quindi regolarne la dimensione text (tree, use.n=T, cex=0.6) # Intaragisce col grafico permettendo di aggiunge le etichette ai nodi “use.n=T” consente di visualizzare nei nodi terminali - la media della variabile di risposta (se quantitativa) - le frequenze di ciascuna modalità della variabile di risposta (se qualitativa) summary (tree) # statistiche regressione/classificazione Corso di Analisi di Mercato - Anno 2010 etainterv< 76.5 2.842 n=38 nmedioprodacq>=2.5 nmedioprodacq< 4.5 della 5 Lettura dell'albero di regressione Le modalità delle variabili sono indicate con le lettere dell’alfabeto: Es: Primo nodo spesamedia=a Come si interpreta? > levels(dati$spesamedia) [1] "alta" "bassa" "media” La modalità “a” è “alta”, la “b” è “bassa”, la “c” è “media”. Corso di Analisi di Mercato - Anno 2010 5.941 n=17 8.231 n=13 etainterv>=33.5 7.929 n=14 11.42 n=19 10.71 n=7 Corso di Analisi di Mercato - Anno 2010 6 Lettura dell'albero di regressione Quindi la condizione posta nel nodo 1 è: gli individui che appartengono alla modalità “a” sono quelli che vanno nella parte sinistra dell’albero. Per verificarlo utilizziamo il comando path.rpart 7 Corso di Analisi di Mercato - Anno 2010 8 Path.rpart > path.rpart(tree,node=2) Path.rpart In alternativa si può selezionare il nodo che interessa direttamente cliccandoci sopra, dopo aver digitato: path.rpart(tree,print.it=T) node number: 2 root spesamedia=alta È ovviamente necessario che il grafico sia già aperto. Corso di Analisi di Mercato - Anno 2010 9 Corso di Analisi di Mercato - Anno 2010 Oggetti rpart • $frame: restituisce i nodi; tree$frame • $where: a quale riga del’oggetto frame appangono le unità statistiche del dataframe di partenza • $method: metodo utilizzato; • $cptable: tabella dei tagli ottimali; • $terms: formula utilizzata; • $call: restituisce il comando utilizzato per il creare l’albero Corso di Analisi di Mercato - Anno 2010 10 Frame > tree$frame var n wt dev yval complexity ncompete nsurrogate 1 spesamedia 108 108 2516.32407 6.657407 0.339156865 4 2 <leaf> 38 38 105.05263 2.842105 0.006805745 0 3 etainterv 70 70 1557.84286 8.728571 0.075131187 4 6 nmedioprodacq 51 51 964.15686 7.725490 0.018168871 4 12 nmedioprodacq 30 30 585.86667 6.933333 0.015346910 4 24 <leaf> 17 17 244.94118 5.941176 0.010000000 0 25 <leaf> 13 13 302.30769 8.230769 0.010000000 0 13 etainterv 21 21 332.57143 8.857143 0.014391742 3 26 <leaf> 14 14 218.92857 7.928571 0.010000000 0 27 <leaf> 7 7 77.42857 10.714286 0.010000000 0 7 <leaf> 19 19 404.63158 11.421053 0.010000000 0 5 0 3 5 4 0 0 1 0 0 0 Dov’è presente la scritta “leaf” significa che si tratta di un nodo terminale. 11 Corso di Analisi di Mercato - Anno 2010 12 I nodi Where tree$where Contiene gli indici di appartenenza ai nodi degli individui e relativi nodi terminali nodo7<-dati [tree$where==11,] # crea un dataframe con tutti gli individui che ricadono nel nodo terminale 7(riga 11 dell’oggetto tree$frame. summary(nodo7) Corso di Analisi di Mercato - Anno 2010 Corso di Analisi di Mercato - Anno 2010 13 Un es. di albero di classificazione 14 Un es. di albero di classificazione tipologiainterv=ac | > tree2<tree2<-rpart(dati$mezzipubb~.,data=dati) > plot(tree2,margin=0.1) > text (tree2, use.n=T,cex=0.6) luogodomicilio=a piedi 4/31/0 etainterv>=51 no 31/0/5 no 7/0/4 Corso di Analisi di Mercato - Anno 2010 15 si 7/0/19 Corso di Analisi di Mercato - Anno 2010 16 Un es. di albero di classificazione > levels(dati$tipologiainterv) [1] "famiglie" "pensionati" "single" tree$where Contiene gli indici di appartenenza ai nodi degli individui e relativi nodi terminali > nodo4<-dati [tree2$where==3,] > summary(nodo4) A sinistra a del primo nodo 1 vanno coloro che hanno modalità “a” e “c”. Le lettere seguono l’ l’ordine del vettore levels() e quindi sono “famiglie famiglie” ” e “single single””. A destra invece va la modalità “b”: i “pensionati pensionati””. Corso di Analisi di Mercato - Anno 2010 Where 17 Corso di Analisi di Mercato - Anno 2010 18