Validazione dei modelli Strumenti quantitativi per la gestione



Documenti analoghi
Validazione dei modelli. Strumenti quantitativi per la gestione

Grafici in R Strumenti quantitativi per la gestione

Modelli non lineari e cross validazione. Strumenti quantitativi per la gestione

Regressione lineare multipla Strumenti quantitativi per la gestione

Statistiche di sintesi

> d = alimentazione == "benz" > mean(percorr.urbana[!d]) - mean(percorr.urbana[d]) [1] > sd(percorr.urbana[d]) [1] 2.

Regressione. Monica Marabelli. 15 Gennaio 2016

Quiz di verifica - Alberi e FC Strumenti Quantitativi per la gestione

Esercitazione Statistica Computazionale B Modelli di regressione lineare semplice Verifica di ipotesi - Analisi della varianza

Classificazione k-nn con R. Strumenti quantitativi per la gestione

R - base Emanuele Taufer

Laboratorio R Corso di Algebra e Modelli lineari (Anno Accademico )

LABORATORIO DI PROBABILITA E STATISTICA

Il modello di regressione (VEDI CAP 12 VOLUME IEZZI, 2009)

Esercitazione finale - corso R base Francesco Vidoli Ottobre 2018

Modelli con predittori qualitativi e modelli con interazioni. Strumenti quantitativi per la gestione

Analisi grafica residui in R. Da output grafico analisi regressionelm1.csv Vedi dispensa. peso-statura

Metodi Stocastici per la Finanza

Indice. 1 Introduzione ai modelli lineari 2. 2 Dataset 3. 3 Il Modello 8. 4 In pratica Peso e percorrenza... 12

Laboratorio di Statistica Aziendale Modello di regressione lineare multipla

Capitolo 12 La regressione lineare semplice

Regressione logistica. Strumenti quantitativi per la gestione

Metodi statistici per la ricerca sociale ANOVA e ANCOVA in

ANOVA a un fattore between in R

LABORATORIO 5. ANALISI DELLA VARIANZA AD UN CRITERIO DI CLASSIFICAZIONE

Modelli con predittori qualitativi e modelli con interazioni

Esercizio Dire quale variabile debba essere usata come regressore e quale sia la variabile risposta.

1. ISTOGRAMMI E GRAFICI DI ALCUNE DENSITA (COMPLEMENTO ALLA LEZIONE PRECEDENTE)

Siete invitati a cambiare un po di parametri dell esercizio (es. aumentare Nrow; diminuire sig2; diminuire i coefficienti di X3 ed X4).

Multicollinearità Strumenti quantitativi per la gestione

LABORATORIO-EXCEL N. 2-3 XLSTAT- Pro Versione 7 VARIABILI QUANTITATIVE

Anova e regressione. Andrea Onofri Dipartimento di Scienze Agrarie ed Ambientali Universitá degli Studi di Perugia 22 marzo 2011

0.1 Percorrenza e Cilindrata

Regressione lineare semplice. Strumenti quantitativi per la gestione

Regressione logistica

LABORATORIO EXCEL XLSTAT 2008 SCHEDE 2 e 3 VARIABILI QUANTITATIVE

Regressione lineare semplice

Antonella Bodini Istituto di Matematica Applicata e Tecnologie Informatiche E. Magenes del CNR

FACOLTÀ DI ECONOMIA Soluzione della Prova di autovalutazione 2012 (primi 6 CFU) ANALISI STATISTICA PER L IMPRESA

Soluzioni degli Esercizi del Parziale del 30/06/201 (Ippoliti-Fontanella-Valentini)

Regressione non lineare con un modello neurale feedforward

Regressione Mario Guarracino Data Mining a.a. 2010/2011

Strumenti informatici Realizzare grafici e tabelle con Excel e SPSS

STATISTICA 1, metodi matematici e statistici Introduzione al linguaggio R Esercitazione 8:

Fogli Elettronici: MS Excel

Laboratorio R Corso di Algebra e Modelli lineari (Anno Accademico )

LABORATORIO DI PROBABILITA E STATISTICA

Esercizio 1 GRAFICO 1. X e Y sono indipendenti. X e Y non sono correlate. La correlazione tra X e Y è <1. X e Y sono perfettamente correlate

Laboratorio di Statistica con R

ESERCITAZIONE C. Analisi di dati sperimentali PARTE 3: REGRESIONE

Laboratorio di ST1 Lezione 2

Excel Terza parte. Excel 2003

3. Piano di lavoro: - applicazione di alcune semplici procedure, con il confronto tra le diverse soluzioni possibili nell ambito del programma SPSS

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Statistical learning Strumenti quantitativi per la gestione

TOP DOWN. Compiti in classe proposti Modulo 1 JUVENILIA SCUOLA. Iacobelli Ajme Marrone

Prof.ssa Paola Vicard

STATISTICA DESCRITTIVA SCHEDA N. 5: REGRESSIONE LINEARE

Algoritmi di clustering

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Guida Software GestioneSpiaggia.it

Concetti Fondamentali

HR analyics. Analisi con le CP e analisi predittiva

CAPITOLO 8 LA VERIFICA D IPOTESI. I FONDAMENTI

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

Elaborazione dei dati su PC Regressione Multipla

La previsione delle vendite dei lm

Operazioni fondamentali

LABORATORIO DI PROBABILITA E STATISTICA

REGRESSIONE lineare e CORRELAZIONE. Con variabili quantitative che si possono esprimere in un ampio ampio intervallo di valori

General Linear Model. Esercizio

Traccia delle lezioni svolte in laboratorio Excel Excel 2003 Excel 2010

Dai dati al modello teorico

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Ricerca di outlier. Ricerca di Anomalie/Outlier

Modelli statistici per l analisi dei dati e la valutazione d efficacia Il caso del Comune di Perugia

Strumenti per la costruzione di modelli economici in Excel. Parte 4. Altre Funzioni

Obiettivi del corso. Creare, modificare e formattare un semplice database costituito da tabelle, query, maschere e report utilizzando Access 2000.

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

I ESERCITAZIONE. Gruppo I 100 individui. Trattamento I Nuovo Farmaco. Osservazione degli effetti sul raffreddore. Assegnazione casuale

Strumenti informatici 13.1

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

Esempio di prova di laboratorio

Fac-simile prova di esame

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Interpolazione ed approssimazione di funzioni

Ancova: il modello lineare in generale

FORMEZ - Centro di Formazione e Studi. Banca dati Consiglio di Stato 2010

Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi

età sesso luogo-abitazione scuola superiore esperienza insegnamento

Corso integrato di informatica, statistica e analisi dei dati sperimentali Altri esercizi_esercitazione V

Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa

LE CARTE DI CONTROLLO (4)

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Esercizio 8. Ne segue, ovviamente che le aree geografiche di riferimento sono Africa e America del Sud.

Statistiche campionarie

Capitolo 13. Interrogare una base di dati

Altre funzioni utili SINTASSI ED ESEMPI

Temi di Esame a.a Statistica - CLEF

EXCEL FUNZIONI PRINCIPALI

Transcript:

Validazione dei modelli Strumenti quantitativi per la gestione Emanuele Taufer Validazione dei modelli Il data set Auto I dati Il problema analizzato Validation set approach Diagramma a dispersione Test set e training set Regressione lineare semplice RLS: Test MSE Regressione quadratica Rq: Test MSE Regressione cubica Rc: Test MSE Regressione KNN Input nella funzione knn.reg.1() Calcolare le previsioni con KNN Plot Test MSE e training MSE Plot degli MSE Confronto test MSE Validazione dei modelli In questo esempio consideriamo il data set Auto e: adattiamo un modello di regressione lineare adattiamo una regressione polinomiale adattiamo una regressione KNN (nonparametrica) compariamo i modelli attraverso il calcolo del test MSE Il data set Auto In questo data set vi sono alcuni valori mancanti indicati con?. Nella lettura del file specifichiamo che? indica un valore mancante ( NA ) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 1/17

Auto< read.csv("http://www.cs.unitn.it/~taufer/data/auto.csv",header=t,na.strings="?") str(auto) ## 'data.frame': 397 obs. of 9 variables: ## $ mpg : num 18 15 18 16 17 15 14 14 14 15... ## $ cylinders : int 8 8 8 8 8 8 8 8 8 8... ## $ displacement: num 307 350 318 304 302 429 454 440 455 390... ## $ horsepower : int 130 165 150 150 140 198 220 215 225 190... ## $ weight : int 3504 3693 3436 3433 3449 4341 4354 4312 4425 3850... ## $ acceleration: num 12 11.5 11 12 10.5 10 9 8.5 10 8.5... ## $ year : int 70 70 70 70 70 70 70 70 70 70... ## $ origin : int 1 1 1 1 1 1 1 1 1 1... ## $ name : Factor w/ 304 levels "amc ambassador brougham",..: 49 36 231 14 161 1 41 54 223 241 2... I dati Nel data.frame eliminiamo le righe con i valori mancanti attraverso la funzione complete.cases che crea un vettore logico (T,F,T...) con F in corrispondenza di una riga con uno o più valori mancanti Auto< Auto[complete.cases(Auto),] ## elimino le righe con "NA" head(auto) ## mpg cylinders displacement horsepower weight acceleration year origin ## 1 18 8 307 130 3504 12.0 70 1 ## 2 15 8 350 165 3693 11.5 70 1 ## 3 18 8 318 150 3436 11.0 70 1 ## 4 16 8 304 150 3433 12.0 70 1 ## 5 17 8 302 140 3449 10.5 70 1 ## 6 15 8 429 198 4341 10.0 70 1 ## name ## 1 chevrolet chevelle malibu ## 2 buick skylark 320 ## 3 plymouth satellite ## 4 amc rebel sst ## 5 ford torino ## 6 ford galaxie 500 nrow(auto) ## [1] 392 Il problema analizzato file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 2/17

Poiché l obiettivo di questa esercitazione è l applicazione di tecniche di scelta dei modelli, consideriamo un solo predittore: questo ci permetterà di visualizzare i risultati. Proviamo a prevedere il consumo (mpg) in funzione della potenza del motore (horsepower) L obiettivo è dunque stimare f nel modello Stimiamo f attraverso diversi modelli: 1. regressione lineare semplice, quadratica e cubica (modello parametrico) 2. regressione KNN (non parametrico) Validation set approach Per validare i modelli utilizzeremo il cd validation set approach, in cui una parte dei dati a disposizione è messa da parte e utilizzata come test set. Il test MSE calcolato dai dati test sarà utilizzato per scegliere K nella regressione KNN comparare i diversi modelli stimati Diagramma a dispersione plot(auto$horsepower,auto$mpg) mpg = f(horsepower) + ε file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 3/17

Test set e training set Il dataset è composto da 392 unità. Suddividiamo casualmente il dataset in due parti: il training set il test set 100 292 unità unità Individuiamo le unità del training set con la funzione sample(). Il vettore train definito sotto contiene le posizioni selezionate set.seed(1) train=sample(392,292) train file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 4/17

[1] 105 146 224 354 79 348 365 255 242 24 388 68 262 391 292 188 270 [18] 372 143 290 387 382 384 47 99 142 5 140 317 124 175 217 178 67 [35] 297 239 283 39 257 379 289 228 275 194 185 274 9 165 252 238 164 [52] 294 149 83 383 34 107 174 222 136 304 98 152 110 214 85 157 250 [69] 28 356 329 376 111 336 330 323 347 123 245 301 333 334 363 101 234 [86] 63 218 38 75 44 73 18 193 263 233 237 135 121 357 360 192 103 [103] 371 287 183 62 305 137 299 170 276 206 100 295 42 4 198 29 315 [120] 362 321 296 131 369 203 122 312 55 61 326 151 21 10 167 240 154 [137] 144 271 251 129 173 380 60 65 181 112 303 288 26 211 340 385 373 [154] 109 120 43 125 313 249 50 359 207 291 179 201 94 15 76 163 225 [171] 386 186 189 86 339 195 311 160 130 300 307 41 187 106 314 40 284 [188] 370 213 247 256 258 261 375 57 117 22 342 352 318 52 278 368 51 [205] 35 97 392 338 48 132 273 19 138 364 353 265 115 259 166 59 46 [222] 350 177 87 156 219 358 8 69 216 282 196 325 309 349 341 108 169 [239] 232 70 269 88 285 161 158 32 212 20 389 241 281 208 66 84 202 [256] 226 337 381 298 236 153 191 37 102 90 200 346 95 77 127 345 14 [273] 172 316 36 23 30 119 229 254 277 344 210 243 6 150 377 17 279 [290] 197 199 104 Costruiamo i due data set, test e training, utilizzando i risultati del campionamento: Auto.test< Auto[ train,] nrow(auto.test) [1] 100 Auto.train< Auto[train,] nrow(auto.train) [1] 292 Regressione lineare semplice rls< lm(mpg~horsepower, data=auto.train) summary(rls) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 5/17

Call: lm(formula = mpg ~ horsepower, data = Auto.train) Residuals: Min 1Q Median 3Q Max 13.4369 3.1577 0.1577 2.9059 17.0611 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 39.771601 0.821389 48.42 <2e 16 *** horsepower 0.157426 0.007373 21.35 <2e 16 *** Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.887 on 290 degrees of freedom Multiple R squared: 0.6112, Adjusted R squared: 0.6099 F statistic: 455.9 on 1 and 290 DF, p value: < 2.2e 16 plot(auto$horsepower,auto$mpg) abline(rls,col="red",lwd=2) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 6/17

RLS: Test MSE Il calcolo del test MSE può essere fatto molto semplicemente definendo la media delle differenze al quadrato tra i valori di mpg nel test set e la loro previsione in base al modello rls test.mse.rls< mean((auto.test$mpg predict(rls,auto.test))^2) test.mse.rls [1] 24.66309 Regressione quadratica rq< lm(mpg~poly(horsepower,2), data=auto.train) summary(rq) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 7/17

Call: lm(formula = mpg ~ poly(horsepower, 2), data = Auto.train) Residuals: Min 1Q Median 3Q Max 14.4662 2.3486 0.0239 2.4118 15.1130 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 23.3308 0.2579 90.448 < 2e 16 *** poly(horsepower, 2)1 104.3413 4.4078 23.672 < 2e 16 *** poly(horsepower, 2)2 36.1999 4.4078 8.213 7.29e 15 *** Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.408 on 289 degrees of freedom Multiple R squared: 0.6848, Adjusted R squared: 0.6826 F statistic: 313.9 on 2 and 289 DF, p value: < 2.2e 16 plot(auto$horsepower,auto$mpg) lines(sort(auto$horsepower),predict(rq,auto)[order(auto$horsepower)],col="red",lwd=2) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 8/17

Rq: Test MSE test.mse.rq< mean((auto.test$mpg predict(rq,auto.test))^2) test.mse.rq [1] 18.43123 Regressione cubica rc< lm(mpg~poly(horsepower,3), data=auto.train) summary(rc) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 9/17

Call: lm(formula = mpg ~ poly(horsepower, 3), data = Auto.train) Residuals: Min 1Q Median 3Q Max 14.4555 2.4116 0.0247 2.3805 15.0703 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 23.3308 0.2583 90.313 <2e 16 *** poly(horsepower, 3)1 104.3413 4.4144 23.637 <2e 16 *** poly(horsepower, 3)2 36.1999 4.4144 8.200 8e 15 *** poly(horsepower, 3)3 1.6460 4.4144 0.373 0.71 Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.414 on 288 degrees of freedom Multiple R squared: 0.6849, Adjusted R squared: 0.6816 F statistic: 208.7 on 3 and 288 DF, p value: < 2.2e 16 plot(auto$horsepower,auto$mpg) lines(sort(auto$horsepower),predict(rc,auto)[order(auto$horsepower)],col="red",lwd=2) file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 10/17

Rc: Test MSE test.mse.rc< mean((auto.test$mpg predict(rc,auto.test))^2) test.mse.rc ## [1] 18.35299 Regressione KNN Per adattare una regressione KNN ai dati è necessario costruire una funzione ad hoc. La funzione knn.reg.1() disponibile nel file KNNR.r è appropriata per il caso di un solo regressore e automaticamente produce le previsioni per il vettore di dati x.test dato l input x.train e l output y.train. E possibile specificare una lista (o anche solo uno) di valori di K da considerare file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 11/17

Per indicare ad R dove trovare la funzione knn.reg.1(), copiare il file KNNR.r nella directory di lavoro di R e richiamarlo con la funzione source() knn.reg.1 < function(klist,x.train,y.train,x.test) # Regressione k nearest neighbors # # klist è la lista dei valori K da usare # x.train, y.train: il training set (indipendente dipendente) # x.test: il test set # Output: una matrice di valori previsti per il test set (una colonna per ogni K in kl ist) source("knnr.r") Input nella funzione knn.reg.1() In questo caso, la funzione knn.reg.1(), ci chiede di fornire come input i dati separati in variabile dipendente indipendente, test e training. x.train< Auto.train$horsepower y.train< Auto.train$mpg x.test< Auto.test$horsepower y.test< Auto.test$mpg Calcolare le previsioni con KNN Con il codice seguente calcoliamo le previsioni del modello KNN per valori di K da 1 a 60 ( klist=seq(60) ): y.pred.train contiene i valori previsti per il training set y.pred.test contiene i valori previsti per il test set klist< seq(60) # testiamo i risultati per k=1,2,... 60 y.pred.train< knn.reg.1(klist,x.train,y.train,x.train) y.pred.test< knn.reg.1(klist,x.train,y.train,x.test) Plot file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 12/17

plot(auto.train$horsepower,auto.train$mpg) lines(sort(auto.train$horsepower),knn.reg.1(292,x.train,y.train,x.train)[order(auto.trai n$horsepower)],col=1,lwd=2) lines(sort(auto.train$horsepower),knn.reg.1(50,x.train,y.train,x.train)[order(auto.trai n$horsepower)],col=2,lwd=2) lines(sort(auto.train$horsepower),knn.reg.1(10,x.train,y.train,x.train)[order(auto.trai n$horsepower)],col=3,lwd=2) lines(sort(auto.train$horsepower),knn.reg.1(1,x.train,y.train,x.train)[order(auto.train$h orsepower)],col=4,lwd=2) legend("topright",legend=c('k=292','k=50','k=10','k=1'),text.col=seq(4), lty=1, col=se q(4)) Test MSE e training MSE mse.train < apply((y.pred.train y.train)^2, 2, mean) mse.test < apply((y.pred.test y.test)^2, 2, mean) MSE.table< data.frame("k"=klist, "test MSE"=mse.test,"training MSE"=mse.train) knitr::kable(mse.table) K test.mse training.mse file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 13/17

1 30.09680 28.42973 2 22.43528 21.62602 3 21.63598 17.45762 4 23.00930 16.52595 5 21.19542 14.84301 6 20.04907 14.84211 7 19.88380 15.48677 8 19.68465 15.35615 9 18.49637 15.46417 10 17.73639 15.78714 11 18.34507 15.67925 12 18.53279 15.83070 13 18.53622 15.99003 14 18.57326 16.24180 15 18.67473 16.55086 16 18.09896 16.72008 17 18.23275 16.84350 18 18.30847 17.09664 19 18.29056 17.13032 20 18.52957 17.14312 21 18.33329 17.13683 22 18.19082 17.15208 23 18.51499 17.28544 24 18.65177 17.29859 25 18.58782 17.41129 26 18.79448 17.51886 27 18.85187 17.52284 28 18.67760 17.64364 29 18.67672 17.56414 file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 14/17

30 18.54286 17.51857 31 18.65928 17.55357 32 18.56971 17.55974 33 18.38003 17.52870 34 18.26046 17.49751 35 18.12801 17.44084 36 17.98945 17.47497 37 17.91272 17.51087 38 17.87040 17.54706 39 17.79941 17.46536 40 17.79758 17.49787 41 17.89832 17.50491 42 17.96041 17.65028 43 17.85633 17.75584 44 17.90828 17.70944 45 17.89409 17.71314 46 17.96101 17.76872 47 17.96844 17.82790 48 17.88406 17.78567 49 17.84261 17.87657 50 17.81711 17.84915 51 17.84355 17.98911 52 17.80041 18.05454 53 17.92845 18.18487 54 17.91767 18.26421 55 17.90798 18.28456 56 18.01142 18.28817 57 18.08693 18.31213 58 18.18657 18.38472 file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 15/17

59 18.26410 18.43718 60 18.33649 18.47335 Plot degli MSE Riportiamo in un grafico i valori di MSE ottenuti. Dalla tavola precedente notiamo che il valore di test MSE più basso corrisponde al caso K = 10. Tuttavia per un intervallo di valori K piuttosto ampio questo rimane molto basso. Il valore K = 50 produce una adattamento molto più smussato rispetto al caso K = 10 plot(mse.train, type='l', xlab='k', ylab='mse', col=1, lwd=2) lines(mse.test, col=2, lwd=2) legend("bottomright",legend=c('train','test'),text.col=seq(2), lty=1, col=seq(2)) Confronto test MSE file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 16/17

1. RLS: test MSE = 24.66309 2. RQ: test MSE =18.4312291 3. RC: test MSE =18.3529882 K = 10 4. KNN, : test MSE =17.736386 K = 50 5. KNN, : test MSE =17.8171135 file:///c:/users/emanuele.taufer/dropbox/3%20sqg/labs/validation.html 17/17