Estratto del documento

Analisi dei dati con applicazioni informatiche

Lezione 1: Il software R

Nata nel mondo anglosassone, è un’evoluzione, a partire da un software statistico commerciale e non free, chiamato S. Questo permetteva di fare analisi statistica di ottimo livello, con buoni grafici, efficiente, e grande capacità di dati...

Da S partono poi due strade, S+ e R. S+ è commerciale, mentre il pacchetto R è un software non commerciale, ma libero, soddisfa delle licenze, da più libertà. È l’estensione libera di S. I codici funzionano su entrambi.

R si sviluppa all’interno di un sistema operativo su base Linux. È un free software sotto ai termini di GNU Project, che è l’ambiente, il sistema operativo distribuito come software libero, che permette a tutti di usare R gratuitamente, di estenderlo, personalizzarlo e svilupparlo.

Caratteristiche di R

  • Set di strumenti per analisi statistica dei dati
  • Linguaggio di tipo object-oriented per la descrizione di modelli statistici
  • Gestione ottimale dei grafici

Linguaggio base di R

Operatori aritmetici:

Simbolo di R Significato matematico
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione
^ Elevamento potenza

Esempio: (((4*2) - 7) + 2) ^3

Operatori di confronto:

Simbolo Significato
< Minore
> Maggiore
<= Minore o uguale
>= Maggiore o uguale
== Uguale
!= Diverso

Dagli operatori di confronto ci risulta un valore di verità, vero o falso. Di fatto hanno carattere binario, cioè richiedono l’esistenza di 2 parti.

NB: 0 = falso, 1 = vero. Sono valori di verità booleani (algebra di Boole). Converte valori di verità logici. Es: (3 != 3) <7 È falso che 3 è diverso da 3, perciò la prima operazione risulta 0. ~> 0<7, è vero. Quindi vero.

Operatori logici

  • & Congiunzione
  • | Disgiunzione
  • ! Negazione

Es: (2>3) & (5<10) la congiunzione di F e V produce F, per le tavole di verità.

NB: Congiunzione e disgiunzione sono di tipo binario, perché si applicano a coppie di termini/variabili. La negazione invece è di tipo unario, perché neghiamo 1 cosa sola.

Alcune funzioni matematiche

  • log() Logaritmo naturale
  • exp() Esponenziale
  • abs() Valore assoluto
  • sqrt() Radice quadrata
  • round() Funzione di arrotondamento
  • sign() Funzione segno

Es: sign(round(-1* (10/3)))
10/3 dà un decimale che sarà arrotondato da round. Esempio di sign().

Tutte le funzioni in R hanno un nome, seguito da una parentesi tonda che racchiude l’argomento, cioè dei valori. Ogni argomento è separato da una virgola.

Es: round(-.25682) ci darà 0, perché ha arrotondato il numero. NB: dunque round ci dà sempre numeri interi. Se voglio arrotondare solo tot cifre decimali, metto la virgola prima dei valori che voglio arrotondare, tipo: round(-.2568,2) sarà -0.26.

NB: un valore decimale ha un punto, non virgola, la virgola ha un altro valore. Per chiede info, scrivo ? e nome della funzione, tipo ?round e mi esce:

Oggetti di tipo variabili e costanti

Una costante in R è un oggetto che non può essere modificato, è immutabile nel tempo all’interno del sistema. Tipo il valore di π, che su R si dice pi. Non possono essere modificati at all. Il loro contenuto è fisso. Le variabili invece sono degli oggetti che si possono modificare, possono mutare, il loro contenuto può essere di volta in volta modificato. Tutte le variabili devono iniziare con una lettera dell’alfabeto; non possono avere spazi.

Nome Tipo
A, a, Giorgio, X3 Variabili
pi Costante π = 3.14
TRUE, FALSE Costanti, valori logici

Es: (A/a > 0) != TRUE case-sensitive. R è cioè se introduciamo delle variabili che hanno stesso nome ma con lettere minuscole/maiuscole differenti, questi 2 oggetti vengono riconosciuti come variabili differenti. Es: A e a sono diverse. Pippo e piPpo sono diversi.

Operazione di assegnazione: <- è un simbolo di due elementi, e vuol dire, quello che ho a dx lo assegno alla cosa che ho a sx. Praticamente creiamo una variabile e le assegnamo uno specifico valore. La differenza fra numeri e stringhe, è che le stringhe sono sempre contenute fra le “…”

Operatore di assegnazione variabili

<- assegnazione da dx a sx Es: A <- 12.8
nome <- “giorgio”

Operatore di concatenazione

c() concatena i valori assegnati Es: b1 <- c(12,0.3,5,778.3)
Nomi3 <- c("giorgio", "ugo", "anna")

Se voglio avere una variabile che abbia sequenze di valori e non un solo valore, allora uso la concatenazione.

NB: Se voglio modificare il contenuto della variabile: prima avevo creato Pippo, poi Nomi, poi concateno le due variabili e ne esce: Così abbiamo cambiato i valori e il contenuto della variabile Pippo. Questa variabile ha perso del tutto i valori numerici che aveva prima.

Oggetto matrice

matrix(y,r,c) matrice di dimensioni r x c con valori in y.

  • Columnwise: E' il primo argomento è il vettore della matrice
  • Il secondo e terzo indicano la dimensione della matrice: il secondo, r, indica le righe il terzo, c, indica le colonne

Es: A <- c(1,8,5,0)
M <- matrix(A,2,2)

Quando delle variabili contengono una concatenazione di valori (numerici o non), tali oggetti vengono chiamati vettori. Sono una sequenza ordinata di info con la stessa qualità (numerica o non). Il vettore è un oggetto unidimensionale, mentre la matrice...

Una matrice è un oggetto bidimensionale, è una tabella con tot righe e tot colonne. Però è solo numerica (NB). La funzione matrix ha obbligatoriamente 3 argomenti (separati dalle virgole). Es: matrix(y,r,c) ~> Il primo argomento (y) è il tipo di valori contenuti nella matrice, il secondo e terzo argomento (numeri naturali) indicano la dimensione (tot righe e tot colonne). Vediamo sotto:

Voglio costruire una matrice di ordine 3x2, perciò il vettore avrà 6 elementi (vettore di lunghezza 6). Viene prima riempita la prima colonna, quando si esaurisce, si usa la columnwise. Qui ho creato C, poi ci ho voluto costruire la matrice ed è uscito questo.

Le matrici sono delle strutture matematiche perciò possiamo usare le operazioni algebriche di base per modificare il contenuto di alcune matrici (somma tra matrici, prodotto, trasposizione..)

Somma tra matrici

Uso la somma tra matrici se voglio sommare gli elementi contenuti nelle matrici in oggetto.

NB: Posso fare la somma tra matrici solo se queste hanno esattamente la stessa dimensione (stesso numero di righe e di colonne).

Es: Vado a creare un’altra matrice, Mat 2, faccio la somma e ne esce: Nell’ultima c'è la somma fatta a ‘battaglia navale’. NB: La somma non è memorizzata nello workspace. Però se posso salvarla creando una matrice apposita, quindi creiamo Mat3 —>

Lezione 2: Oggetto lista

Simbolo R significato list() costruisce una lista di oggetti.

La lista è una struttura con un buon grado di strutturazione e complessità. Permette di estendere la rappresentazione delle informazioni in vario modo, da strutture di oggetti omogenei per categoria di informazioni, ad oggetti che possono invece essere variabili per quanto riguarda la tipologia in oggetto.

Praticamente l’oggetto lista è un costrutto che permette di contenere le informazioni in un unico oggetto ma eterogeneo (Ricordiamo che invece la matrice è una struttura omogenea di informazioni numeriche.)

La funzione list() che deve essere intesa come struttura di dati. Una lista è un insieme ordinato di oggetti di tipo eterogeneo, dunque numeri, vettori, sequenze, addirittura matrici, ecc. La lista ha una struttura piuttosto articolata, infatti la costruzione della lista richiede una sequenza di operazioni che vanno inserite in R. Tecnicamente si può creare una lista con un’unica linea di comando, però questo richiederebbe una scrittura molto estesa, occuperebbe troppo spazio sulla linea e creerebbe confusione.

Così è meglio creare le liste con diverse operazioni, ognuna su linee diverse, ordinate, di codici. NB: Prima creiamo i componenti della lista, poi ce li assegnamo, ricordandoci di assegnare un argomento per ogni oggetto. La funzione list() ha tanti oggetti quanti la lista stessa. A è un vettore numerico, M è una matrice, Nomi3 è una variabile testuale. Ogni oggetto (A, M, Nomi3, LV) viene assegnato ad un argomento. “a” è il primo elemento della lista, il primo parametro della lista. Il secondo argomento Mat della lista ha assegnata la matrice, nomi ha assegnato il vettore Nomi3, e X ha assegnato LV. La visualizzazione del risultato è molto articolata.

_________ funzione rep: Molto importante è la se voglio ripetere un valore tot volte uso questa funzione.

Vediamo un esempio, voglio creare Y, una matrice di 9 numeri che abbia sulla prima colonna solo uni sulla seconda solo 2 sulla terza solo 3. Si fa così: Y <- matrix(c(rep(1,3),rep(2,3),rep(3,3)) ma non è completa, infatti non abbiamo scritto la dimensione della matrice! Y <- matrix(c(rep(1,3),rep(2,3),rep(3,3)),3,3) … così è completa e ci uscirà:

Se non diamo la dimensione, ci uscirà un vettore di 9 elementi come segue: [1] 1 1 1 2 2 2 3 3 3

Su R abbiamo creato queste 3 cose: Vediamo che sono tre cose diverse con grandezze e dimensioni diverse: la prima variabile X è un vettore numerico di 10 numeri, Y è una matrice di dimensione 3x3 con 9 info numeriche, Z è una variabile testuale a stringhe. C’è dunque massima eterogeneità.

Come costruiamo ora la lista? Dobbiamo scegliere un nome per la lista e assegnarle il risultato di una funzione, cioè la funzione lista. Indichiamo poi l’argomento della variabile, stando attenti all’ordine all’interno della lista.

Es: Lista1 <- list(z=Z,x=X,y=Y) Questo crea nel work space un oggetto che contiene queste tre cose. I nomi che do agli argomenti (z,x,y) saranno i nomi delle variabili nella lista, così nel workspace ci sarà spazio per le variabili esterne (X,Y,Z) e oggetti interni alla lista (x,y,z). Tenendo separati questi oggetti ci assicuriamo che se facciamo una modifica a livello esterno, non succede nulla alle componenti interne alla lista.

L’output ha 3 blocchi, $z, $x, $y: Ecco qui la lista1, una variabile che contiene informazioni di vario genere e varia complessità. C'è una funzione che permette di riassumere le info peculiari di un oggetto lista. Usiamo allora la funzione summary, una funzione di tipo generico molto flessibile, robusta e versatile a varie situazioni. È una funzione perciò richiede le parentesi.

Se noi facciamo il summary della Lista1, ci esce questo output: ci da i nomi con l’ordine scelto, poi la lunghezza con il numero di elementi, la classe che vedremo dopo, e mode cioè la tipologia. Mode ci mostra le caratteristiche specifiche delle componenti, se sono numeriche, testuali o stringhe. Se avevamo TRUE o FALSE, summary ci avrebbe dato come Mode l’output logico.

Operatore di selezione

Simbolo R significato [ ] seleziona gli elementi di un oggetto (che sia vettore, matrice, lista, dataframe)

Permette di navigare in modo diverso e andare ad agire su determinati oggetti creati nello workspace. Ci permette di selezionare gli oggetti che stanno all’interno di altri oggetti (vettori, matrici, liste, data frame…) Innanzi tutto questi oggetti devono essere presenti nel workspace, dobbiamo crearli.

Possiamo usare l’operatore di selezione in modo flessibile, in funzione all’oggetto a cui lo applichiamo. Per esempio se l’oggetto di riferimento è un vettore, usiamo le [ ] in un certo modo, se invece operiamo su una matrice, usiamo [ ] in modo diverso.

Vediamo allora l’esempio del vettore, nel nostro caso è A <- c(1,8,5,0). Se vogliamo prendere il primo e quarto elemento di A, dobbiamo richiamare A, aprire le [ ], inserire le posizioni che voglio usando l’operatore di concatenazione c().

NB:

  • Se l’operatore di selezione viene applicato ad un vettore, allora si richiede un unico argomento fra le parentesi quadre, tipo [2], se invece vogliamo selezionare più elementi, dobbiamo usare l’operatore di concatenazione c, dunque A[c(1,2)].
  • Se invece vogliamo usare la selezione in un oggetto bidimensionale, tipo la matrice, dobbiamo prendere in considerazione due argomenti, separati da una virgola. Per esempio vogliamo selezionare l’elemento in riga 3 e colonna 2 della mia matrice. Dobbiamo scrivere M[3,2]. Dunque nel primo spazio c'è la riga, nel secondo la colonna. Usiamo solo le quadre perché nonostante 3 e 2 siano due numeri, in realtà formano un unico argomento.

Creiamo una matrice 4x5, con 20 elementi, i primi 20 numeri naturali.

  1. x <- c(1:20)
  2. X <- matrix(x,4,5)
  3. Ora vogliamo selezionare ciò che sta sulla quarta riga della seconda colonna, cioè riga 4, colonna 2. Nel nostro caso è 8.
  4. E così via..
  • Se invece vogliamo selezionare un’intera riga scriviamo X[3, ] lasciando quindi lo spazio vuoto dove dovremmo scrivere la colonna
  • Se vogliamo selezionare un’intera colonna scriviamo X[ ,2]

Se invece voglio selezionare determinate righe e colonne, per esempio voglio la seconda e terza riga, più la seconda e terza colonna di X, devo fare così: X[c(2,3),c(2,3)].

Infatti otterremo quei numeri che stanno nella 2 e terza riga x 2 e terza colonna, cioè il blocco “interno”: dunque il primo argomento dopo c contiene le righe, il secondo dopo l’altro c, contiene le colonne. —> in questo caso, abbiamo scritto colonna 3 e 2, perciò l’ordine è stato diciamo “invertito”.

Ora invece vogliamo prendere i valori sull’ultima colonna, che siano maggiori di 18. Perciò dobbiamo selezionare tutte le righe che soddisfano questa richiesta, dei valori >18. Nel nostro caso sono la terza e quarta riga.

All’inizio dobbiamo scrivere X[X[ ,5] per indicare che vogliamo considerare la quinta colonna. Poi aggiungiamo X[X[ ,5]>18, ]. Abbiamo scritto 18, ] perché vogliamo vedere i valori al di là di 18 di tutte le colonne.

Se invece vogliamo i >18, intendendo il 19 e il 20, dovremo indicare come vincolo la quinta colonna. Non più tutte le colonne ma solo la quinta.

X[X[ ,5]>18,5]
[1] 19 20

Oppure:

X[X[ ,3]>10,3]
[1] 11 12

Mentre sulle righe: Ora riprendiamo X e vogliamo tutte le righe di X che nella seconda colonna siano >7 ma al tempo stesso che nella terza colonna siano >=10.

  • Vincolo 1: sulla seconda colonna vogliamo i >7
  • Vincolo 2: sulla terza colonna vogliamo i >=10

… c'è solamente una riga che soddisfa entrambi i vincoli contemporaneamente (data la situazione di congiunzione &), cioè l’ultima.

Sistemi di editing, funzioni definite dall’utente e data frame

Sistema combinatorio R + word editor/foglio. In quanto a modifiche di sintassi, R non è il software ottimale, perciò possiamo combinare l’utilizzo di R con semplici fogli di testo (note, pages,)... Per salvare l’output dato da R e per produrre cose che andremo poi ad inserire in R. Praticamente per supporto. Un software esterno è R studio, che permette di integrare.

Passaggi

  1. Note pages, “foglio di sintassi”
  2. Copia e incolla dal foglio di sintassi in R console, di righe o testi interi. In questo modo R eseguirà i comandi proposti.
  3. Copia e incolla dell’output di R su pages a modo da conservarlo. Lo chiamiamo “foglio di output”

Su pages posso modificare quello che mi pare delle mie stringhe, vettori, ecc.. per poi copiare e incollare in R, mentre se si facesse in R sarebbe più complesso e richiederebbe più tempo.

Calcolo dell’area di un rettangolo

Possiamo preparare il tutto su pages, a modo da modificare quello che voglio senza farlo in R occupando il workspace con input vari.

NB: pay attention to the > sign at the beginning

Funzioni definite dall’utente

Sono funzioni per fare dei calcoli in R che ogni volta andiamo a creare in base alle esigenze. Ha una sintassi più complessa degli oggetti precedenti. Nella sintassi generica si può cambiare tutto ma non il termine function.

Funzioni (user-defined function)

Sintassi

my function <- function (arg1, arg2, ..., arg.n) {
    statements
    return (object)
}

Esempio (area di un rettangolo)

AreaRettang <- function (Lato1, Lato2) {
    Area <- Lato1*Lato2
    return (Area)
}

myfunction è un esempio di nome della funzione. In ogni caso richiede l’assegnazione <-. La funzione è costituita da una serie finita di argomenti. Dopo la tonda contenente gli argomenti, c'è la { che indica il blocco di istruzioni che la nostra funzione dovrà eseguire }. Queste indicazioni sono gli statements, return sono gli statements che indicano delle azioni. Poi c'è anche il termine return che indica cosa la funzione dovrà restituire.

Tutto ciò che è obbligatorio per indicare cosa la funzione deve creare. Una volta creata, possiamo sempre usarla richiamando il nome della funzione (nell’es, AreaRettang)

Esempio:

############################foglio di sintassi#######################
Anteprima
Vedrai una selezione di 10 pagine su 109
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 1 Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 2
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 6
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 11
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 16
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 21
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 26
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 31
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 36
Anteprima di 10 pagg. su 109.
Scarica il documento per vederlo tutto.
Appunti completi e ottimi di analisi dei dati, R, RStudio e correlati con esempi e esercizi Pag. 41
1 su 109
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze economiche e statistiche SECS-S/01 Statistica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher 30elodee di informazioni apprese con la frequenza delle lezioni di Analisi dei dati e tecnologie informatiche 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 Trento o del prof Lombardi Luigi.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community