













Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Basi di Rstudio, del corso di Laurea in Digital Marketing (II anno)
Tipologia: Appunti
1 / 21
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!














1+2/3^
Tutte le principali funzioni matematiche sono disponibili in R: HELP DI UNA FUNZIONE Per qualsiasi dettaglio o chiarimento (ad es. argomenti in ingresso, valori restituiti) riguardo una funzione si consiglia di controllare il relativo help , anteponendo al nome il punto interrogativo (ad es. ?log), oppure utilizzando la funzione help (ad es. help(“log”)). Se non ci si ricorda esattamente lo spelling di una funzione è possibile provare il completamento automatico con il tasto TAB. DISTRIBUZIONI DI PROBABILITA’ Tutte le principali distribuzioni di probabilità sono disponibili in R. Le principali caratteristiche di ciascuna distribuzione sono accessibili attraverso le funzioni: Per controllare i parametri richiesti da ciascuna funzione occorre controllare l’help Simbolo Significato abs (x) Restituisce il^ valore assoluto^ di x sqrt (x) Restituisce la^ radice quadrata^ (“Square root”) di x exp (x) Restituisce^ l’esponenziale^ di x log (x) Restituisce il^ logaritmo^ naturale di x sin (x); cos (x); tan (x) Restituisce rispettivamente il seno , il coseno e la tangente di x y%%x Restituisce il resto della divisione in^ numeri interni^ di y su x y%/%x Restituisce il quoziente della divisione in^ numeri interi^ di y su x Simbolo Significato dxyz (x) restituisce la densità di probabilità della v.a. xyz nell'intervallo (- ∞; a ) pxyz (x) Restituisce la^ funzione di massa^ di probabilità della^ v.a xyz^ del^ quartile a qxyz (x) Restituisce il^ quartile^ corrispondente ad una certa^ probabilità a^ della^ v.a xyz rxyz (x) Restituisce^ a numeri casuali^ provenienti dalla v.a^ xyz Simbolo Significato qnorm ( ) Si riferisce alla distibuzione Normale o Gaussiana qt ( ) (^) Si riferisce alla distribuzione t di student qpois ( ) Si riferisce alla distibuzione di Poisson qchisq ( ) (^) Si riferisce alla distibuzione χ^2 qf ( ) Si riferisce alla distribuzione F di Fischer
Alcune funzioni molto utili per trattare con i vettori sono le seguenti: I vettori possono essere anche accodati :
y<-c (a,b,0,15,a) y [1] 3.0 2.0 -4.0 0.5 8.0 0.0 15.0 3. Per accedere all’elemento n-esimo di un vettore x si utilizzano le parentesi [ ]. Ad esempio bbb[3] [1] "lezione" p[5:7] [1] 2.0 2.5 3. Consideriamo i vettori: a<-c(1,2,3) b<-c(4,5) Le operazioni tra vettori vengono eseguite elemento per elemento aa* restituisce un vettore della stessa lunghezza di a ; esso ha per elementi i quadrati degli elementi di a. Simbolo Esempio seq (from=,to=,by=) p <-seq (o,4,0.5) p [ 1 ] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4. In alternativa alla funzione seq ( ), per creare una sequenza di numeri interi si può utilizzare il comando: -2: [1] -2 -1 0 1 2 3 rep (x, t) Ripete t volte l’oggetto x ad esempio: d < -rep (a, 5) d [1] 3 3 3 3 3 Attenzione agli apici Se si scrive ‘a’ ci si riferisce alla stringa a e non all’altro oggetto a rep (‘a’,5) [1] “a” “a” “a” “a” “a” sample (x, size, replace=TRUE) La funzione restituisce un campione casuale di dimensione size esatto con reintroduzione (replace=TRUE) dal set di valori x. Ad esempio: sample(1:20,7,TRUE) [1] 8 6 10 14 18 4 8 s ample (x, size, replace=FALSE ) La funzione restituisce un campione casuale di dimensione size estratto senza reintroduzione (replace=FALSE) dal set di valori x. Ad esempio sample (1:20,7,FALSE) [1] 8 9 7 1 11 12 19
ab* se i vettori non hanno la stessa lunghezza, i vettori più corti sono riciclati tante volte quando necessario, finché non raggiungono le dimensioni del vettore più lungo; se le due lunghezza non sono proporzionali R produce un warning.
I vettori possono contenere dei valori logici, TRUE o FALSE ad esempio:
x<-c(2,-1,4,7,-6,5) y<-c(1,4,-2,9,5,-6) x> [1] TRUE FALSE TRUE TRUE FALSE TRUE x>y [1] TRUE FALSE TRUE FALSE FALSE TRUE x==y [1] FALSE FALSE FALSE FALSE FALSE FALSE Gli operatori logici più usati in R sono: >,< maggiore di …,minore di ... == uguale a … (da non confondere con il simbolo di =, che può essere usato come operatore di assegnazione != diverso da … & valore di AND logico | valore di OR logico ! valore di NOT logico Oltre ai vettori numerici e di stringhe, ci sono altri tipi di oggetto in R; i principali sono di seguito elencati:
Ci sono 3 modi di selezionare un sottoinsieme degli elementi di un vettore d:
d<-c(1,2,3,4,5,6) d [2:5] per selezionare dal 2° al 5° elemento; d [-3] per selezionare tutto il vettore meno il 3° elemento; d [c(TRUE,FALSE,FALSE,TRUE,TRUE,FALSE)] per selezionare il 1° , il 4° e il 5° elemento. Tutti questi modi possono essere applicati a ciascun dei due indici di una matrice e al bisogno possono essere mixati. FUNZIONI MATRICIALI OPERAZIONI MATRICIALI Le operazioni matriciali richiedono operatori speciali; per effettuare il prodotto matriciale l’operatore è %% e [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 0 7 11 [4,] 4 8 12 Operazioni matriciali t(e)%*%e [,1] [,2] [,3] [1,] 21 49 77
Simbolo Significato Lenght (x) Restituisce il n.^ Totale^ di un vettore x Sum (x) Restituisce la^ somma^ degli elementi di un vettore x nrow (x) Restituisce il^ numero di righe^ degli elementi di un vettore x ncol (x) Restituisce il^ numero di colonne^ di una matrice x dim (x) Restituisce le^ dimensioni^ di una matrice x t (x) Restituisce la matrice^ trasposta^ di una matrice x det(x) Restituisce il^ determinate^ di una matrice quadratica di x solve(x) Restituisce la^ matrice inversa^ di una matrice x eigen(x) Restituisce gli^ autovalori/autovettori^ di una matrice di x svd(x) Restituisce la^ scomposizione spettrale^ della matrice x
e [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 0 7 11 [4,] 4 8 12 Operazioni matriciali e*e [,1] [,2] [,3] [1,] 1 25 81 [2,] 4 36 100 [3,] 0 49 121 [4,] 16 64 144
e [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 0 7 11 [4,] 4 8 12 Operazioni matriciali 2*e [,1] [,2] [,3] [1,] 2 10 18 [2,] 4 12 20 [3,] 0 14 22 [4,] 8 16 24
e
[,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 0 7 11 [4,] 4 8 12 Operazioni matriciali
2+e [,1] [,2] [,3] [1,] 3 7 11
lista[[2]] [1] "casa" “giardino" È possibile nominare le componenti di una lista: amici<- list(nomi=c("Andrea","Marco","Elena"), eta=c(20,22,21)) amici $nomi [1] "Andrea" "Marco" "Elena" $eta [1] 20 22 21 Se un elemento di una lista ha un nome , può essere indicato con la sintassi: nomelista$nomeelemento Ad esempio: amici$nomi [1] "Andrea" "Marco" “Elena"
Un dataframe è una lista disposta come una matrice. Il dataframe è l'oggetto centrale che maggiormente viene usato per svolgere analisi statistiche su problemi reali. Se si hanno dei dati di dimensioni conformi in forma di lista è possibile creare un dataframe convertendo l'oggetto con la funzione as.data.frame ():
amici<-as.data.frame(amici) amici nomi eta 1 Andrea 20 2 Marco 22 3 Elena 21 In alternativa, è possibile creare un dataframe con la funzione data.frame(): amici2<- data.frame(nomi=c("Andrea","Marco","Elena"),eta=c(20,22,21)) Per accedere agli elementi di un dataframe si possono utilizzare i metodi visti per le matrici e le liste. Ad esempio: amici[1,1] restituisce il primo elemento della prima riga, cioè "Andrea"; amici[1,] restituisce la prima riga amici[,1] restituisce la prima colonna Se le colonne del dataframe hanno un nome : amici[1,]$nomi oppure amici$nomi[1] restituisce il primo elemento della colonna "nomi", cioè “Andrea"
amici$eta restituisce la colonna “eta"
amici$citta<-c("Roma","Bologna","Pescara") amici nomi eta citta 1 Andrea 20 Roma 2 Marco 22 Bologna 3 Elena 21 Pescara
amici$citta<-NULL oppure amici3<-amici[,-3]
amici<-amici[,c(1,3,2)] amici nomi citta eta 1 Andrea Roma 20 2 Marco Bologna 22 3 Elena Pescara 21
Per ordinare un dataframe rispetto ai valori di una delle colonne, si utilizza la funzione order Tale funzione restituisce per ciascun elemento dell'oggetto in questione il suo numero d'ordine nella graduatoria crescente dei valori (o decrescente se l'argomento decreasing=FALSE ). Ad esempio, per ordinare il dataframe amici in ordine alfabetico :
amici3<-amici[order(amici$nome),] amici nomi citta eta 1 Andrea Roma 20 3 Elena Pescara 21 2 Marco Bologna 22 Si consideri il dataset happy contenuto nella libreria faraway di R: library(faraway) data(happy) dim(happy) [1] 39 5 Controllando l’help del dataset è possibile leggere la sua descrizione: >?happy
c(‘Lonely','Secure','Deep') Supponiamo ora di voler descrivere i dati in esame. La rappresentazione più semplice è la costruzione di distribuzioni di frequenza. La funzione di R per poterlo fare è table()
table(happy$happy) 2 3 4 5 6 7 8 9 10 1 1 4 5 2 8 14 3 1 Supponiamo ora di voler descrivere i dati in esame. La rappresentazione più semplice è la costruzione di distribuzioni di frequenza. La funzione di R per poterlo fare è table(): table(happy$happy) 2 3 4 5 6 7 8 9 10 1 1 4 5 2 8 14 3 1 Per ottenere una distribuzione di frequenze relative percentuali basterà richiamare il comando precedente e aggiungere la moltiplicazione per 100 (all’interno della funzione di arrotondamento): round(prop.table(table(happy$happy))*100,2) 2 3 4 5 6 7 8 9 10 2.56 2.56 10.26 12.82 5.13 20.51 35.90 7.69 2. La stessa procedura può essere applicata a tutte le variabili di tipo categorico. Per poter rappresentare graficamente le distribuzioni di frequenza con un grafico a torta si usa il comando pie. La funzione prende in ingresso le frequenze assolute e le eventuali etichette. Per rappresentare la variabile love, ad esempio: valori<-table(happy$love) valori
1 2 3 3 15 21
labels<-c(‘Lonely','Secure','Deep')
Se vogliamo aggiungere agli spicchi i valori delle percentuali occorre specificare nelle etichette:
perc<-round(prop.table(valori)*100,2) perc 1 2 3 7.69 38.46 53. lbls <- paste(labels,perc) lbls <- paste(lbls,'%',sep="") lbls [1] "Lonely 7.69%" "Secure 38.46%" "Deep 53.85%”
pie(valori,lbls)
pie(valori,lbls,col=rainbow(length (lbls))
library(plotrix)
pie3D(valori,labels=lbls,explode= .1)
pie3D(valori,labels=lbls,explode= .1,theta=pi/4)
(variabile work: 1- no job, 5-great job).
boxplot(happy$money~happy$work, xlab=‘JobSatisfaction', ylab='Family Income’)
Per analizzare la relazione tra due variabili qualitative e costruire quindi una tavola di contingenza si può usare nuovamente la funzione table(). Supponiamo ad esempio di voler mettere in relazione la felicità percepita con la vita sentimentale:
table(happy$happy.cat,happy$f.love) Lonely Secure Deep Low 3 3 0 Medium 0 11 4 High 0 1 17 In alternativa, si possono utilizzare i grafici a barre con il comando BARPLOT() : barplot(table(happy$happy.cat,happy$work), beside=TRUE, legend=TRUE, main='Happyness vs. Job Satisfaction’) Oppure : barplot(table(happy$happy.cat,happy$work), beside=FALSE,legend=TRUE,main='Happyness vs. Job Satisfaction') Par(mfrow=c(1,2)) mi permette di mettere a confronto due grafici. Nella nostra situazione spiega meglio il primo modello.
La funzione unclass serve per eliminare, la classe da variabili di tipo Factor trasformandole nell’equivalente numerico.
è un grafico molto informativo circa la distribuzione di carattere continuo. Per creare un istogramma si utilizza la funzione hist() :
hist(iris$Sepal.Length, breaks=20, xlim=c(4,8)) Possiamo andare a vedere la distribuzione dei petali nelle diverse specie andando a disaggregare l’istogramma. hist(iris$Sepal.Length[ iris$Species=="virginica"], xlim=c(4,8),breaks=20,col=3, main="",xlab="Sepal Length”) hist(iris$Sepal.Length[ iris$Species=="setosa"], xlim=c(4,8),breaks=20,col=1, add=TRUE) hist(iris$Sepal.Length[ iris$Species=="versicolor"], xlim=c(4,8),breaks=20,col=2, add=TRUE)