Il comando base di generazione di un vettore è la concatenazione.
Anche il singolo valore numerico è pensato come vettore di lunghezza 1. In realtà quindi il comando di concatenazione concatena vettori.
L’operazione è stata eseguita lo stesso, ma il software ha restituito un messaggio di avviso. Le operazioni che esso ha eseguito sono le seguenti
y1=c(y,y)
: concatenazione di due copie del vettore più corto,y2=y[1:3]
: adattamento della lunghezza,x*y2
: operazione aritmetica coerente.Stavolta il software non ha emesso un messaggio di avviso, perché la lunghezza di \(z\) è un multiplo della lunghezza di \(y\).
Ma lo stesso vettore si poteva ottenere anche nel modo seguente (notare l’ordine con cui le operazioni sono eseguite):
Fortemente sconsigliato definire oggetti con i nomi T
, F
, NA
, perché sono variabili interne di R
predefinite.
Creazione di una matrice con dati numeri di righe e colonne (qui ad esempio \(4\times 6\)),
La creazione e il suo popolamento possono essere fatti simultaneamente,
Il riempimento avviene per colonne. Se si vuole ottenere il riempimento per righe si può operare per trasposizione,
oppure usare il comando seguente:
Il comando per la dimensione è un vettore. I singoli valori possono essere ottenuti separatamente,
Come per i vettori, funzioni di variabile reale calcolate su matrici si intendono applicate elemento per elemento,
La matrice diagonale con diagonale il vettore y
La trasposta di una matrice
Il determinante
Riempimento di una matrice con numeri casuali
La matrice inversa
Il prodotto Q*solve(Q)
non restituisce la matrice identica, perché, come per i vettori, l’operatore *
è inteso come prodotto elemento per elemento. Il prodotto tra matrici è implementato con il simbolo %*%
,
Selezione di un elemento,
Selezione di una riga,
Selezione di una colonna,
Selezione di range di righe e colonne,
La concatenazione tra matrici restituisce vettori,
Così come la concatenazione di una singola matrice (notare l’ordine degli elementi nel vettore),
Somma di matrici,
Consideriamo il prodotto righe per colonne (ovvero l’operatore %*%
Ricordiamo che per moltiplicare due matrici, il numero di colone della prima deve essere uguale al numero di righe della seconda. Il codice seguente darà errore,
Invece questo funziona,
Un vettore, in termini di prodotti tra matrici, è considerato come una matrice con una sola colonna,
Il comando eigen
restituisce un output più complesso rispetto a quanto visto fino a ora,
Le componenti della struttura possono essere estratte con l’operatore $
,
Si possono valutare i soli autovalori,
I vettori sono l’unità base,
Certi oggetti possono essere ``rievocati’’ come elementi di altre classi, almeno se possibile,
Una classe che sarà utile nel seguito è il data frame, a prima vista non molto differente da una matrice,
Righe e colonne hanno etichette,
Le etichette si possono cambiare,
row.names(P)<-c("Riga 1","Riga 2","Riga 3","Riga 4","Riga 5")
colnames(P)<-c("Colonna 1","Colonna 2","Colonna 3","Colonna 4")
P
Aggiungere una colonna al data frame P
Aggiungere una riga al data frame P
In dipendenza del sistema operativo i comandi per importare i dati possono essere diversi (soprattutto quando si importa dalla clipboard). L’effetto di alcuni di questi comandi potrebbe non essere quello atteso, e ciò potrebbe dipendere dai fattori più disparati, come la versione del Software, o l’estensione del file da cui state copiando la tabella.
Caricare dati dalla clipboard (windows)
Nel caso di uso di comandi quali ad esempio read.csv
, il software R
si aspetta di trovare i file indicati nella cosiddetta working directory. Il software R
ha due comandi per conoscere o assegnare la working directory. Questi comandi sono:
getwd()
setwd(
\(\langle\)percorso completo della cartella\(\rangle\))
dir()
Tabella csv senza etichette di riga o colonna.
Tabella csv con etichette di colonna ma non di riga
Tabella csv con etichette di colonna e di riga. Se la prima riga (con i nomi delle colonne) contiene un elemento in meno, la prima colonna è usata per i nomi di riga.
A <- read.csv("03prova.csv",header=F)
fix(A)
A <- read.csv("03prova.csv")
fix(A)
A <- read.csv("03prova.csv",row.names=1)
fix(A)
Nel caso il file csv sia in formato locale italiano (ovvero il separatore per il decimale è la virgola, e il separatore di campi è il punto e virgola).
La scelta della working directory dipende dalla piattaforma (Windows, Mac, Linux) e dal programma (RStudio, RGui, etc.) usati.
Ad esempio un utente MAC potrebbe settare il suo Desktop come working directory con il comando
setwd("/Users/
\(\langle\)nome utente\(\rangle\)/Desktop")
Il \(\langle\)nome utente\(\rangle\) dipende dalla propria installazione, e il comando getwd()
può essere utile a conoscere il proprio.
Dunque un utente che conserva tutti i suoi file R per il corso nella cartella Stat2
(ad esempio) potrebbe digitare all’inizio di ogni sessione il comando
per un utente MAC la cui cartella Stat2
è sul Desktop:
setwd("/Users/
\(\langle\)nome utente\(\rangle\)/Desktop/Stat2")
per un utente Windows la cui cartella Stat2
è una sotto-cartella della cartella Documenti
:
setwd("C:/Users/
\(\langle\)nome utente\(\rangle\)/Documenti/Stat2")
per un utente Linux la cui cartella Stat2
è nella sua home:
setwd("/home/
\(\langle\)nome utente\(\rangle\)/Stat2")
Nel caso si utilizzi il programma Rgui, la soluzione più semplice è di assegnare la working directory direttamente da programma:
Analogamente, nel caso si utilizzi invece il programma Rstudio,
Iniziamo con il comando di base per disegnare grafici di interesse per la rappresentazione di dati statistici, ed alcune delle opzioni di base per rendere più significativa la rappresentazione dei dati.
Un vettore viene disegnato prendendo come dati per le ascisse gli indici degli elementi.
Una coppia di vettori viene rappresentata utilizzando il primo vettore per le ascisse e il secondo vettore per le ordinate.
Il comando seguente dà lo stesso risultato del precedente. Nel caso la matrice abbia più di due colonne, vengono utilizzate solo le prime due colonne.
Il tipo di rappresentazione dei dati può essere modificata con l’opzione type
, che prende i valori p
, l
, b
, c
, o
, h
, s
, S
, n
(p
è il default). Il caso type="n"
non disegna nulla.
Si può variare anche il tipo di linea, con l’opzione lty
, che varia da 0 a 7.
L’opzione pch
varia il tipo di rappresentazione del punto-dato.
L’opzione pch
può anche prendere come valore alcuni caratteri.
L’opzione lwd
varia lo spessore della linea
L’opzione col
varia il colore
I colori di base sono i seguenti
C’è a disposizione un set di colori più ampio, dato dal vettore colours()
, di cui diamo un campione con i comandi seguenti.
L’opzione asp
varia il rapporto tra le unità di misura dei due assi.
Se disegnamo una matrice (ma solo come classe data.frame
) che abbia più di 2 colonne, otteniamo una matrice di rappresentazioni grafiche delle colonne accoppiate a due a due.
Ad esempio, possiamo riottenere uno dei riquadri selezionando le opportune colonne.
La densità della distribuzione normale standard.
La funzione di ripartizione della distribuzione normale standard.
La funzione dei quantili della distribuzione normale standard.
Funzione di ripartizione e funzione dei quantili sono l’una inversa dell’altra.
Comando per generare 10000 numeri campionati da una distribuzione normale standard.
Visualizziamoli come punti a coordinate casuali.
Lo stesso, ma con distribuzione uniforme.
Lo stesso, ma con la distribuzione esponenziale.
Lo stesso, ma con la distribuzione binomiale. In questo caso la rappresentazione è più opportuna con un istogramma.
Alcuni dei principali indicatori statistici.
Possiamo disegnare la funzione di ripartizione empirica di una serie di dati.
Vogliamo ora sovrapporre alla funzione di ripartizione campionaria la corrispondente funzione di ripartizione teorica. Usiamo quindi il comando di secondo livello lines
.
La corrispondenza è sempre più precisa all’aumentare della numerosità del campione. In realtà è più efficace confrontare le densità (lo vedremo in seguito).
Passiamo a studiare il comando di primo livello per disegnare istogrammi.
La seconda opzione permette di variare il numero di classi. Tale opzione può essere impostata in maniera articolata (si suggerisce di digitare ?hist
per ulteriori dettagli)
Con l’opzione freq=FALSE
passiamo dalle frequenze assolute alle frequenze relative.
Possiamo aggiungere la densità empirica.
Sapendo che il campione è estratto da una normale standard, disegnamo la corrispondente densità.
Risulta però più sensato disegnare la normale che ha la media e la deviazione standard del campione in esame.
La corrispondenza è più precisa all’aumentare del campione
Generare un vettore che contiene i numeri da 1 a 10, e unirlo alla sua versione ribaltata (ovvero con valori decrescenti), per ottenere un vettore di 20 elementi. Valutarne la media.
Generare un vettore che contiene 20 valori casuali. Rimpiazzare i 10 valori centrali con i loro corrispondenti quadrati.
Generare una matrice \(5\times 5\) che contiene elementi casuali, e calcolarne il determinante. Ripetere la prova per 10 volte, e calcolare il valore medio e la deviazione standard dei valori ottenuti.
Generare una matrice \(A\) di dimensioni \(4\times 6\) ed un vettore \(b\) di lunghezza 4. Ottenere una nuova matrice \(4\times 7\) le cui prime 6 colonne sono le colonne di \(A\) e la settima contiene i valori di \(b\).
Generare una matrice \(A\) di dimensioni \(4\times 6\) ed un vettore \(b\) di lunghezza 6. Ottenere una nuova matrice \(5\times 6\) le cui prime 4 righe sono le righe di \(A\) e la quinta contiene i valori di \(b\).
Scaricare il file 01prova.csv
ed importarlo in una tabella \(B\). Calcolare media e varianza di ogni colonna. Dire a che classe appartiene \(B\). Ripetere l’esercizio con il file 04prova.csv
.
Cercare sul manuale di R
(ad esempio digitando il comando ?plot
sulla console di R
, oppure on line all’indirizzo https://cran.r-project.org/manuals.html) il significato delle diverse possibilità per l’opzione type
del comando plot
, e per ognuna di esse generare un grafico, usando eventualmente dati opportuni.
Generare un unico grafico che contenga dati rappresentati con diversi tipi di linea.
Generare dati casuali con distribuzione di Poisson (il comando è rpois
) e con distribuzione geometrica (rgeom
) e rappresentarli attraverso opportuni istogrammi.
Generare dati casuali campionati da distribuzioni uniforme, esponenziale, geometrica e di Poisson, rappresentare su un grafico le corrispondenti funzioni di ripartizione teorica ed empirica, ai fini del confronto.
Ripetere quanto richiesto nell’esercizio precedente, confrontando però le frequenze empiriche e le densità teoriche.
Rappresentare su un unico grafico due vettori riempiti con numeri casuali. Le rappresentazioni dei due vettori devono distinguersi per tipo di linea, colore e tipo di punto. Aggiungere poi al grafico,
title
;legend
.