Analisi dei dati ed estrazione della conoscenza

CLEI/S. 6 CFU.

A.A. 2008/2009

prova pratica del 16 Giugno 2009


Modalità di svolgimento

La prova pratica è strettamente individuale. Qualora venissero consegnati degli elaborati simili, più di quanto è lecito attendersi da soluzioni indipendenti allo stesso problema, gli stessi verrebbero annullati. Non saranno ammesse motivazioni del tipo "abbiamo già provato a risolvere un esercizio simile, per questo i nostri compiti sono uguali". Se davvero avete scritto del codice R che risolve un esercizio simile, e lo volete utilizzare come base di partenza per questo, siete liberissimi di farlo, purché consegniate entro 15 minuti dall'inizio dell'esame il suddetto codice al docente.

Per la consegna dell'elaborato, utilizzare il modulo web disponibile al sito di sottomissione on-line. L'invio del file deve avvenire entro le ore 16:00, secondo l'orario indicato nel sito stesso.

Testo del compito

Il compito consiste di due esercizi. Il voto massimo che si può ottenere risolvendo correttamente il primo esercizio è 26, mentre il voto massimo per una corretta soluzione del secondo esercizio è 30 e lode. Consiglio vivamente a tutti di risolvere prima l'esercizio n. 1 e solo successivamente passare al numero 2.

  1. Scrivere una funzione iris.rpart.boot che prende un unico parametro numerico n e restituisce il tasso di errore medio commesso da rpart sul dataset iris, utilizzando il metodo del 0.632 bootstrap. Il parametro n indica il numero di volte per cui va ripetuta la procedura.

    Nello svolgimento di questo esercizio si può usare il comando for (i in v) { .... } dove i è una variabile e v un vettore. Il risultato è che il corpo del ciclo for viene eseguito tante volte quanti sono gli elementi di v, e ogni volta alla variabile i viene assegnato un valore differente di v. Ad esempio: for (i in 1:10) { print(i) } stampa i numeri da 1 a 10.

    Si può anche utilizzare la funzione sample che serve ad estrarre un campione (con o senza rimpiazzo) da un vettore. Consultare il manuale on-line per informazioni più precise.

  2. Generalizzare la funzione iris.rpart.boot in modo da farla funzionare per un qualunque insieme di dati. Più in dettaglio, scrivere la funzione rpart.boot che prende tre parametri: data, class e n. Il parametro data è il data-frame su cui effettuare la procedura, class è il nome dell'attributo classe ed n ha lo stesso significato che aveva nel punto precedente. Ad esempio rpart.boot(iris,"Species",10) deve dare lo stesso risultato di iris.rpart.boot(10).

    Per svolgere questo esercizio sono utili le seguenti funzioni:

    1. as.formula(string): prende la string string e la trasforma in una formula;
    2. paste(s1,s2,...): concatena le stringe passate come parametri.

    Queste funzioni vi serviranno per costruire opportunamente la formula da passare come primo parametro ad rpart.