# PUNTO 1 ------------------------------------------------
HW 02 - Variabili casuali ed importazione file di dati
Data di consegna: martedì 08 ottobre 2024
Introduzione
In questo compito utilizzerai i comandi utili per:
- gestire una funzione relativa ad una distribuzione di probabilità (variabile casuale discreta) in R
- gestire una funzione relativa ad una funzione di densità (variabile casuale continua) in R
- rappresentare graficamente una distribuzione di probabilità usando la grafica base di R
- rappresentare graficamente una funzione di densità usando la grafica base in R
- importare dati in differenti formati
Obiettivi di apprendimento
Lo svolgimento di questo compito ti permetterà di:
- utilizzare l’approccio basato sui progetti in RStudio
- usare R per verificare alcune semplici proprietà di due variabili casuali note
- usare R per costruire rappresentazioni grafiche
- importare tabelle dati in differente formato
Istruzioni per l’uso
Crea un progetto associandolo ad una cartella “RLab_hw02_cognome_nome” sul tuo disco: nel mio caso il nome della cartella sarebbe: “RLab_hw02_vistocco_domenico” e copia all’interno della cartella, in una sottocartella “dati” i seguenti sette file:
Puoi scaricare insieme i sette file in un formato compresso usando questo link
Rispondi ai vari punti salvando le risposte in un file R con il nome “hw02_cognome_nome.R”: ad esempio nel mio caso il nome del file sarebbe “hw02_vistocco_domenico.R”.
Per rispondere ad ogni punto inserisci un’etichetta di sezione (che puoi inserire nello script usando la combinazione di testi CTRL/CMD + SHIFT + R) utilizzando il punto cui sta rispondendo. Ad esempio, per rispondere al punto 1 del compito, usa un’etichetta di sezione:
Utilizza i commenti per rispondere alle domande in cui viene chiesta un’interpretazione da parte tua: lo script deve cioè essere funzionante quando si eseguono tutti i comandi con il pulsante Source.
Lo script viene valutato sia in base alla correttezza del codice che in base alla qualità (stile utilizzato per rendere lo script leggibile ed ordinato).
Esercizi
Ricordati di utilizzare i commenti per le risposte aperte.
Parte 1: Un esempio relativo ad una variabile casuale discreta
Crea un oggetto
nassegnandogli il numero10e un oggettopi_grecoassegnandogli il numero0.5Crea un oggetto
distr_binomialecui assegni la distribuzione di probabilità di una variabile casuale binomiale con parametri \(n = 10\) e \(\pi = 0.5\), usando i due oggetti creati al punto precedente
Sfrutta la pagina di help della funzione dbinom per esplorare come passare gli argomenti di input alla funzione
- Rappresenta graficamente la distribuzione di probabilità della variabile casuale binomiale creata al punto precedente (oggetto
distr_binomiale)
Sfrutta la funzione generica plot passando in input i valori che può assumere la variabile casuale binomiale (asse x) e le corrispondenti probabilità (asse y):
- l’argomento
type = "h"ti permette di ottenere un diagramma ad aste o a bastoncini - puoi utilizzare gli argomenti
xlabeylabper le etichette dei due assi, e l’argomentomainper il titolo del grafico - sfruttando l’argomento
lwd(linewidth) puoi regolare lo spesso delle aste del grafico - l’argomento
col(color) ti permette di impostare il colore della linea (i colori possono essere fissati usando un numero o una stringa di testo. Trovi un elenco dettagliato su questo link)
Ripeti i punti da 1 a 3 assegnando a
pi_grecoil valore 0.2Ripeti i punti da 1 a 3 assegnando a
pi_grecoil valore 0.8Cosa è possibile dire circa la forma della variabile casuale binomiale quando \(\pi\) cambia? Rispondi confrontando i tre grafici ottenuti. Prova a spiegare perché era un risultato che ci si poteva aspettare?
Ripeti i punti da 1 a 3 assegnando a
pi_grecoil valore 0.2 e adnil valore 100Cosa è possibile dire circa la forma della variabile casuale binomiale quando \(n\) cambia per un \(\pi\) fissato? Rispondi confrontando i due grafici relativi al valore \(\pi = 0.2\) per \(n = 10\) ed \(n = 100\). C’è qualche risultato “teorico” che giustifica questo andamento?
Parte 2: Un esempio relativo ad una variabile casuale continua
- Crea un oggetto
ascissecontenenti una sequenza di 1000 numeri equispaziati da -10 a + 10
Puoi sfruttare l’argomento length.out della funzione seq per fissare la lunghezza desiderata della sequenza invece del passo
- Crea un oggetto
normal_unoin cui calcoli il valore della funzione di densità di una distribuzione normale con media `\(\mu = 0\) e scarto quadratico medio \(\sigma = 1\)
Puoi sfruttare la funzione dnorm per calcolare la funzione di densità di una variabile casuale normale. L’oggetto normal_one deve essere un vettore con \(1000\) elementi
Crea un oggetto
normal_duein cui calcoli il valore della funzione di densità di una distribuzione normale con media `\(\mu = -1\) e scarto quadratico medio \(\sigma = 1\)Crea un oggetto
normal_trein cui calcoli il valore della funzione di densità di una distribuzione normale con media `\(\mu = 2\) e scarto quadratico medio \(\sigma = 1\)Crea un oggetto
normal_quattroin cui calcoli il valore della funzione di densità di una distribuzione normale con media `\(\mu = 0\) e scarto quadratico medio \(\sigma = 2\)Crea un oggetto
normal_cinquein cui calcoli il valore della funzione di densità di una distribuzione normale con media `\(\mu = 0\) e scarto quadratico medio \(\sigma = 0.5\)Rappresenta graficamente la funzione densità della variabile casuale
normale_uno
Sfrutta la funzione generica plot passando in input i valori che può assumere la variabile casuale normale (asse x) e i corrispondenti valori della funzione di densità (asse y):
- l’argomento
type = "l"ti permette di ottenere un diagramma a linee - puoi utilizzare gli argomenti
xlabeylabper le etichette dei due assi, e l’argomentomainper il titolo del grafico - sfruttando l’argomento
lwd(linewidth) puoi regolare lo spessore delle line - l’argomento
col(color) ti permette di impostare il colore della linea (i colori possono essere fissati usando un numero o una stringa di testo. Trovi un elenco dettagliato su questo link)
- Sovraimponi sul grafico una seconda linea per rappresentare la densità memorizzata nell’oggetto
normale_quattrousando una linea di colore differente
Sfrutta la funzione generica lines per sovraimporre una linea all’ultimo grafico creato, passando in input i valori da rappresentare sui due assi e il colore da utilizzare per linea (il colore di default è il nero)
Sovraimponi sul grafico una terza linea per rappresentare la densità memorizzata nell’oggetto
normale_cinqueusando una linea di colore differenteRipeti la costruzione della rappresentazione grafica partendo questa volta rappresentando prima l’oggetto
normale_cinque(funzioneplot) e poi i due oggettinormale_unoenormale_quattro(funzionelines)Cosa puoi concludere circa il metodo utilizzato da R per costruire il grafico confrontando il grafico ottenuto partendo dall’oggetto
normale_unoe quello ottenuto dall’oggettonormale_cinque?Prova a costruire un grafico che permetta di visualizzare completamente le cinque funzioni di densità
Puoi sfruttare gli argomenti xlim e ylim della funzione plot per impostare i limiti che R utilizzerà per la rappresentazione grafica
- Prova ad aggiungere una legenda che permetta a chi legge di capire l’associazione tra le varie curve rappresentate sul grafico e i corrispondenti parametri \(\mu\) e \(\sigma\)
Puoi sfruttare la funzione legend per aggiungere e gestire una legenda su un grafico base R. Cerca sulla rete informazioni su come utilizzarla. Un breve tutorial è disponibile su questo link
Parte 3: Importazione di file dei dati in differente formato
Per l’importazione dei dati usa l’interfaccia di RStudio per aiutarti a comporre propriamente i comandi richiesti
- Scrivi i comandi utili ad importare il file
pizza.xlssalvando il risultato in un oggettopizza_xls
Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
Scrivi i comandi utili ad importare il file
pizza.xlssenza importare la colonnaProductsalvando il risultato in un oggettopizza_xls_smallScrivi i comandi utili ad importare il file
pizza.csvsalvando il risultato in un oggettopizza_csv
- Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
- Rispondere sfruttando la voce del menu
Import Dataset+From text (readr)- Rispondi sfruttando la voce del menuImport Dataset+From text (base) - Rispondi sfruttando la funzione
read.table{base} (sfrutta l’help per impostare opportunamente gli argomenti)
- Scrivi i comandi utili ad importare il file
pizza.csv2salvando il risultato in un oggettopizza_csv2
- Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
- Rispondere sfruttando la voce del menu
Import Dataset+From text (readr)- Rispondi sfruttando la voce del menuImport Dataset+From text (base) - Rispondi sfruttando la funzione
read.table{base} (sfrutta l’help per impostare opportunamente gli argomenti)
- Scrivi i comandi utili ad importare il file
pizza.unk1salvando il risultato in un oggettopizza_unk1
- Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
- Rispondere sfruttando la voce del menu
Import Dataset+From text (readr)- Rispondi sfruttando la voce del menuImport Dataset+From text (base) - Rispondi sfruttando la funzione
read.table{base} (sfrutta l’help per impostare opportunamente gli argomenti)
- Scrivi i comandi utili ad importare il file
pizza.unk2salvando il risultato in un oggettopizza_unk2
- Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
- Rispondere sfruttando la voce del menu
Import Dataset+From text (readr)- Rispondi sfruttando la voce del menuImport Dataset+From text (base) - Rispondi sfruttando la funzione
read.table{base} (sfrutta l’help per impostare opportunamente gli argomenti)
- Scrivi i comandi utili ad importare il file
pizza.unk3salvando il risultato in un oggettopizza_unk3
- Apri il file in un editor di testo (blocco note o altro editor) per capire il formato in cui sono stati salvati i dati così da impostare opportunamente gli argomenti della funzione di importazione
- Rispondere sfruttando la voce del menu
Import Dataset+From text (readr)- Rispondi sfruttando la voce del menuImport Dataset+From text (base) - Rispondi sfruttando la funzione
read.table{base} (sfrutta l’help per impostare opportunamente gli argomenti)
- Scrivi i comandi utili ad importare il file
pizza_fxw.txtsalvando il risultato in un oggettopizza_fxw.txt
Questo file è un file di testo a formato fisso, ovvero ogni colonna occupa una larghezza prefissata in termini di numero di caratteri. Usa un editor di testo per valutare la larghezza di ciascuna colonna e sfrutta la funzione read.fwf per importare la tabella (sfrutta l’help per impostare opportunamente gli argomenti)
- Salva il contenuto dell’intero workspace su un file
pizzeria.RDatanella directory corrente
ADD-IN: Installazione di package
Installa i package
janitor,pakeskimrsul disco utilizzando la funzioneinstall.packageso l’interfaccia grafica (scheda Packages + Install)Verifica che l’installazione del package
janitorsia andata a buon fine caricando il package utilizzando la seguente funzione
library(janitor)Se vedi un messaggio di questo tipo non ti spaventare (è tutto ok):
Attaching package: 'janitor'
The following objects are masked from 'package:stats':
chisq.test, fisher.test
Verifica che l’installazione dei package
pakeskimrsia andata a buon fine caricando i due package utilizzando la funzionelibrary. In questo caso sulla console non compare alcun messaggio ma semplicemente il cursore standard diRStampa sulla console un sommario della tabella
pizza_xls_smallsfruttando le tre seguenti alternative:
- la funzione
summary(R base) - la funzione
glimpse(packagedplyr, installato contidyverse) - la funzione
skim(packageskimr)
- Commenta brevemente i risultati (e le differenze) tra gli output di
summary,glimpseeskim.
Consegna
Per inviare la tua soluzione:
- Salva il file .R con le tue soluzioni
- Chiudi il progetto RStudio
- Comprimi in un file .zip la cartella associata al progetto
- Carica il file .zip salvato in risposta al compito assegnato su Teams
Valutazione
Totale punti disponibili: 110 punti
| Component | Punti |
|---|---|
| Es 1 - 35 | 100 |
| Workflow & formattazione | 101 |
Footnotes
La valutazione al “Workflow & formattazione” tiene conto del principio di riproducibilità del codice: lo script caricato deve funzionare senza errori su qualunque PC dando gli stessi risultati↩︎