Anteprima
Vedrai una selezione di 7 pagine su 27
Analisi Statistica multivariata - R Pag. 1 Analisi Statistica multivariata - R Pag. 2
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Analisi Statistica multivariata - R Pag. 6
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Analisi Statistica multivariata - R Pag. 11
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Analisi Statistica multivariata - R Pag. 16
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Analisi Statistica multivariata - R Pag. 21
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Analisi Statistica multivariata - R Pag. 26
1 su 27
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2021-2022
27 pagine
SSD Scienze economiche e statistiche SECS-S/01 Statistica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher mimi.col di informazioni apprese con la frequenza delle lezioni di Analisi statistica multivariata e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Rigon Tommaso.