Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Unità B ELEMENTI DI PROGRAMMAZIONE
Oltre ad essere un software statistico, R è anche un linguaggio di programmazione, dunque, così come altri, la
funzione
maggior parte degli oggetti R è una . Difatti:
class(sum) #permette di identificare la classe del parametro inserito tra parentesi (in questo caso si tratta
della funzione somma)
###verrà restituito infatti: “function”
Funzioni
In aggiunta a quelle già esistenti, è possibile creare ulteriori e nuove funzioni, le quali verranno utilizzate in
ugual modo alla altre. function( ){ }
Per creare una nuova funzione si ricorre all’utilizzo del comando .
#creo la funzione che svolge il cubo di un numero x
Es:
cube <- function(x) {
out <- x^3
out
} #creo la funzione che svolge la potenza p di un numero x
Es2:
power <- function(x, p=2) {
out <- x^p
out
}
[in questo caso il valore di default di p è pari a 2, dunque nel momento in cui verrà utilizzata la funzione, se non
si dovesse fornire il valore di p, verrà utilizzato il valore di default, quindi 2].
Istruzioni di controllo
Nel linguaggio di programmazione R esistono delle strutture di controllo specifiche per regolare il flusso di
esecuzione di un programma.
If - else
istruzione condizionale if
L’ permette di eseguire flussi di istruzioni in seguito alla valutazione di una condizione
logica, ovvero, più semplicemente, consente di svolgere una determinata operazione (o più) solamente se la
condizione dichiarata nell’istruzione if è verificata.
else
L’istruzione propone invece di svolgere un’operazione alternativa (o più) se la condizione dichiarata
nell’istruzione if non è verificata. Si tratta di un’istruzione facoltativa, alla quale, dunque, è possibile ricorrere
solo se necessario.
La sintassi dell’istruzione if è:
if (condizione)
{blocco di istruzioni}
In modo più esteso:
if (condizione) {
print(“La condizione è vera”)
#alcune istruzioni (/comandi) da eseguire
} else { print(“La condizione è falsa”)
#altre istruzioni (/comandi) da eseguire 6
Colombo Micol UNIMIB-SSE a.a. 2021/2022
} While
istruzione di looping while
L’ permette di ripetere ciclicamente dei blocchi di istruzioni fino a che una
determinata condizione logica non risulti più soddisfatta.
La sintassi dell’istruzione while è:
while (condizione)
{blocco di istruzioni}
while (i<=25) {
Es: #l’operazione verrà ripetuta fin tanto che i è minore o uguale a 25
print(i) #”stampa” (mostra a schermo) il valore di i
i <- i+1 #incremento del valore di i
} For
istruzione di looping for
L’ permette di ripetere ciclicamente dei blocchi di istruzioni per un numero prefissato
di volte, ovvero esegue i comandi contenuti nelle parentesi graffe considerando di volta in volta gli elementi
contenuti in ciò che si vuole controllare (ad esempio, un vettore, una lista, …).
La sintassi dell’istruzione for è:
for (elemento in …)
{blocco di istruzioni}
for (i in values) { i values
Es: #i seguenti comandi verranno eseguiti per ogni elemento contenuto in
print (i+2) #mostra a schermo il valore di i+2
}
Famiglia di funzioni *apply
In R i cicli for tendono ad essere lenti; per questo motivo sarebbe meglio ridurne l’uso e preferire l’applicazione
funzioni *apply
della famiglia di , ovvero: apply, tapply, sapply, mapply, lapply.
La più semplice tra queste, ovvero apply, esegue una determinata funzione per ciascuna riga/colonna di una
matrice.
Pacchetti in R pacchetti
Un’ulteriore cosa da sapere è che R è organizzato in e per usare le funzioni di uno di questi si può
ricorrere all’utilizzo della funzione library( ).
Es:
library(MASS) #carica in memoria il pacchetto MASS
library(knitr) #carica in memoria il pacchetto knitr
Se un pacchetto non è presente nel computer è necessario installarlo:
install.packages(“knitr”) #installa il pacchetto knitr 7
Colombo Micol UNIMIB-SSE a.a. 2021/2022
Unità C DATAFRAME
data.frame
Un oggetto R detto corrisponde alla matrice dei dati, nel quale ciascuna riga rappresenta quindi
un’unità statistica, mentre ciascuna colonna rappresenta una variabile.
Un data.frame, come già affermato, è paragonabile ad una matrice, ma dedicato all’analisi dei dati; infatti può
contenere anche valori non numerici quali variabili qualitative o valori mancanti.
Importazione di un dataset dataset file esterno
Il modo più frequente di caricare un in memoria è importarlo da un , il quale, se di piccole
dimensioni ( < 3-4 Gb), verrà salvato in formato .csv oppure .txt; mentre in casi più complessi (e reali) è possibile
importare i dati a partire direttamente da un database come SQL.
Comandi e operazioni sui dataset
getwd( ) #identifica la cartella di lavoro (dove è aperta la sessione di R attiva)
setwd( ) #cambia la cartella di lavoro
[in RStudio si può usare l’opzione More -> Set as working directory nella finestra Files e
selezionando la cartella di interesse]
path <- data/“nome_file.csv” #percorso del file “nome_file” salvato in formato .csv
path2 <- “https://…/…/nome_file.csv” #ulteriore comando per il percorso del file
read.table(path, header=TRUE, sep=“ , “ ) #importazione del dataset di tipo .csv
header=TRUE
[ indica che la prima contiene i nomi delle variabili]
sep=“,“
[ indica che i valori di ciascuna variabile sono separati da una virgola]
load(“ ”)
[se il dataset è di tipo .RData utilizzo l’istruzione nomedataset.RData ]
dim(nomeDataset) #fornisce il numero delle variabili e osservazioni contenute nel dataset
head(nomeDataset) #visualizza le prime 6 osservazioni
tail(nomeDataset) #visualizza le ultime 6 osservazioni
colnames(nomeDataset) #visualizza i nomi delle variabili
str(nomeDataset) #fornisce il sommario del data.frame (evidenziando la tipologia di variabili)
Tipologia di variabili integer numeric
- Quantitative (discrete e continue) : o
character factor
- Qualitative : o
date
- Date (giorni) :
Variabili quantitative
Una variabile numerica è un vero e proprio vettore R a tutti gli effetti, pertanto la si può trattare come tale,
utilizzando le stesse istruzioni. Ulteriori comandi possono essere:
is.numeric(nomeDataset$nomeVariabile) #verifico che la variabile indicata dopo il simbolo $ sia una
variabile di tipo numeric
class(nomeDataset$nomeVariabile) #fornisce la classe (il tipo) della variabile
###verrà restituito: integer, numeric, , … o altro)
Variabili qualitative
Le variabili di tipo character sono appropriate per le stringhe di testo, mentre quelle con valori ripetuti verranno
codificate come variabili di classe factor.
nomeDataset$nomeVariabile <- factor(nomeDataset$nomeVariabile) #converte la variabile nel formato
factor 8
Colombo Micol UNIMIB-SSE a.a. 2021/2022
[ in alternativa è possibile inserirlo direttamente nel comando di importazione del dataset:
nomeDataset <- read.table (path, header=TRUE, sep=“,” , stringsAsFactors=TRUE) ]
levels(nomeDataset$nomeVariabile) #elenca in ordine alfabetico le modalità della variabile considerata
levels(nomeDataset$nomeVariabile) <- c(“mod1”,”mod2”,…) #rinominare le modalità
Variabile di tipo date
La variabile Date del dataset considerato rappresenta una data e viene codificata come tale:
nomeDataset$Date <- as.Date(nomeDataset$Date, format=“%Y-%m-%d”) #conversione dell’oggetto Date
(nome della variabile) in formato date
min(nomeDataset$variabileDate) #data più remota
max(nomeDataset$variabileDate) #data più recente
Valori mancanti NA Not Available dato
Il programma R potrebbe restituire il termine ( ), il quale indica la presenza di un
mancante .
nomeDataset[rowSums(is.na(nomeDataset)) > 0, ] #identifica la righe con i valori mancanti
#is.na restituirà TRUE se il valore è mancante e FALSE se
è presente
rowSums(is.na(nomeDataset)) #indica quanti valori mancanti sono presenti in ciascuna riga
datiMancanti <- na.omit(nomeDataset) #rimuove le righe contenenti dei valori mancanti
subset(nomeDataset, subset=condizione) #seleziona le righe che rispettano la condizione
e rimuove implicitamente i valori mancanti
subset(nomeDataset, select =c(var1,var2,…)) #seleziona le colonne (variabili) indicate nel vettore 9
Colombo Micol UNIMIB-SSE a.a. 2021/2022
Unità D STATISTICA DESCRITTIVA
Tramite il linguaggio R è possibile effettuare un’accurata analisi descrittiva dei dati tramite degli specifici
comandi ad essa dedicati.
Frequenze
variabile_class <- cut(insiemeDati, breaks=breaks) #divisione dei valori osservati in sotto-intervalli
freq_ass <- table(insiemeDati) frequenze assolute
# dei dati (funzione table viene applicato su variabili di tipo
factor e conteggia quante volte una modalità compare nel vettore)
freq_rel <- prop.table(insiemeDati) frequenze relative
# dell’insieme di dati della variabile
freq_rel <- freq_ass/sum(freq_ass) #frequenze relative (alternativa)
Raccolta dei dati
tab_summary <- cbind(freq_ass, freq_rel) #raccogliere i valori in una tabella
colnames(tab_summary) <- c(
“nome colonna 1”,
“nome colonna 2”,
“nome colonna 3”,
…
)
round(tab_summary, 3) #visualizzazione dei risultati (arrotonda alla terza cifra decimale)
Istogrammi
istogramma
L’ consente di rappresentare graficamente una distribuzione di frequenza, i cui rettangoli hanno
come base la lunghezza degli intervalli e come altezza le frequenze assolute; mentre nel caso in cui gli intervalli
abbiano dimensioni diverse, le altezze verranno calcolate in relazione alla densità: altezza=1/n * (frequenza
assoluta/lunghezza intervalli).
hist (variabile,
freq=TRUE, #freq=TRUE indica che verranno usate le frequenze assolute
breaks=…, #numero intervalli (se non specificato sarà calcolato in automatico)
main=“Titolo”,
xlab=“unità asse x”,
ylab=“unità asse y”)
[freq=FALSE indica l’utilizzo della densità e non più delle frequenze assolute. Questa opzione diventa
obbligatoria nel caso di intervalli non equispaziati]
Per variabili di tipo qualitativo si ricorre all’utilizzo del comando:
barplot((table( $ )))
nomedataset variabilequalitativa #in questo modo si ottiene il grafico delle frequenze
assolute della variabile qualit