X - Università degli Studi di Pavia

Corso di Metodi Quantitativi
per l’Analisi Economica
Prof.ssa Silvia Figini– silvia.figini@unipv.it
Ricevimento studenti: Mercoledì ore 14-16 e su
appuntamento
Argomenti del corso
Processo di esplorazione e modellazione di grandi masse di dati
per scoprire regolarità o relazioni non note a priori
allo scopo di ottenere risultati chiari e utili.
Fasi del processo:
a. 
Definizione degli obiettivi dell’analisi
b. 
Organizzazione dei dati
c. 
Analisi esplorativa dei dati
d. 
Costruzione modelli statistici
e. 
Valutazione dei modelli
f. 
Interpretazione dei risultati
Tipologie di variabili
VARIABILI QUALITATIVE
•  NOMINALI: categorie distinte senza
ordinamento
•  ORDINALI: categorie distinte con ordinamento
implicito o esplicito
VARIABILI QUANTITATIVE
•  DISCRETE: numero finito di valori
•  CONTINUE: infinità numerabile di valori
La matrice dei dati
ID
1
X1
X2
…
…
Xj
…
…
…
Xp
x11
x1j
x1p
xi1
xij
xip
xn1
xnj
xnp
2
…
…
i
…
…
n
Ogni riga rappresenta le caratteristiche relative ad ogni i-esima unità statistica
(i=1,…,n).
X1,…,Xp sono chiamate variabili indipendenti o covariate.
Misure di posizione (i)
MEDIA ARITMETICA
La MODA è la modalità della variabile a cui è associata la massima
frequenza.
La MEDIANA in una sequenza ordinata di dati è quel valore che ripartisce
la distribuzione in due parti uguali.
Misure di posizione (ii)
MODA
MEDIA ARITMETICA (Y) =
µ(Y) = 1.103464
MEDIANA (Y) = 1.108847
Comandi utili: hist, mean, median
Misure di posizione (R)
> summary(y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.904 2.241 2.414 2.419 2.568 2.984
Consideriamo una variabile quantitativa “y” e calcoliamo: MINIMO, Q1, MEDIANA
(Q2), MEDIA, Q3 E MASSIMO.
Plot(y)
Misure di posizione: boxplot
boxplot(y,ylab="valori")
Il
box
plot
è
una
rappresentazione grafica dei
valori ottenuti in precedenza.
E’ utile per stabilire se la variabile
che si analizza è simmetrica.
Inoltre, è uno strumento grafico
utile per identificare la presenza
di osservazioni anomale.
Misure di posizione:
valori anomali
Range Interquartile:
Q3 – Q1 = 980 – 850 = 130
(130 x 1.5) = 195
Q1 – 195 = 655
980 + 195= 1175
Valori >1175 e valori < 655
sono da considerarsi outliers.
summary(speed)
Min. 1st Qu. Median Mean 3rd Qu. Max.
650 850 940 909 980 1070
Misure di variabilità
(dati quantitativi)
VARIANZA
SCARTO QUADRATICO MEDIO
COEFFICIENTE DI VARIAZIONE
Misure di variabilità più semplici sono ad esempio il RANGE (Massimominimo) e la DIFFERENZA INTERQUARTILE (Q3-Q1).
Misure di variabilità: range
Rappresentiamo graficamente il
seguente vettore di dati:
y<-c(13,7,5,12,9,15,6,11,9,7,12)
plot(y,ylim=c(0,20))
Calcoliamo il range:
range(y)
Risultato: 5 15
Misure di variabilità: varianza
> y-mean(y)
3.3636364 -2.6363636 -4.6363636 2.3636364 -0.6363636 5.3636364 -3.6363636 1.3636364
-0.6363636 -2.6363636 2.3636364
> (y-mean(y))^2
11.3140496 6.9504132 21.4958678 5.5867769 0.4049587 28.7685950 13.2231405 1.8595041
0.4049587 6.9504132 5.5867769
> sum((y-mean(y))^2)
102.5455
> variance<-sum((y-mean(y))^2)/(length(y)-1)
> variance
10.25455
Comando equivalente: var
Misure di variabilità:
Standard Error della media
> sqrt(var(gardenA)/10)
0.4147661
> sqrt(var(gardenB)/10)
0.3651484
> sqrt(var(gardenC)/10)
1.192570
Lo standard error è per costruzione un numero sempre positivo.
E’ pari a zero quando la varianza è nulla.
Ad esempio, se considerate z<-c(1,1,1,1,1,1,1,1,1,1), quanto varrà SE(z)?
Misure di eterogeneità
(per variabili qualitative)
Per variabili qualitative, si utilizza la distribuzione di frequenza.
Casi estremi:
1)  eterogeneità nulla (massima concentrazione) se tutte le unità
presentano la medesima modalità del fenomeno in oggetto, ovvero se
pi=1 per un certo i ; pi=0 per ogni altro i.
2) eterogeneità massima (minima concentrazione) quando le unità sono
ripartite uniformemente tra le k modalità del carattere , ovvero se:
pi=1/k per i=1,…,k.
Un indice statistico atto a misurare l’eterogeneità è:
• 
Indice di Gini
Misure di
concentrazione
Per caratteri trasferibili quantitativi.
Casi estremi:
1) Concentrazione massima se il carattere quantitativo è interamente
posseduto da un’unità, ovvero se xn = nM(X) per un certo i ; xi=0 per
ogni altro i.
2) Concentrazione minima quando il carattere è uniformemente ripartito
fra le unità, ovvero xi = M(X) per i=1,…,k.
Un indice statistico atto a misurare la concentrazione è l’ indice di
concentrazione di Gini
Misure di asimmetria:
Skewness
Una distribuzione Normale
standard, ha un valore di
skewness pari a 0.
Valori negativi evidenziano
asimmetria a sx.
Valori positivi evidenziano
asimmetria a dx.
Al fine di verificare che il valore ottenuto è significativamente diverso da zero, si
costruisce un test dividendo la skewness ottenuta per il relativo standard error.
Skewness: esempio
> skew<-function(x){
+ m3<-sum((x-mean(x))^3)/length(x)
+ s3<-sqrt(var(x))^3
+ m3/s3 }
> skew(values)
[1] 1.318905
Per valutare se la skewness è
statisticamente diversa da zero, usiamo un
t-test dividendo il valore osservato di
skewness per il suo standard error, pari a
sqrt(6/n).
> skew(values)/sqrt(6/length(values))
[1] 2.949161
Misure di curtosi:
Kurtosis
Il termine “3” è incluso perchè in
una distribuzione Normale la
kurtosis è pari a 3.
Per valutare se la kurtosi è statisticamente
diversa da zero, usiamo un t-test dividendo
il valore osservato di skewness per il suo
standard error, pari a sqrt(24/n).
Kurtosis: esempio
> data<-read.table(file.choose(), header=T)
> attach(data)
> kurtosis<-function(x) {
+ m4<-sum((x-mean(x))^4)/length(x)
+ s4<-var(x)^2
+ m4/s4 - 3 }
> kurtosis(values)
[1] 1.297751
> kurtosis(values)/sqrt(24/length(values))
[1] 1.450930
Con i dati in esame, troviamo che la
kurtosis non è significativamente diversa
dalla distribuzione Normale standard.
Analisi grafica normalità
ANALISI ESPLORATIVA (cap 3)
•  Analisi di un campione: intervalli di
confidenza, bootstrap, t-test, test di
wilcoxon
•  Confronto fra campioni
•  Confronto medie, varianze, distribuzioni
•  Verifica indipendenza
•  Verifica correlazione
Analisi di un campione:
intervalli di confidenza
Dimensione del campione (n) è inferiore a 30. Nel caso analizzato, n=10.
Non è possibile usare la distribuzione normale, quindi si usa la t-Student.
AGGIUNGERE MEDIA CAMPIONARIA +/- NELLE FORMULE
IC = x ± t − value × SE
σ2
IC95% = x ± t(α = 0.025,d . f .= n−1) ×
n
Consideriamo ad esempio la variabile garden A. Al fine di costruire un IC al
95%:
>mean(gardenA)
€
2.803283
>qt(0.975,9)*sqrt(var(gardenA)/10)
0.9382662
Quindi l’intervallo di confidenza considerando 1-α=95% diventa:
2.803283±0.9382662.
Bootstrap
•  Il Bootstrap è una metodologia che serve per ricostruire la variabilità
campionaria presente nei dati.
•  Ciò mediante una procedura di simulazione che estrae
ripetutamente, con reimmissione, k campioni dai dati di partenza.
•  In corrispondenza di ogni campione si calcola il valore campionario
di una statistica di interesse.
•  Al termine si avranno k valori della statistica che potranno essere
usati per calcolare sia misure di posizione (medie) che di variabilità
(varianze, dalle quali ottenere, ad esempio, intervalli di confidenza).
Analisi di un campione:
intervalli bootstrap
Itervallo di confidenza
calcolato con il bootstrap
…: IC t-student
___: IC Normale
Analisi di un campione: T-test
t=
yA
σ 2A
nA
Il denominatore del t-test, è lo standard error associato
alla media campionaria
€
L’ipotesi nulla è che i il campione abbia media nota, di solito pari a zero.
Viene utilizzata una distribuzione t-Student con un numero di gradi di libertà pari al
numero totale delle osservazioni – numero parametri da stimare (ovvero 1)
Analisi di un campione: test di Wilcoxon
Vogliamo testare H0:µ=990 vs H1:µ≠990
Si usa il test di Wilcoxon quando i dati non sono
distribuiti secondo una normale, per verificare se la
distribuzione è simmetrica attorno ad un valore
medio noto (spesso pari a zero).
E’ un test statistico di tipo non parametrico.
wilcox.test(speed,mu=990)
Wilcoxon signed rank test with continuity correction
data: speed
V = 22.5, p-value = 0.00213
alternative hypothesis: true location is not equal to 990
Si accetta l’ipotesi alternativa, perché p=0.00213 e tale valore è minore del livello
α=0.05 scelto.
Verificare ipotesi con bootstrap
> max(a)
[1] 982
Nei 10000 campioni
derivati, il valore
massimo ottenuto è
pari a 982, quindi la
probabilità che la
media sia uguale a
990 è chiaramente
nulla, p<0.0001.
Confronto tra due campioni
•  Confronto fra due medie con assunzione di
normalità (Student t test)
•  Confronto fra due medie non parametrico, senza
assunzione di normalità (Wilcoxon test)
•  Confronto fra due varianze (Fisher F test)
•  Confronto fra distribuzioni (Kolmogorov Smirnov
test)
•  Verifica indipendenza (test del chi quadro)
•  Verifica correlazione (Pearson correlation test)
Confronto tra due medie
• T-test (Student): campioni indipendenti,
varianze costanti e normalità
•  Wilcoxon test: solo campioni indipendenti
T-test
Il denominatore del t-test, è lo standard error associato
alla differenza tra le medie.
I due standard error vengono sommati perchè dal punto
di vista teorico, se A e B sono tra di loro indipendenti:
L’ipotesi nulla è che i due campioni hanno medie uguali.
Viene utilizzata una distribuzione t-Student con un numero di gradi di libertà pari al
numero totale delle osservazioni – numero parametri da stimare (2 nel caso di due
popolazioni)
Una prima idea sulla uguaglianza o differenza tra le medie, è desumibile anche
per confronto grafico dei due box-plot.
T-test: esempio
> s2A<-var(gardenA)
> s2B<-var(gardenB)
> (mean(gardenA)-mean(gardenB))/
sqrt(s2A/10+s2B/10)
[1] -3.872983
> qt(0.975,18)
[1] 2.100922
> 2*pt(-3.872983,18)
[1] 0.001114540
1.  Calcoliamo la varianza di gardenA
e di gardenB
2.  Calcoliamo la statistica test che
restituisce il valore -3.872983
3.  Ignoriamo il segno “-” e ragioniamo
in valore assoluto
4.  Calcoliamo
il
valore
critico,
considerando α=0.05 che risulta
essere 2.100922.
5.  Siccome il valore della statistica
test (3.87) è maggiore del valore
critico (2.10) rifiutiamo l’ipotesi
nulla.
6.  La probabilità che la differenza tra
le medie sia uguale a zero è pari a
0.001114540.
T-test: abbreviato
> t.test(gardenA,gardenB)
Welch Two Sample t-test
data: gardenA and gardenB
t = -3.873, df = 18, p-value = 0.001115
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.0849115 -0.9150885
sample estimates:
mean of x mean of y
3
5
Wilcoxon Test
Il test di Wilcoxon viene usato quando non è garantita la normalità dei dati.
> ozone<-c(gardenA,gardenB)
> ozone
[1] 3 4 4 3 2 3 1 3 5 2 5 5 6 7 4 4 3 5 6 5
> label<-c(rep("A",10),rep("B",10))
> label
[1] "A" "A" "A" "A" "A" "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B"
> combined.ranks<-rank(ozone)
> combined.ranks
[1] 6.0 10.5 10.5 6.0 2.5 6.0 1.0 6.0 15.0 2.5 15.0 15.0 18.5 20.0 10.5 10.5 6.0
15.0 18.5 15.0
> tapply(combined.ranks,label,sum)
A B
66 144
Si confronta il più piccolo dei due valori con il valore riportato sulle tavole (es. n=10 e
α=0.05, il valore sulle tavole è pari a 78)
Se il valore ottenuto dal test è minore al valore delle tavole, rifiutiamo l’ipotesi nulla,
cioè che la differenza tra le medie è nulla.
Wilcoxon Test: abbreviato
> wilcox.test(gardenA,gardenB)
Wilcoxon rank sum test with continuity correction
data: gardenA and gardenB
W = 11, p-value = 0.002988
alternative hypothesis: true location shift is not equal to 0
Warning message:
In wilcox.test.default(gardenA, gardenB) :
impossibile calcolare p-value esatto in presenza di ties
N.B. il messaggio di “warning” è fondamentale ed evidenzia che non è
possibile calcolare il p-value esatto perché sono presenti nelle
misurazioni dati ripetuti. Questo fatto rende il test non parametrico più
conservativo rispetto a quello proposto in precedenza (t-test).
Confronto tra varianze: test F
> data<-read.table(file.choose(),header=T)
> attach(data)
> fix(data)
> names(data)
[1] "gardenB" "gardenC"
N=10 osservazioni
Varianza gardenC > varianza gardenB
> var(gardenB)
[1] 1.333333
> var(gardenC)
[1] 14.22222
> F.ratio<-var(gardenC)/var(gardenB)
> F.ratio
[1] 10.66667
> valore.critico<-qf(0.975,9,9)
> valore.critico
[1] 4.025994
> 2*(1-pf(F.ratio,9,9))
[1] 0.001624199
Costruiamo allora il test F considerando il rapporto tra le
due varianze, seguendo l’ipotesi (C>B) e calcoliamo il
valore critico considerando α=0.05 e gradi di libertà pari a
N-1=10-1=9.
Siccome il valore del test F (10.66667) è superiore rispetto
al valore critico (4.025994) , rifiutiamo l’ipotesi di
uguaglianza tra le varianze e accettiamo che le varianze
sono statisticamente diverse.
Per maggiore precisione calcoliamo il p-value associato al
test F (0.001624199). Quindi, la probabilità che le varianze
siano uguali è minore di 0.001624199.
N.B. Le medie di gardenC e di gardenB sono uguali,
questo è opportuno.
Test F: abbreviato
> var.test(gardenB,gardenC)
F test to compare two variances
data: gardenB and gardenC
F = 0.0938, num df = 9, denom df = 9, p-value = 0.001624
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.02328617 0.37743695
sample estimates:
ratio of variances
0.09375
Confronto fra distribuzioni:
Kolmogorov Smirnov Test
Il test di kolmogorov Smirnov lavora
sulla funzione di ripartizione.
> table(location)
location
A B
50 70
> A<-size[location=="A"]
> B<-size[location=="B"]
>
> ks.test(A,B)
Two-sample Kolmogorov-Smirnov test
data: A and B
D = 0.2629, p-value = 0.02911
alternative hypothesis: two-sided
Le due distribuzioni sono statisticamente differenti.
MA SONO DIVERSE RISPETTO ALLA MEDIA O ALLA VARIANZA? Vedi esercizio pagina successiva
Esercizio
Welch Two Sample t-test
data: A and B
t = -1.6073, df = 117.996, p-value = 0.1107
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.494476 0.259348
sample estimates:
mean of x mean of y
24.11748 25.23504
Il test t ci dice che le
medie sono
statisticamente uguali.
> var.test(A,B)
F test to compare two variances
data: A and B
F = 0.5014, num df = 49, denom df = 69, p-value = 0.01192
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.3006728 0.8559914
sample estimates:
ratio of variances
0.5014108
Il test F ci dice che le
varianze sono
statisticamente diverse.
Test di indipendenza (variabili qualitative)
Il test del chi-quadro considera le frequenze osservate (O) e le
frequenze attese (E). Le frequenze attese vengono determinate sulla
base della situazione di indipendenza tra le variabili.
Per capire se le variabili sono statisticamente indipendenti, si confronta
il valore della statistica con il valore critico.
Il numero di gradi di libertà viene calcolato:
(J-1) x (H-1)
> count<-matrix(c(38,14,11,51),nrow=2)
> count
[,1] [,2]
[1,] 38 11
Tabella di contingenza
[2,] 14 51
> chisq.test(count)
Pearson's Chi-squared test
with Yates' continuity correction
data: count
X-squared = 33.112, df = 1, p-value =
8.7e-09
> chisq.test(count,correct=F)
Pearson's Chi-squared test
data: count
X-squared = 35.3338, df = 1, p-value = 2.778e-09
Correlazione (variabili quantitative)
> var(x)
[1] 199.9837
> var(y)
[1] 977.0153
> var(x,y)
[1] 414.9603
>
> var(x,y)/sqrt(var(x)*var(y))
[1] 0.9387684
Equivalentemente:
> cor(x,y)
[1] 0.9387684
Matrice di correlazione
> pollute<-read.table(file.choose(),header=TRUE)
> attach(pollute)
> names(pollute)
[1] "Pollution" "Temp"
"Industry" "Population" "Wind"
"Rain"
"Wet.days"
> cor(pollute)
Pollution
Temp
Industry
Population
Wind
Rain
Wet.days
Pollution 1.00000000 -0.43360020 0.64516550 0.49377958 0.09509921 0.05428389 0.36956363
Temp
-0.43360020 1.00000000 -0.18788200 -0.06267813 -0.35112340 0.38628047 -0.43024212
Industry 0.64516550 -0.18788200 1.00000000 0.95545769 0.23650590 -0.03121727 0.13073780
Population 0.49377958 -0.06267813 0.95545769 1.00000000 0.21177156 -0.02606884 0.04208319
Wind
0.09509921 -0.35112340 0.23650590 0.21177156 1.00000000 -0.01246601 0.16694974
Rain
0.05428389 0.38628047 -0.03121727 -0.02606884 -0.01246601 1.00000000 0.49605834
Wet.days 0.36956363 -0.43024212 0.13073780 0.04208319 0.16694974 0.49605834 1.00000000
>
> cor(Pollution,Wet.days)
[1] 0.3695636
Test di correlazione
> cor(Summer, Winter)
[1] 0.8820102
> cor.test(Summer, Winter)
Pearson's product-moment correlation
data: Summer and Winter
t = 4.9521, df = 7, p-value = 0.001652
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5259984 0.9750087
sample estimates:
cor
0.8820102
La correlazione tra le due variabili è altamente significativa, infatti, il pvalue è pari a 0.001652.
Regressione lineare
•  La regressione lineare è un metodo utilizzato per
problemi previsivi caratterizzati da una variabile
target (dipendente) quantitativa.
•  Il modello di regressione semplice spiega la
variabile dipendente (Y) in funzione di una sola
variabile indipendente (X) .
•  Il modello di regressione multipla spiega la Y in
funzione di un insieme di variabili indipendenti
(esplicative).
Regressione lineare semplice
•  Y è la viariabile dipendente (o risposta)
•  X variabile indipendente (esplicativa)
•  Il modello statistico più semplice consiste nello
spiegare Y in funzione di X attraverso la
considerazione di una relazione lineare tra le
variabili statistiche X e Y esprimibile per ogni
coppia di osservazioni (xi , yi) dalla seguente
funzione di regressione:
y i = a + bx i + εi
(i=1,2,…,n)
Ipotesi del modello lineare
•  Omoschedasticità
•  Errori con distribuzione normale
•  Relazione lineare tra Y e X
•  Addittività
y i = a + bx i + εi
“a” è l’intercetta della funzione di regressione
“b” è il coefficiente di regressione
εi è il termine di errore
€
yi
Y
ei
εi = y i − yˆ i
€
xi
Stima di “a” e “b”
Cov(XY )
b=
=
V (X)
M(XY ) − M(Y )M(X)
=
V (X)
a = M(X) − bM(Y )
€
“a” e “b” sono ottenuti attraverso il metodo di
stima di massimaverosimiglianza.
€
Rispettano criteri di efficienza (Teorema di
Gauss-Markov).
Bontà del modello
SST
=
SSR
+
SSE
E’ fondamentale per valutare la bontà del modello la scomposizione della
varianza e un indice opportuno, R2.
L’indice assume valori tra 0 (retta costante) e 1 (perfetto adattamento della retta
ai dati.
Regressione lineare multipla
•  La regressione lineare multipla è definita dalla seguente
relazione, per (i=1,2,…,n):
y i = a + b1 x i1 + b2 x i2 + ....+ bk x ik + εi
€
Regressione lineare semplice
Call:
lm(formula = growth ~ tannin)
Coefficients:
(Intercept)
tannin
11.756
-1.217
Calcoliamo seguendo le formule “a” e “b”
> SSX=sum(tannin^2)-sum(tannin)^2/length(tannin)
> SSX
[1] 60
> SSY=sum(growth^2)-sum(growth)^2/length(growth)
> SSY
[1] 108.8889
> SSXY=sum(tannin*growth)-sum(tannin)*sum(growth)/
length(tannin)
> SSXY
[1] -73
a=11.756, b=-1.217
fitted<-predict(lm(growth~tannin))
> fitted
1
2
3
4
5
6
7
8
9
11.755556 10.538889 9.322222 8.105556 6.888889 5.672222 4.455556 3.238889 2.022222
Regressione lineare semplice
I coefficienti “a” e “b” sono statisticamente significativi?
> model<-lm(growth~tannin)
>
> summary(model)
Call:
lm(formula = growth ~ tannin)
Residuals:
Min
1Q Median
3Q Max
-2.4556 -0.8889 -0.2389 0.9778 2.8944
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 11.7556 1.0408 11.295 9.54e-06 ***
tannin
-1.2167 0.2186 -5.565 0.000846 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.693 on 7 degrees of freedom
Multiple R-squared: 0.8157,
Adjusted R-squared: 0.7893
F-statistic: 30.97 on 1 and 7 DF, p-value: 0.000846
Analisi della varianza del
modello
> summary.aov(model)
Df Sum Sq Mean Sq F value Pr(>F)
tannin
1 88.817 88.817 30.974 0.000846 ***
Residuals 7 20.072 2.867
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
Analisi dei residui (1)
Analisi dei residui (2)
Regressione lineare multipla:
scatter plot
Dati: ozone.data
pairs(ozone.pollution)
Regressione lineare multipla: smoothed
scatter plot
Dati: ozone.data
pairs(ozone.pollution,panel=
panel.smooth)
Regressione
(risultati)
lineare
Call:
lm(formula = ozone ~ rad + temp + wind)
Residuals:
Min
1Q Median
3Q Max
-40.485 -14.210 -3.556 10.124 95.600
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -64.23208 23.04204 -2.788 0.00628 **
rad
0.05980 0.02318 2.580 0.01124 *
temp
1.65121 0.25341 6.516 2.43e-09 ***
wind
-3.33760 0.65384 -5.105 1.45e-06 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 21.17 on 107 degrees of freedom
Multiple R-squared: 0.6062, Adjusted R-squared: 0.5952
F-statistic: 54.91 on 3 and 107 DF, p-value: < 2.2e-16
multipla:
Analisi dei residui (1)
Analisi dei residui (2)
Modelli lineari generalizzati
(GLM)
• 
Sono una classe di modelli predittivi parametrici basati su particolari
distribuzioni di probabilità appartenenti alla famiglia esponenziale.
• 
Un modello lineare generalizzato mette in relazione una funzione del valore
atteso della variabile risposta, assunta aleatoria, con le variabili esplicative,
attraverso un’equazione avente forma lineare.
• 
E' specificato da tre componenti: una componente aleatoria che identifica la
variabile risposta Y e assume una distribuzione di probabilità per essa; una
componente sistematica che specifica quali sono le variabili esplicative
usate come predittori nel modello; infine una funzione legame che descrive
la relazione funzionale tra la componente sistematica ed il valore atteso
della componente aleatoria.
Componenti GLM
• 
Per un campione di ampiezza n, la componente aleatoria di un modello
lineare generalizzato è costituita da un insieme di variabili casuali Y1,…,Yn,
assunte indipendenti, ciascuna con una distribuzione estratta da una
famiglia esponenziale.
• 
La componente sistematica di un modello lineare generalizzato specifica
quali sono e quale è il ruolo delle variabili esplicative nel modello.
Modelli GLM
•  Regressione lineare multipla (done!)
•  Regressione per dati di conteggio
•  Regressione per dati su proporzioni
(special case: Regressione Logistica)
Modelli GLM per dati di
conteggio
La distribuzione di Poisson è solitamente utilizzata per modellare la probabilità
di osservare numeri interi, corrispondenti a conteggi, in un periodo di tempo
prefissato (ad esempio, il numero di clienti che entrano in un supermercato
in un'ora; oppure il numero di telefonate ricevute da un call center in una
giornata).
La distribuzione di Poisson è una distribuzione discreta (associa una probabilità
non nulla a tutti i numeri interi positivi, oltre allo zero), ed è parametrizzata
da un parametro che rappresenta il valore atteso (media) dei conteggi.
La distribuzione di Poisson appartiene alla famiglia esponenziale.
Regressione per dati di
conteggio
•  La regressione per dati di conteggio si utilizza per
modellare il numero di eventi che succedono in un
tempo stabilito.
•  I modelli di regressione utili per dati di conteggio sono
GLM con link=poisson
•  I termini di errore sono distribuiti secondo una poisson
•  Il link è il logaritmo
Esempio di regressione con dati
di conteggio
•  Variabile target: Numero di persone con
tumore in un anno in una determinata
clinica
•  Variabile esplicativa: distanza in Km dalla
centrale nucleare
•  Esiste una relazione tra la distanza e
l’incidenza della malattia?
Analisi esplorativa
plot(Distance, Cancer)
Sembrerebbe
sussistere una
relazione tra il numero
di tumori in un anno in
una clinica e la
distanza in Km dalla
centrale.
Ma la relazione è
significativa?
Regressione per dati di
conteggio
> model1<-glm(Cancers~Distance,poisson)
> summary(model1)
Call:
glm(formula = Cancers ~ Distance, family = poisson)
Deviance Residuals:
Min
1Q Median
3Q
Max
-1.5504 -1.3491 -1.1553 0.3877 3.1304
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.186865 0.188728 0.990 0.3221
Distance -0.006138 0.003667 -1.674 0.0941 .
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Il trend non
significativo.
sembra
essere
Inoltre, siccome
Residual deviance > Residual
Degree of Freedom si evidenza il
fenomeno di OVERDISPERSION
(varianza non spiegata della
variabile risposta).
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 149.48 on 93 degrees of freedom
Residual deviance: 146.64 on 92 degrees of freedom
Number of Fisher Scoring iterations: 5
Si “compensa” l’overdispersion
ristimando il modello usando per
gli errori una distribuzione quasipoisson.
Regressione per dati di conteggio
(overdispersion)
> model2<-glm(Cancers~Distance,quasipoisson)
> summary(model2)
Call:
glm(formula = Cancers ~ Distance, family = quasipoisson)
Deviance Residuals:
Min
1Q Median
3Q
Max
-1.5504 -1.3491 -1.1553 0.3877 3.1304
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.186865 0.235364 0.794 0.429
Distance -0.006138 0.004573 -1.342 0.183
(Dispersion parameter for quasipoisson family taken to be
1.555271)
Null deviance: 149.48 on 93 degrees of freedom
Residual deviance: 146.64 on 92 degrees of freedom
Number of Fisher Scoring iterations: 5
Il p-value relativo alla
variabile
“distance”
è
migliorato, ma resta sempre
non sigificativo.
Pertanto, non esiste una
relazione significativa tra la
veriabile target e la variabile
esplicativa.
Dati di conteggio: Poisson
•  Si vuole studiare il numero di fallimenti in 80 città in un determinato
orizzonte temporale.
•  Siamo difronte ad un processo di Poisson.
•  La distribuzione di Poisson è una distribuzione di probabilità discreta
e nel caso in esame, la probabilità di osservare un numero di
fallimenti pari ad “x” è:
λx e− λ
λ
P(X = x) =
= P(X = x −1)
x!
x!
Nella distribuzione di Poisson, la media è uguale alla varianza, pari a λ.
€
Dati di conteggio: esempio (1)
> case.book<read.table(file.choose(),header=T)
> attach(case.book)
> names(case.book)
[1] "cases"
1.  Per prima cosa dobbiamo contare il numero di città con zero fallimenti,
un fallimento, 2 fallimenti ecc. (comando “table”).
> frequenze<-table(cases)
> frequenze
cases
0 1 2 3 4 5 6 7 8 9 10
34 14 10 7 4 5 2 1 1 1 1
Ci sono 34 paesi che non hanno fallimenti, 14 paesi con 1 fallimento e un
paese con 10 fallimenti.
> mean(cases)
[1] 1.775
Dati di conteggio: esempio (2)
Usando la distribuzione Poisson
con media pari a 1.775 ,
valutiamo la distribuzione dei
valori osservati (sx) e dei valori
previsti (dx).
Ci chiediamo se i dati che
stiamo
analizzando
sono
veramente distribuiti secondo
una Poisson.
Basta calcolare
rapporto:
il
Varianza/media =1
Perché? Ditelo voi!!!
seguente
Dati di conteggio: esempio (2)
> frequencies<-table(cases)
> par(mfrow=c(1,2))
>
> barplot(frequencies,ylab="Frequency",xlab="Cases",col="red")
> barplot(dpois(0:10,1.775)*80,names=as.character(0:10),ylab="Frequency",
+ xlab="Cases",col="red")
>
> var(cases)/mean(cases)
[1] 2.99483
Siccome il rapporto tra la varianza e la media è diverso da 1, la distribuzione
idonea a modellare i dati non è di tipo Poisson.
Una regola empirica dice che se il rapporto tra la varianza e la media è maggiore
di 1, allora una distribuzione alternativa è la Binomiale Negativa.
Dati di conteggio: Binomiale
Negativa
• 
La distribuzione binomiale negativa è una distribuzione discreta utile a
descrivere dati in cui la varianza è maggiore della media.
• 
La binomiale negativa ha due parametri, la media e un parametro di
“clumping”.
• 
La distribuzione di probabilità è:
x
⎛
⎞
⎛ µ ⎞ Γ(k + x) µ
P(X = x) = ⎜1+ ⎟
⎜
⎟
⎝ k ⎠ x!Γ(k) ⎝ µ + k ⎠
−k
dove µ è la media, k il parametro di “clumping” (k>0) e Γ la funzione Gamma.
“k” si stima sulla base della media e varianza del campione di dati a
disposizione.
€
2
k≈
µ
s2 − µ
Dati di conteggio: Binomiale
Negativa
> negbin<-function(x,u,k) (1+u/k)^(-k)*(u/(u+k))^x*
+ gamma(k+x)/(factorial(x)*gamma(k))
>
> xf<-numeric(11)
> for (i in 0:10) xf[i+1]<-negbin(i,0.8,0.2)
> barplot(xf)
> exp<-dnbinom(0:10,1,mu=1.775)*80
>
> both<-numeric(22)
> both[1:22 %% 2 != 0]<-frequencies
> both[1:22 %% 2 == 0]<-exp
> labels<-character(22)
> labels[1:22 %% 2 == 0]<-as.character(0:10)
> barplot(both,col=rep(c("white","grey"),11),names=labels,
+ ylab="Frequency",xlab="Cases")
> legend(16,30,c("Observed","Expected"), fill=c("white","grey"))
I dati possono essere modellati
usando la binomiale negativa se la
distribuzione osservata è uguale a
quella attesa. Usiamo il test di
adattamento del chi-quadro.
Dati di conteggio: Binomiale
Negativa
> cs<-factor(0:10)
> levels(cs)[6:11]<-"5+"
> levels(cs)
[1] "0" "1" "2" "3" "4" "5+"
>
> ef<-as.vector(tapply(exp,cs,sum))
> of<as.vector(tapply(frequencies,cs,sum))
>
> sum((of-ef)^2/ef)
[1] 3.594145
> 1-pchisq(3.594145,3)
[1] 0.3087555
Concludiamo
che
la
binomiale
negativa
è
opportuna a modellare i dati
di questo esempio.
Infatti,
la
distribuzione
osservata
non
è
statisticamente diversa da
quella attesa.
Dati per proporzioni
•  La distribuzione statistica utile per
modellare dati per proporzioni è la
binomiale.
⎛
⎞ x
n!
n−x
P(X = x) = ⎜
⎟ϑ (1− ϑ ) , x = 0,1,...,n
⎝ x!(n − x)!⎠
La media è pari a nϑ e la varianza è nϑ(1-ϑ). Notiamo che la varianza in
una binomiale è sempre minore della media.
€
Il modello statistico utile per modellare dati per proporzioni, caratterizzati da
una variabile target Y binaria è la regressione logistica.
La distribuzione binomiale
• 
La distribuzione binomiale è utilizzata per modellare la probabilità di
osservare un numero qualunque di "successi" (o esiti favorevoli) in un
insieme di n prove dicotomiche (binarie) ripetute, casuali ed indipendenti
(ad esempio, quanti clienti, fra gli n di un certo supermercato, acquistano un
certo prodotto, oppure quanti prestiti, fra gli n assegnati da un certo istituto
di credito, vanno a buon fine).
• 
La distribuzione binomiale è una distribuzione discreta (associa una
probabilità non nulla a tutti i numeri interi positivi, oltre allo zero, fino ad n,
che rappresenta il numero di prove effettuate) ed è parametrizzata, oltre
che dal numero di prove n, solitamente noto, dal parametro che rappresenta
la probabilità di ottenere un successo in ciascuna prova.
Regressione Logistica
• 
Il modello di regressione logistica è utilizzato per prevedere i valori di una variabile dipendente
dicotomica, sulla base delle variabili esplicative disponibili, che possono essere su qualunque
scala (ad esempio, quantitative o qualitative).
• 
Nell’analisi della regressione logistica la previsione di Y è un valore compreso fra 0 e 1.
• 
Applicazioni della regressione logistica sono riscontrabili in problemi di credit scoring e in
qualunque problema previsivo caratterizzato da una variabile target binaria.
• 
In termini generali, viene seguito il metodo della massima verosimiglianza, massimizzando la
verosimiglianza, ovvero derivando la log-verosimiglianza rispetto a ciascun coefficiente nel vettore
e ponendo i risultati uguali a zero. Diversamente da quanto accade nel modello lineare normale, il
risultante sistema di equazioni è non lineare nei parametri e non possiede una soluzione in forma
esplicita. Pertanto, per ottenere le stime di massima verosimiglianza di occorre utilizzare metodi
numerici iterativi, come ad esempio il metodo di Newton-Raphson o lo scoring di Fisher ( si veda,
ad esempio, Agresti, 1990).
Regressione Logistica (1)
•  E’ un modello di regressione appartenente
alla classe dei modelli GLM.
Il legame è il “logit”.
I termini di errore sono distribuiti
secondo una distribuzione
Binomiale.
Regressione Logistica (2)
a + b1 x i 1 + b 2 x i 2 +....+ b k x ik
e
πi =
a + b1 x i 1 + b 2 x i 2 +....+ b k x ik
1+ e
Il modello di regressione logistica restituisce per ogni unità statistica, la
probabilità che questa ha di sperimentare l’ evento di interesse.
Viene utilizzata per problemi caratterizzati da variabile target binaria.
Esempi applicativi: studio del churn, rischio credito, propensione all’uso di
servizi.
Regressione Logistica (3)
Se β>0, π(x) aumenta all’aumentare di x.
Se β<0, π(x) aumenta al diminuire di x.
Dati per proporzioni: esempio
(1)
Una trasformazione
logaritmica sui dati
potrebbe migliorare la
stima del modello.
attach(numbers)
par(mfrow=c(1,2))
p<-males/(males+females)
plot(density,p,ylab="Proportion male")
plot(log(density),p,ylab="Proportion
male")
Dati per proporzioni: esempio
(2)
Call:
glm(formula = y ~ density, family = binomial)
Deviance Residuals:
Min
1Q Median
3Q
Max
-3.4619 -1.2760 -0.9911 0.5742 1.8795
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.0807368 0.1550376 0.521 0.603
density 0.0035101 0.0005116 6.862 6.81e-12 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 71.159 on 7 degrees of freedom
Residual deviance: 22.091 on 6 degrees of freedom
AIC: 54.618
Number of Fisher Scoring iterations: 4
> y<-cbind(males,females)
> model<-glm(y~density,binomial)
> summary(model)
Dati per proporzioni: esempio
(3)
Call:
glm(formula = y ~ log(density), family = binomial)
Deviance Residuals:
Min
1Q Median
3Q
Max
-1.9697 -0.3411 0.1499 0.4019 1.0372
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.65927 0.48758 -5.454 4.92e-08 ***
log(density) 0.69410 0.09056 7.665 1.80e-14 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 71.1593 on 7 degrees of freedom
Residual deviance: 5.6739 on 6 degrees of freedom
AIC: 38.201
Number of Fisher Scoring iterations: 4
Trasformando
la
variabile
attraverso la funzione logaritmo
notiamo che I risultati cambiano!!
In particolare si riduce la
variabilità dei dati e il modello è
maggiormente significativo.
Potrei
usare
la
stessa
trasformazione in presenza di dati
negativi?
Regressione Gamma
•  E’ un modello di regressione appartenente
alla classe dei modelli GLM.
•  Gli errori sono distribuiti secondo una
Gamma
•  Il link è il reciproco
Regressione Gamma: Esempio
(1)
•  La variabile target è l’età di morte di topi di
laboratorio (in mesi)
•  La variabile
esplicativa è il livello di
trattamento subito dal topo (high, low).
Regressione Gamma: Esempio
(2)
> tapply(death,treatment,mean)
control high low
3.46 6.88 4.70
>
> tapply(death,treatment,var)
control
high
low
0.4167347 2.4751020 0.8265306
Notiamo che la varianza non è costante.
Questa è la motivazione per cui modelli
che assumono varianza costante
(OMOSCHEDASTICITA’) e normalità dei
termini di errore, come il modello lineare,
non sono opportuni.
Regressione Gamma: Esempio
(3)
> model<-glm(death~treatment,Gamma)
> summary(model)
Call:
glm(formula = death ~ treatment, family = Gamma)
Deviance Residuals:
Min
1Q Median
3Q
Max
-0.4177 -0.1393 -0.1338 0.1486 0.4266
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.289017 0.008327 34.708 < 2e-16 ***
treatmenthigh -0.143669 0.009321 -15.414 < 2e-16 ***
treatmentlow -0.076251 0.010340 -7.374 1.11e-11 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for Gamma family taken to be 0.04150576)
Null deviance: 17.7190 on 149 degrees of freedom
Residual deviance: 5.8337 on 147 degrees of freedom
Number of Fisher Scoring iterations: 4
Vediamo
cosa
succede
utilizzando
un
modello
di
regressione lineare.
Le ipotesi di base del modello di
regressione lineare sono violate.
Regressione lineare: non appropriata!! (1)
Regressione lineare: non
appropriata!! (2)
Analisi della sopravvivenza
•  L’analisi della sopravvivenza comprende una serie di
tecniche descrittive e predittive utili per spiegare una
funzione di rischio detta hazard.
•  Tipiche applicazioni sono in ambito medico dove si vuole
studiare la proababilità di sopravvivenza di una corte di
soggetti a determinati istanti di tempo.
•  I dati che vengono usati per la stima della probabilità di
sopravvivenza sono: Indicatore di censura/evento,
variabile di durata (tempo) e variabili esplicative.
Analisi della sopravvivenza (1)
> sheep<-read.table(file.choose(),header=T)
> attach(sheep)
The following object(s) are masked from mortality :
death
> names(sheep)
[1] "death" "status" "weight" "group"
>
La libreria di R che serve per l’analisi della sopravvivenza è la “survival”.
> library(survival)
Analisi della sopravvivenza (3)
> names(sheep)
[1] "death" "status" "weight"
"group"
>
plot(survfit(Surv(death,statu
s)~group),lty=c(1,3,5),
+ xlab="Age at death
(months)")
>
Il modello predittivo è il modello di Cox, disponibile in R con la funzione
“coxph”.
Alberi di regressione
•  Sono modelli supervisionati non parametrici utili
per prevedere una variabile Y di tipo quantitativo
in funzione di “k” variabili esplicative.
•  In un problema previsivo caratterizzato da Y
quantitativa, al fine di selezionare il migliore
modello è utile confrontare ad esempio metodi
parametrici basati sulla regressione lineare con
metodi non parametrici basati su alberi di
classificazione.
Alberi di regressione (2)
•  Gli alberi possono essere definiti attraverso una procedura ricorsiva,
con la quale un insieme di n unità statistiche vengono
progressivamente divise in gruppi, secondo una regola divisiva in
cui a ogni passo viene massimizzata la omogeneità o la purezza
della variabile risposta in ogni gruppo ottenuto.
•  Per ogni osservazione data della variabile risposta, yi, l’albero
produce un valore stimato che è uguale alla media della variabile
target valutata nel gruppo che contiene l’osservazione “i”.
Alberi di regressione: esempio 1
Alberi di regressione: esempio 1
> summary(model)
Regression tree:
tree(formula = ozone ~ ., data = dati)
Number of terminal nodes: 8
Residual mean deviance: 347.4 = 35790 / 103
Distribution of residuals:
Min. 1st Qu. Median
Mean 3rd Qu.
Max.
-4.500e+01 -8.842e+00 -2.969e+00 1.914e-16 7.516e+00 1.070e+02
Alberi di regressione: esempio 2
Alberi di regressione: esempio
2
Alberi di regressione: esempio 2
> summary(model)
Regression tree:
tree(formula = Pollution ~ ., data = pollute)
Variables actually used in tree construction:
[1] "Industry" "Population" "Wet.days" "Temp"
"Wind"
Number of terminal nodes: 6
Residual mean deviance: 253.6 = 8877 / 35
Distribution of residuals:
Min. 1st Qu. Median
Mean 3rd Qu.
Max.
-3.200e+01 -7.000e+00 -2.000e+00 -3.463e-16 5.000e+00 5.057e+01
Alberi di classificazione
•  Sono modelli supervisionati non parametrici utili
per prevedere una variabile Y di tipo qualitativo
(binario) in funzione di “k” variabili esplicative.
•  In un problema previsivo caratterizzato da Y
binaria, al fine di selezionare il migliore modello
è utile confrontare ad esempio metodi
parametrici basati sulla regressione logistica con
metodi non parametrici basati su alberi di
classificazione.
Misure di purezza
•  Misclassification
•  Gini
•  Entropia
Alberi di classificazione: R
> ir.tr <- tree(Species ~., iris)
> ir.tr
node), split, n, deviance, yval, (yprob)
* denotes terminal node
1) root 150 329.600 setosa ( 0.33333 0.33333 0.33333 )
2) Petal.Length < 2.45 50 0.000 setosa ( 1.00000 0.00000 0.00000 ) *
3) Petal.Length > 2.45 100 138.600 versicolor ( 0.00000 0.50000 0.50000 )
6) Petal.Width < 1.75 54 33.320 versicolor ( 0.00000 0.90741 0.09259 )
12) Petal.Length < 4.95 48 9.721 versicolor ( 0.00000 0.97917 0.02083 )
24) Sepal.Length < 5.15 5 5.004 versicolor ( 0.00000 0.80000 0.20000 ) *
25) Sepal.Length > 5.15 43 0.000 versicolor ( 0.00000 1.00000 0.00000 ) *
13) Petal.Length > 4.95 6 7.638 virginica ( 0.00000 0.33333 0.66667 ) *
7) Petal.Width > 1.75 46 9.635 virginica ( 0.00000 0.02174 0.97826 )
14) Petal.Length < 4.95 6 5.407 virginica ( 0.00000 0.16667 0.83333 ) *
15) Petal.Length > 4.95 40 0.000 virginica ( 0.00000 0.00000 1.00000 ) *
> summary(ir.tr)
Classification tree:
tree(formula = Species ~ ., data = iris)
Variables actually used in tree construction:
[1] "Petal.Length" "Petal.Width" "Sepal.Length"
Number of terminal nodes: 6
Residual mean deviance: 0.1253 = 18.05 / 144
Misclassification error rate: 0.02667 = 4 / 150
Alberi di classificazione: R
plot(prune.tree(ir.tr))
Alberi di classificazione: R
plot(ir.tr)
text(ir.tr)
Misure di performance
•  Matrice di confusione
•  Curva ROC
Matrice di confusione
O/P
0
1
0
a
c
a+c
1
b
d
b+d
a+b
c+d
Le frequenze “a” e “d” sono le corrette classificazioni.
(a+d)/N = tasso corretta classificazione
Le frequenze “c” e “b” sono le errate classificazioni.
(c+b)/N=tasso errata classificazione
Interessanti misure sono: sensitività, specificità, FP, FN (si veda Giudici, 2003
pag. 240 e seguenti)
Matrice di confusione: indici
•  SENSITIVITA’: a/a+b
•  SPECIFICITA’: d/c+d
•  FALSI POSITIVI: c/c+d=1-specificità
•  FALSI NEGATIVI: b/a+b=1-sensitività
Matrice di confusione: R
> data(iris)
> ir.tr <- tree(Species ~., iris)
> confusion(predict(irisfit, iris), iris$Species)
true
object
setosa versicolor virginica
setosa
50
0
0
versicolor
0
48
1
virginica
0
2
49
attr(,"error")
[1] 0.02
Pacchetto richiesto: mda, class
library(mda)
Curva ROC
•  La curva Roc è uno strumento di
valutazione del modello che si basa sul
confronto tra la proporzione di non eventi
previsti come eventi (ascisse) e la
proporzione di eventi previsti come tali
(ordinate)
•  La curva ROC può anche essere usata
per selezionare i punti di cut-off e trade-off
sensitività e specificità.
Curva ROC: R
> library(ROCR)
> data(ROCR.simple)
> pred <- prediction( ROCR.simple$predictions,
ROCR.simple$labels)
> perf <- performance(pred,"tpr","fpr")
> plot(perf)
Precision e Recall: R
perf1 <- performance(pred, "prec", "rec")
> plot(perf1)
Curva Roc: R
> perf1 <- performance(pred, "sens", "spec")
> plot(perf1)
Confronto tra modelli: R
data(ROCR.hiv)
attach(ROCR.hiv)
pred.svm <- prediction(hiv.svm$predictions,
hiv.svm$labels)
perf.svm <- performance(pred.svm, 'tpr', 'fpr')
pred.nn <- prediction(hiv.nn$predictions,
hiv.svm$labels)
perf.nn <- performance(pred.nn, 'tpr', 'fpr')
plot(perf.svm, lty=3, col="red",main="Reg Log
and Class Tree for prediction of
HIV-1 coreceptor usage")
plot(perf.nn, lty=3, col="blue",add=TRUE)
plot(perf.svm, avg="vertical", lwd=3, col="red",
spread.estimate="stderror",plotCI.lwd=2,add=T
RUE)
plot(perf.nn, avg="vertical", lwd=3, col="blue",
spread.estimate="stderror",plotCI.lwd=2,add=T
RUE)
legend(0.6,0.6,c('REGLOG','CART'),col=c('red','
blue'),lwd=3)