6^ Lezione - Segmentazione binaria [modalità compatibilità]

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