Laboratorio
Impostare la working directory
Per impostare la cartella di lavoro si può procedere in due modi:
- Dall'interfaccia: "Session" → "Set Working Directory" → "Choose Directory" → …
- Dalla console:
setwd('C:/percorso/file')
Per far sì che R "conosca" la working directory si utilizza il comando getwd().
Perché il programma conosca anche i files presenti nella directory si utilizza il comando dir().
Assegnare valori alle variabili
Scalari
a = 1
b = 3
a + b
a = b
Vettori
v = c(6, 1, -7, 12)
length(v)
Matrici
M = matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow = 4, ncol = 3, byrow = FALSE)
dim(M)
Estrazione di elementi da un vettore
R è 1-indexed: il primo elemento di un vettore è in posizione 1. L'operatore () contraddistingue le chiamate a funzioni (es. length()), mentre l'operatore [] contraddistingue gli accessi a vettori/matrici.
Accesso diretto agli elementi
v[2] secondo elemento di v
v[c(1, 3)] primo e terzo elemento di v
v[-1] tutto il vettore v tranne il primo elemento
Funzione which(condizione)
Restituisce gli INDICI di tutti gli elementi che soddisfano la condizione logica specificata.
w = c(5, 9, 9, 9, 9, 1, 1)
which(w == 5)
which(w != 5)
which(w > 1)
which(w > 1 & w <= 5)
which(w > 6 | w == 7)
Funzione unique(vettore)
Permette di determinare i valori univoci di un vettore.
w = c(5, 9, 9, 9, 9, 1, 1)
unique(w)
La funzione length(unique(w)) esprime quanti elementi univoci ci sono in un vettore.
Condizione logica sull'intero vettore
w > 1
w == 7
Estrazione di elementi da una matrice M
Accesso diretto ad elementi
M[2, 3]
M[4, c(1, 3)]
Accesso ad intere colonne o righe
Si utilizza la virgola:
M[3, ]
M[, 2]
Visualizzazione e rimozione delle variabili
Il comando ls() fornisce la lista delle variabili esistenti. Il comando rm(a) rimuove la variabile a. Il comando rm(list = ls()) rimuove tutte le variabili nel workspace.
Pulizia della console
Per Windows si utilizzano i tasti Ctrl+L.
Dataframe
Struttura dei dati del dataframe
I dataframe sono oggetti costituiti da vettori di uguale lunghezza, ma non necessariamente dello stesso tipo. Contrariamente alle matrici, il dataframe è più flessibile e può essere utilizzato con dati di tipo diverso tra loro.
Per crearlo come prima cosa è bene nominarlo, poi si utilizza il comando data.frame(). Es:
esame = data.frame(matricola = as.character(c(45020, 45679, 46789, 43126, 42345, 47568)), voti_S = c(30, 19, 29, NA, 25, 26), voti_O = c(3, 3, 1, NA, 3, 2), voti_TOT = c(30, 22, 30, NA, 28, 28))
Per accedere alle variabili del dataframe, utilizzare solo (es.) voti_S è un errore! Si deve utilizzare il comando esame$voti_S.
Si possono anche rendere visibili le variabili del dataframe direttamente (senza $) con il comando attach(). NB: Per evitare problemi, è sempre bene inserire poi il comando detach(). In questo modo non si rimuove il dataframe, ma il suo accesso diretto.
Per inserire i dati mancanti, invece, si utilizza il comando sum(is.na()). Per rimuovere il dataframe si utilizza il comando rm().
Importazione di un nuovo dataframe
Come prima cosa bisogna localizzare dove si trova il file da importare con il comando:
setwd("C:/percorso/cartella/dove/si/trova/il/dataset").
Poi si crea il dataframe. Es:
studenti = read.table("studenti.txt", header = TRUE, stringsAsFactors = FALSE)
header = TRUE indica che il file importato contiene i nomi delle variabili nella prima riga. stringsAsFactors = FALSE indica le variabili character come stringhe (non come factor).
Il comando names() mostra i nomi delle variabili nel dataframe. Il comando head() mostra le prime tot righe del dataframe. Il comando tail() mostra le ultime tot righe del dataframe. Per capire che tipo di variabili ci sono nel dataframe, e distinguere le variabili categoriche da quelle numeriche si utilizzano i seguenti comandi (es):
str(studenti)
class(studenti)
class(studenti$Sesso)
Tramite il comando as.factor() è possibile creare una variabile categorica. Es:
studenti$Sesso = as.factor(studenti$Sesso)
class(studenti$Sesso)
str(studenti)
Il comando levels(studenti$Sesso) indica i livelli/categorie della variabile qualitativa.
Help
La funzione help(nome_comando) permette di chiarire alcuni dubbi su eventuali comandi o operazioni. È possibile anche utilizzare help(which) oppure ?which.
Operazioni sul dataframe
Selezionare una voce del dataframe
(es. le femmine)
femmine = studenti[which(studenti$Sesso == 'F'),]
dim(femmine)
Calcolare il numero di componenti della voce selezionata
Senza creare un nuovo dataframe:
length(which(studenti$Sesso == 'F'))
Creare la tabella delle frequenza per una variabile categorica/factor
table(studenti$Sesso) NB. la tabella delle frequenze per una variabile numerica (es: table(studenti$Peso)) risulta non molto leggibile!
Salvare il dataframe con la voce selezionata (femmine) in un file di testo:
write.table(femmine, file = 'femmine.txt')
Salvare l'intero ambiente di lavoro (workspace)
save.image('lab_1.RData')
Rimuovere il dataframe con la voce selezionata (femmine)
rm(femmine)
Variabili categoriche
Analisi descrittiva di una variabile qualitativa (dati categorici)
L'analisi di variabili qualitative prevede la creazione di:
-
Tabella di distribuzione delle frequenze per le categorie della variabile:
-
Per creare le tabelle delle frequenze assolute e relative, innanzitutto si utilizza il comando
factor()(nominato!!) che converte l'argomento in realizzazione di una variabile categorica i cui possibili valori sono riportati inlevels:
dati=factor()
levels(dati)Specificare i levels non è necessario, ma permette di ordinarli come si vuole (convenzionalmente, in ordine alfabetico).
Per la tabella delle frequenze assolute si utilizza
freq_ass = table(dati). Per la tabella delle frequenze relative si utilizzafreq_rel = table(dati) / length(dati), oppureprop.table(freq_ass).sum(freq_rel)Per verificare se esiste un'interazione fra due variabili del dataframe si crea una tabella congiunta a doppia entrata:
- Tabella delle frequenze assolute:
datitable(dati) - Tabella delle frequenze relative:
datitable(dati) / sum(table(dati))
È anche possibile creare una tabella condizionata che esprime la probabilità di verificarsi di un evento, dato il verificarsi di un altro.
- (dati condizionanti: righe)
table(dati) / rowSums(table(dati)) - (dati condizionanti: colonne)
table(dati) / colSums(table(dati))
-
Per creare le tabelle delle frequenze assolute e relative, innanzitutto si utilizza il comando
-
Grafici
-
Diagramma a barre
par(mfrow = c(1, 2))
barplot(table(), col = rainbow(length(levels(as.factor()))), main ='Frequenze assolute: DATI’)
barplot(table() / sum(table()), col = rainbow(length(levels(as.factor()))), main = 'Frequenze relative: DATI') -
Diagramma a torta
par(mfrow = c(1, 1))
pie(table() / sum(table()), col = rainbow(length(levels(as.factor()))), main = 'Frequenze relative: DATI’)
-
Diagramma a barre
Analisi univariata di variabili quantitative (analisi dei dati quantitativi)
Impostare la cartella di lavoro
Session → Set Working Directory → To Source File Location/Choose Directory oppure setwd(<path_string>)
Importazione del dataset
dati = read.table('file.txt', header = TRUE)
head(dati)
dim(dati)
names(dati)
Estrazione di una variabile del dataframe
variabile = dati[which(dati$categoria == 'X'),]
dim(variabile)
Qualche grafico
Per aprire una finestra grafica, usare il comando windows(), oppure x11().
Scatterplot: plot(dati$classe1, dati$classe2, xlab = 'classe1 [u.d.m.]', ylab = ‘classe2 [u.d.m.]', main = 'Scatterplot classe2 vs. classe1')
Per indicare con un colore la variabile si usa il comando: points(variabile$classe1, variabile$classe2, col='red', 123 =19)
Per fare uno zoom intorno alla variabile, modificando i range degli assi, per prima cosa troviamo minimo e massimo del vettore classe1 e classe2 per la variabile:
min_1 = min(variabile$classe1)
max_1 = max(variabile$classe1)
min_2 = min(variabile$classe2)
max_2 = max(variabile$classe2)
Costruiamo poi il grafico relativo:
plot(dati$classe1, dati$classe2, xlab = ‘classe1[udm]', ylab ='classe2[udm]', main = 'Scatterplot classe2 vs. classe1', xlim = c(min_1, max_1), ylim = c(min_2, max_2))
points(variabile$classe1, variabile$classe2, col='red', 123 =19)
NB: con il comando demo(graphics) otteniamo una rassegna di possibili grafici.
Calcolare i principali indici di posizione e di dispersione
∑ osservazioni Media dei dati = media campionaria = , con n = ¿ osservazioni n∑ scarti quadratici della media campionaria Varianza dei dati = ( )n−1 Dispersione del dataset: sum_i(x_i - media campionaria)^2 / (n-1)
- Media campionaria:
mean(dati$classe1) - Varianza campionaria:
var(studenti$Peso) - Deviazione standard campionaria (radice quadrata di var()):
sd(studenti$Peso) - Deviazione standard della popolazione:
sqrt(varianza)
NB: la funzione range_array = range(dati$classe(i)) restituisce
-
Appunti Laboratorio in R - Modelli Statistici (Analisi statistica multivariata)
-
Appunti esame Laboratorio di scrittura
-
Appunti relativi ad una lezione di laboratorio di Statistica
-
Appunti su R