Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni48 pagine

Guida R

Il documento fornisce una panoramica delle funzioni e delle strutture dati in R, inclusi script, oggetti, funzioni, pacchetti, operatori e tipi di dati come vettori, matrici e dataframe. Viene spiegato come creare e manipolare oggetti, utilizzare funzioni, gestire errori e importare/esportare dati. Inoltre, si discute la statistica descrittiva e inferenziale, evidenziando l'importanza della preparazione dei dati.

Caricato da

giorgiopisella
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni48 pagine

Guida R

Il documento fornisce una panoramica delle funzioni e delle strutture dati in R, inclusi script, oggetti, funzioni, pacchetti, operatori e tipi di dati come vettori, matrici e dataframe. Viene spiegato come creare e manipolare oggetti, utilizzare funzioni, gestire errori e importare/esportare dati. Inoltre, si discute la statistica descrittiva e inferenziale, evidenziando l'importanza della preparazione dei dati.

Caricato da

giorgiopisella
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

Riepilogo Funzioni R

alto sx script


basso sx console
alto dx environment/scrivania
basso dx varie

Nell’environment trovi tutte le variabili (oggetti) creati nella sessione di lavoro

script= file di test in cui posso scrivere codice/comandi e commenti

per scrivere commenti bassa scrivere #.........

working directory è la posizione (cartella) in cui R salverà le robe su cui sto


lavorando

Getwd mi dice in quale working directory sto lavorando


setwd(il posto in cui voglio salvare) mi permette di impostarla
Capisci che cazzo è un progetto lol

Per salvare uno script

file

OGGETTI
NOTA: tutto ciò che possiamo creare in R viene definito oggetto

Sia = sia <- creano oggetti

Character: stringhe di valori alfanumerici. Vengono delimitati dalle doppie


vigolette “Hello world!” o virgolette singole ‘Hello world!’
Numeri: interi o decimali

Regole denominazione oggetti

 Deve iniziare con una lettera e può contenere lettere, numeri, underscore
( _ ), o punti (.).
 Potrebbe anche iniziare con un punto (.) ma in tal caso non può essere
seguito da un numero.

es.
 Non deve contenere caratteri speciali come #, &, $, ?, etc.
 Non deve essere una parola riservata ovvero quelle parole che sono
utilizzate da R con un significato speciale es. TRUE
 Esistono nomi non proibiti ma scosigliati
o T e F (che R può considerare TRUE e FALSE
o Nomi di funzioni es. sum
NOTA BENE: R è case sensitive, cioè oggetto con la maiuscola è != da oggetto
con la minuscola

Di default gli oggetti sono creati nel global environment accessibile con ls() o
visibile in R Studio con anche alcune informazioni aggiuntive:

Possiamo eliminare un oggetto presente nel nostro enviroment attraverso il


comando rm("nomeoggetto").
E’ possibile anche pulire completamente/svuotare il nostro enrivoment
attraverso il comando rm(list = ls()).

FUNZIONI
Tutto quello che facciamo in R è chiamare funzioni su oggetti. Le funzioni ci
permettono di creare e modificare oggetti.

Dati dei valori in input, le funzioni eseguono dei specifici calcoli e restituiscono
in output il risultato ottenuto.

Gli argomenti delle funzioni sono quelli che da utenti dobbiamo conoscere ed
impostare nel modo corretto per fare in modo che la funzioni faccia quello per
cui è stata pensata. Nell’esempio precedente l’unico argomento era x. Vediamo
invece l’help della funzione mean().

o così o “?mean”

Se cerchi qua in riquadro basso a dx trovi come funziona la funzione, quali sono
i suoi argomenti ecc

Per impostare questi argomenti ci sono 2 regole: l’ordine non conta SE


DEFINISCO NOME DELL’ARGOMENTO con x = vettore, [Link] = TRUE, etc.
l’ordine conta SE NON DEFINISCO IL NOME DELL’ARGOMENTO. Posso quindi
omettere argomento = valore ma devo rispettare l’ordine con cui è stata scritta
la funzione.

Per impostare questi argomenti ci sono 2 regole:

1. l’ordine non conta SE DEFINISCO NOME DELL’ARGOMENTO


con x = vettore, [Link] = TRUE, etc.
devo usare le paroline!!!!
Quando specifichi esplicitamente il nome dell’argomento (argomento =
valore), R associa il valore al parametro corretto indipendentemente
dalla posizione.
Funzionano entrambi perché:
 x viene assegnato al parametro x
 [Link] viene assegnato al parametro [Link]
L’ordine è irrilevante perché R usa il matching per nome.

2. l’ordine conta SE NON DEFINISCO IL NOME DELL’ARGOMENTO. Posso


quindi omettere argomento = valore ma devo rispettare l’ordine con cui è
stata scritta la funzione.
Se scrivi solo i valori senza indicare il nome del parametro, R li assegna
in base alla posizione nella definizione della funzione.

[Link] mi dice cosa fare con valori mancanti


se = FALSE li conta
se= TRUE li rimuove e poi calcola coi dati rimanenti
TRIM mi dice quali valori “esterni” escludere
utile se ho outliars

NOTA: se non definisco gli argomenti R li compila da solo assegnando valori di


default, es TRIM=0, [Link]=FALSE

PACCHETTI

In R è possibile installare e caricare pacchetti aggiuntivi che non fanno altro


che rendere disponibili librerie di funzioni create da altri utenti. Per utilizzare un
pacchetto:

 Installare il pacchetto con [Link]("nomepacchetto")


 Caricare il pacchetto con library(nomepacchetto)
 Accedere ad una funzione senza caricare il pachetto
nomepacchetto::nomefunzione(). Utile se serve solo una funzione o ci
sono conflitti)

OPERATORI

MATEMATICI
NOTA: round(1.738, 2) 2 mi dice a che cifra decimale vuoi arrotondare?
R segue le regole della matematica per svolgere operazioni (es prima parentesi
ecc)

RELAZIONALI

possibile valutare se una data relazione è vera o falsa. R valuterà le


proposizioni e ci restituirà il valore TRUE se la proposizione è vera oppure FALSE
se la proposizione è falsa.

ricorda, R è case specific

LOGICI
ERRORI IN R

diversi livelli di allerta quando scriviamo codice:

 messaggi: la funzione ci restituisce qualcosa che è utile sapere, ma tutto


liscio
 warnings: la funzione ci informa di qualcosa di potenzialmente
problematico, ma (circa) tutto liscio
 error: la funzione non solo ci informa di un errore ma le operazioni
richieste non sono state eseguite

Come risolvere?
Capire il messaggio
Leggere la documentazione della funzione
Cercare il messaggio su internet
Chiedere aiuto nei forum dedicati

DIVERSI TIPI DI OGGETTI IN R

VETTORI

Vettori sono struttura unidimensionale e hanno solo lunghezza (e sono


indicabili le posizioni dei dati)

COME CREO UN VETTORE?


c(elementi che voglio mettere nel vettore) indicando tra le parentesi i valori
degli elementi nella sucessione desiderata e separati da una virgola.
comando length() è possibile ottenere la lunghezza del vettore

class(vettore) mi dice tipologia di dati da cui è formato un vettore

NOTA: vettore deve essere formato da elementi tutti dello stesso tipo,
altrimenti R mi dice che è tutto un character

NOTA: Possiamo testare o convertire (quando possibile) la tipologia del vettore


attraverso le funzioni is. & as.

Vettore character vettore numeric

vettore logical mi dice se gli elementi del vettore rispettano una certa regola o
meno
Indicizzazione: estraggo elementi da un vettore

[numero] mi estrae il valore in quella posizione nel vettore

Indicizzazione logica: estraggo i valori che rispettano un certo criterio (e quindi


su TRUE e FALSE

Nel vettore numeri[gli elementi di numeri>2 & elementi di numeri <5]

NOTA: R lavora su tutti gli elementi del vettore tendenzialmente

OPERAZIONI MATEMATICHE SUI VETTORI

Possiamo eseguire operazioni sui vettori, ed applicare la stessa operazione a


tutti gli elementi del vettore (element-wise)
FATTORI
sono vettori speciali!

Sono simili a vettori character

Attraverso la funzione factor() è possibile creare un fattore, specificando: il


vettore character, l’ordine dei livelli del fattore (levels = ), le etichette per
ciascun livello (labels = )

Levels mi individua sia quali sono i lv, ma anche l’ordine di presentazione!

Posso o decidere quello che è il mio fattore con [Link](???)

O posso trasformare un vettore character in un fattore con [Link]()


posso anche >1? booo

La funzione rep() permette di ripetere gli elementi di un vettore. In questo


esempio creo prima un vettore di tipo character e poi lo trasformo a fattore
attraverso il comando [Link]().
Perché l’ordine dei livelli differisce? Di default, la funzione factor() assegna
l’ordine dei livelli alfabeticamente, a meno che non lo forziamo con l’argomento
levels.

NOTA: se non gli scrivo i levels li ordina da solo!

I fattori sono trattati come numeri interi. R prende i valori unici, li mette in
ordine alfabetico e assegna loro progressivamente i numeri 1, 2, 3, ecc. Questo

rispecchia come R valuta le stringhe di testo:


I fattori permettono di avere dei livelli levels() come metadati, a prescindere da

quali dati siano effettivamente presenti nel vettore.

Es se creo unfattore composto solo dagli elementi di my_fact1 != da “LM”


I livelli di my_fact2 saranno gli stessi di my_fact1 (“LM” incluso) anche se “LM”
non è presente come osservazione

NOTA2: R legge tutti i nomi come numeri poi li ritrasforma

Accedo ai lv del fattore con levels(nomefattore)

NOTA: i lv sono a prescindere dai valori nel fattore

Con droplevels posso rimuovere i lvelli non contenuti nel nuovo vettore/fattore
MATRICI

Matrici solo un tipo di dati o numeri o characters (dataframe no)

Le matrici sono una struttura dati bidimensionale (caratterizzate da 2


dimensioni dim() ) dove il numero di righe rappresenta la dimensione 1 e il
numero di colonne la dimensione 2

Caratteristiche:

 Possono contenere una sola tipologia di dati


 Essendo bidimensionali, abbiamo bisogno di due indici di posizione (righe
e colonne) per identificare un elemento
 Possono essere viste come un insieme di singoli vettori

NOTA: Il numero di righe e colonne non deve essere lo stesso necessariamente


(matrice quadrata) ma il numero di righe deve essere compatibile con il vettore
data:
Cosa fa R di default in sto caso?

Indicizzazione: nomematrice[riga,colonna]

E’ possibile anche selezionare un’intera riga o colonna non scrivendo niente al


posto della colonna o la riga
Posso aggregare vettori in matrici
I vettori si creano attraverso la funzione c() e possono essere concatenati tra
loro sempre attraverso la stessa funzione:

NOTA: non puoi attaccare robe con lunghezze diverse

Le matrici possono essere unite tra loro attraverso i comandi:

 cbind()
 rowbind()

OPERAZIONI CON LE MATRICI

Come per i vettori, anche alle matrici si possono applicare operazioni


matematiche:

DATAFRAME

Il dataframe è la struttura più “complessa”, utile e potente di R.

 ogni elemento è un vettore con un nome associato (aka una colonna)


 ogni colonna deve avere lo stesso numero di elementi
 di conseguenza ogni riga ha lo stesso numero di elementi (struttura
rettangolare)
Si creano attraverso il comando; [Link](nome colonna 1 = , nome colonna
2= bla bla)

ATTRIBUTI DEI DATAFRAME

Possiamo utilizzare le funzioni names() , dim(), nrow(), ncol()… per ottenere


informazioni sulle caratteristiche del dataframe.
La funzione più utile è str() poichè ci restituisce una veloce overview della
struttura del dataframe: dimensioni, quante e quali tipi di variabili ecc.

Indicizzazione
Nome dataframe[numero della colonna]

Posso estrarre anche con il comando $, chiamando le colonne(?) per nome

Indicizzazione logica mi permette di “filtrare”, di estrarre/valutare un


sottoinsieme di valori nel dataset
es. Includo solo le righe per cui alla colonna numeri i valori sono maggiori di 2
Prima parte righe , seconda parte colonne????????? capisci

Indicizzazione subset
Indicizzazione subset mi permette di creare un dataframe con un sottoinsieme
di elementi del dataframe originale

L’argomento subset= definisce la condizione da valutare per la selezione degli


elementi di my_df.

Posso anche selezionare le colonne con l’argomento select=


subset(df, select = ...)

Possiamo anche combinare le due cose:


subset(df, subset = ..., select = ...)

 valuto la condizione per riga (subset = lettere == "a" & numeri > 2)
 seleziono le colonne (subset = c(lettere, numeri))

La maggiorparte delle volte ci troveremo ad accedere alle variabili tramite


l’operatore $. Questo comando può essere utilizzato anche per creare una
nuova variabile…

Potete sia creare che modificare variabili accedendo attraverso $

Mydf$nome colonna = Mydf$colonna e operazione


Combinare i dataframe
importante che i names (vedi pag dopo) dei dataframe siano uguali

Essendo simili a delle matrici, i dataframe si possono combinare tra loro


attraverso le funzioni rbind():

NOTA: quando unisco i due Dataframe

 I Dataframe devono avere lo stesso numero di colonne


 I nomi delle colonne devono essere identici
Quindi 

Potrebbe anche capitarvi di dover raccogliere differenti tipi di dato dallo stesso
partecipante, e successivamente combinare le informazioni raccolte…

Si possono unire anche in colonna con “merge(x=primo df, y=secondo df,


by=subj cioè ciò che accomuna quei dati
In questo caso, è possibile utilizzare la funzione merge():

ESPORTAZIONE E IMPORTAZIONE DATI

In R è possibile importare dati in molti formati differenti, più comunemente vi


troverete ad importare dati .csv oppure .xlsx. Qui per esempio, esporto i
dataframe in tre formati differenti…

Importo
Statistica descrittiva e inferenziale
Statistica descrittiva: Riassume, descrive ed esplora i dati osservati. Prima
fase nella valutazione delle proprietà psicometriche di uno strumento.
Riassume, descrive, esplora i dati osservati
Prima fase nella valutazione delle proprietà psicometriche di uno strumento

Statistica inferenziale: Usa i dati di un campione per fare inferenze sulla


popolazione (confronti tra gruppi, valutazione di interventi, validazione di test).
Usa i dati di un campione per fare inferenze sulla popolazione Confronti tra
gruppi, valutazione di interventi, validazione di test

Preparazione dei Dati in R

2.1 Comandi base

# Pulire lo spazio di lavoro


rm(list = ls())

# Impostare working directory


setwd('/percorso/cartella')

# Caricare dataset
burnout = [Link]("data/[Link]") (o lo puoi fare da qua)
# Visualizzare struttura
str(burnout)

# Definire natura della variabile


burnout$StressLevel = [Link](burnout$StressLevel) per renderla
var ordinale

burnout$StressLevel ti mostra tutta la variabile es.

2.2 Notazioni fondamentali


Frequenze

3.1 Frequenze Assolute Semplici

Definizione: Numero naturale di unità statistiche che presentano una data


categoria.

#per avere la frequenza assoluta delle singole classi in una variabile


fi = table(burnout$StressLevel)

3.2 Frequenze Assolute Cumulate

Definizione: Somma delle frequenze assolute semplici delle categorie


precedenti alla categoria data più la frequenza assoluta semplice della
categoria data.

#per avere la frequenza cumulata assoluta delle singole classi in una variabile
Fi = cumsum(table(burnout$StressLevel))

3.3 Frequenze Relative Semplici

Definizione: Rapporto tra la frequenza assoluta semplice e il numero totale di


unità statistiche. Varia sempre tra 0 e 1.

#per avere la frequenza relativa semplice delle singole classi in una variabile
pi = table(burnout$StressLevel) / n
dove
n = nrow(burnout) # numero unità statistiche oppure n =
length(burnout$StressLevel)

3.4 Frequenze Relative Cumulate


Definizione: Somma delle frequenze relative semplici delle categorie
precedenti più la frequenza relativa semplice della categoria data. Varia
sempre tra 0 e 1.

#per avere la frequenza relativa cumulata delle singole classi in una variabile
Pi = cumsum(table(burnout$StressLevel) / n)

3.5 Visualizzazione

grafico di frequenze assolute semplici


barplot(table(burnout$StressLevel),

ylab = "Frequenze assolute semplici")

grafico di frequenze relative


barplot(table(burnout$StressLevel) / n,

ylab = "Frequenze relative semplici")


NOTA: cambia solo asse y

grafico di frequenze cumulate assolute


barplot(cumsum(table(burnout$StressLevel)),

ylab = "Frequenze assolute cumulate")

grafico di frequenze cumulate relative


barplot(cumsum(table(burnout$StressLevel)/n),

ylab = "Frequenze relative cumulate")


Indici di Tendenza Centrale

4.1 Definizione

Un indice di tendenza centrale è un valore che descrive e riassume il centro


di una distribuzione di dati.

4.2 Moda

Definizione: Categoria che si presenta con la massima frequenza.


Per trovare la moda
table(burnout$StressLevel) e vedi qual è la categoria più frequente

in sto caso la 1

4.3 Mediana

Definizione: Dato che occupa la posizione centrale rispetto alla distribuzione


dei dati ordinati.

2 modi per trovarla


median([Link](burnout$StressLevel))

Oppure
NOTA: è la classe all’interno della quale cade il dato (n+1)/2

i = (n + 1) / 2 # posizione centrale
cumsum(table(burnout$StressLevel)) # trovare prima freq cumulata >= i

4.4 Media Aritmetica

Definizione: Somma dei dati divisa per il numero di unità statistiche.

Come la calcolo?

Manualmente
sum(burnout$Age) / length(burnout$Age)

Funzione diretta
mean(burnout$Age)
Indici di Variabilità

5.1 Definizione

La variabilità (o dispersione) misura quanto i punteggi di una distribuzione


sono sparsi, ovvero quanto siano simili o dissimili tra loro.

 Valori sempre positivi o nulli

 Variabilità minima = 0 (tutti i punteggi uguali)

5.2 Campo di Variazione (Gamma)


Definizione: Differenza tra valore massimo e minimo osservato.

in R
team_A = c(38, 42, 44, 36, 39, 42, 38, 41)
max(team_A) - min(team_A)

utile anche
range(team_A) mi dà il max e il min

5.3 Varianza

Definizione: Media degli scarti al quadrato tra i dati e la media dei dati stessi.

come?
Oppure var(team_A) MA occhio, calcola varianza campionaria, divide per n-1
per dati descrittivi si usa n, per stimare la varianza della popolaz da cui è stato
estratto il campione si usa n-1

5.4 Deviazione Standard

Definizione: Radice quadrata della varianza. Riporta l’indice di variabilità sulla


scala della variabile.

funzione
sd(burnout$WorkHoursPerWeek) anche questa campionaria (n-1)

5.5 Coefficiente di Variazione

Definizione: Rapporto tra deviazione standard e valore assoluto della media.


Indice di variabilità relativa per confrontare fenomeni misurati su scale diverse.

Esempio

sd_esp

[1] 9.148267

sd_ore

[1] 11.83242

cv_esp

[1] 0.9080617
cv_ore

[1] 0.2386147

5.6 Differenza Interquartilica (IQR)

Definizione: Differenza tra terzo e primo quartile. Misura la dispersione del


50% centrale dei dati. Indice robusto (valori estremi incidono poco).
NOTA: i quartili sono 3 LOL

La funzione quantile() permette di calcolare i quantili. L’argomento prob


= ... definisce che percetile vogliamo ottenere.

Q1 = quantile(burnout$Experience, prob = 0.25)

Q3 = quantile(burnout$Experience, prob = 0.75)

differenza_iqr = Q3 - Q1

# Limiti outlier

limite_inferiore = Q1 - (1.5 * differenza_iqr)

limite_superiore = Q3 + (1.5 * differenza_iqr)

5.7 Boxplot

Visualizzazione della variabilità:


Outlier: valori oltre1.5xIQR dai quartili

Per identificare outlier:


subset(burnout, #dataset
select = c(Name, Experience), # colonne d'interesse
subset = Experience>limite_superiore) # valuto per riga

# Equivalente con dataframe[valuto per riga, colonne d'interesse]:


burnout[burnout$Experience > limite_superiore, c("Name",
"Experience")]

6 Percentili

6.1 Definizione

Il percentile di ordine p è quella categoria/valore che è:


 preceduta da almeno p% dei casi

 superata da almeno (1-p)% dei casi

Tipi:

 Quartili: percentili di ordine 25, 50, 75

 Decili: percentili di ordine 10, 20, …, 90

 Percentili: percentili di ordine 1, 2, …, 98, 99

quantile(burnout$SatisfactionLevel,
probs = c(0.05, 0.25, 0.50, 0.75, 0.95)) NOTA: mi da
anche diversi quantili!

6.2 Rango Percentile

Definizione: Percentuale di casi che hanno un valore uguale o inferiore a un


particolare punteggio Xi.

con Rp=rango percentile


B=numero di casi <Xi con Xi=pteggio di
interesse
N= numero tot casi
su R
rango = rank(burnout$SatisfactionLevel)
N = nrow(burnout)
Rp_SatisfactionLevel = (rango / N) * 100

# Aggiungere al dataset
burnout$Rp_SatisfactionLevel = Rp_SatisfactionLevel

# visualizzo le prime 6 righe del dataset


head(burnout$Rp_SatisfactionLevel, n = 6)

NOTA: Rp e percentile sono quasi inversi. Rp ti dice la percentuale prima di un


numero, percentile ti dice quale valore sta subito dopo una certa percentuale
cumulata

Indici di Forma

7.1 Definizione
Gli indici di forma descrivono come è distribuita una variabile, oltre alla sua
posizione centrale e dispersione. Due distribuzioni possono avere stessa media
e deviazione standard ma forma diversa.

7.2 Asimmetria (Skewness)

Definizione: Misura quanto una distribuzione si discosta dalla simmetria


rispetto al centro.

Come?
# Installare e caricare pacchetto
# [Link]("psych")
library(psych)
# Calcolare asimmetria
skew(burnout$WorkHoursPerWeek)
Se asimmetria vedi che i baffi del boxplot hanno lunghezza diversa

7.3 Curtosi (Kurtosis)

Definizione: Misura quanto i dati si concentrano nelle code della distribuzione.


Molti software riportano l’eccesso di curtosi (valore in relazione alla curtosi
della distribuzione normale = 3).

Si parla di eccesso di kurtosi

NOTA: Il discorso son le code piuttosto che il picco

canguri coda pesante, platypus coda leggera


Come?
kurtosi(burnout$WorkHoursPerWeek)

 platicurtica

7.4 Confronto Multiple Variabili

7.4 Confronto Multiple Variabili


La funzione describe() del pacchetto psych calcola le statiche descrittive per
tutte le variabili in un dataset

Potrebbero piacerti anche