Come si può fae?
(manualetto minimo e senza grosse pretese per pRincipianti, che mi sarebbe stato comodo esistesse quando io ero principiante)


1) Cos'è questo R? Mi piacerebbe provare a vedere come funziona ...

2) Fantastico, lo voglio! Come si fa ad averlo e quanto costa?

3) Ma se il software è gratis, ci sono i manuali in italiano?

4) Benissimo: adesso che ho R, vorrei provare a fare qualche esercizietto...

5) Vorrei fare dei calcoli o dei grafici particolari con R, ma i dati ce li ho in Excel. Come si importa in R un foglio di dati?

6) Vedo che tutti creano dei dataset con R . Come si fa?

7) Come faccio a manipolare un dataset in R?

8) Ma posso usare R per fare i calcoli come con una calcolatrice?

9) Ma c'è una lista di comandi di R?
Tux il pinguino del software open source



Mi piacerebbe provare a vedere come funziona R ...

Facilissimo. Esiste un server PHP dell'Università di Palermo, oppure potete collegarvi al sito web del Dipartimento di Matematica dell'Università del Montana:

Troverete un riquadro, dove poter digitare i comandi, ed un pulsante Submit per inviare il codice:

Pochi secondi ed otterrete la risposta. Fate queste prove:

1 + 1   (e premete Submit )

1 + 2 * 3   (e premete Submit )

ics  <-  (1:10)             (e premete Invio per andare a caporiga)
ipsilon  <-  ics^2          (e premete Invio per andare a caporiga)
ipsilon                     (ora premete Submit )

eta  <-  c(1, 2, 2, 3, 4, 5, 9)           (e premete Invio per andare a caporiga)
beta  <-  eta/2                           (e premete Invio per andare a caporiga)
boxplot(eta,beta)                         (ora premete Submit )


ritorna all'inizio della pagina


Come si fa ad avere (legalmente) R e quanto costa?

R appartiene a quel beneamato mondo di prodotti che vanno sotto il nome di Free Software, oppure Open Source. Sono gratuiti e scaricabili legalmente dalla rete. Per avere una versione aggiornata del pacchetto, basta collegarsi al sito web http://www.R-project.org, scaricarsi la versione preferita, ed installarla.

Tutto qui.

ritorna all'inizio della pagina

... e i manuali, in italiano, ci sono?

Certo che sì! Per esempio, il dottor Roberto Burro offre gratuitamente il suo manuale, mentre iI professori Iacus e Masarotto sono già giunti alla seconda edizione del loro prezioso Laboratorio di statistica con R:



ritorna all'inizio della pagina

... vorrei provare a fare qualche esercizietto...

Queste linee di istruzione sono già "pronte per l'uso". Quello che si può fare semplicemente è ricopiarle (funziona anche con il copia e incolla) e riflettere sul loro significato.

primo esercizietto.

a <- c(1, 2, 3, 4, 5, 6)
b <- a + 1
a
b

secondo esercizietto (da eseguire sequenzialmente dopo il primo esercizietto).

plot(a,b)

terzo esercizietto (da eseguire sequenzialmente dopo il secondo esercizietto).

c <- a^2
plot(a,c)
# riflettere che la c( del primo esercizio è un comando, qui la c è un vettore

quarto esercizietto (da eseguire sequenzialmente dopo il terzo esercizietto).

d <- matrix(a,3,2)
d

quinto esercizietto (per chi ha poca memoria a breve termine, e per chi è già stufo di questo quattro esercizietti).

ls()

rm( list = ls() )


ls()



sesto esercizietto (per algebristi o per periti elettrotecnici).

i <- complex(0,1)
i

settimo esercizietto (per chimici).

log(10)
exp(1)
log(exp(10))

ottimo esercizietto (per chi al M.I.U.R. decide i compiti di "maturità scientifica" - volendo, qui si apre un dibattito sull'uso delle tecnologie nella didattica della matematica).

parabola <- function(x) x^2 - 5*x + 6
body(parabola)
parabola(2)
dominio <- -5:10
n <- length(dominio)
immagine <- parabola(dominio)
matrix(c(dominio,immagine),n,2)
plot(dominio, immagine)

nono esercizietto (per informatici di vecchia data)

f <- numeric(30)
f[1] <- 1
f[2] <- 1
for (i in 3:30) { f[i] <-
f[i-1] + f[i-2] }
f  #che sta per Fibonacci

decimo esercizietto (per filosofi)

1/0
0/0

undicesimo esercizietto (per Pitagora, Ludolph, Ramanujan, Plouffe, Borwein & Borwein)

pi

dodicesimo esercizietto (per Romeo)

giulietta <- c("sì", "sì", "sì", "sì", "sì", "sì", "sì", "sì", "no!")
table(giulietta)
table(giulietta)[1]
pie(table(giulietta))

tredicesimo esercizietto (per i superstiziosi)



quattordicesimo esercizietto (per chi si fa prendere facilmente dal panico)

help()

ritorna all'inizio della pagina

Come si importa in R un foglio di dati (Open Office Calc, MS Excel)?

Innanzitutto, assicuratevi che il foglio dati sia "ben fatto", i valori numerici non si confondano con i caratteri alfabetici (ad esempio, i caratteri sono allineati a sinistra, i numeri a destra; state attenti se qua o là in qualche cella non sia stato inserito l'apostrofo iniziale, che i nomi siano "tutti attaccati", cioè senza spazi bianchi, oppure non vi siano "campi calcolati", nel senso che alcune colonne di dati non siano risultati di formule o funzioni).



Salvate il foglio in questione sul Desktop in formato Testo (delimitato da tabulazione), ad esempio con il nome pippo:


Siccome potrebbe capitare che alcuni vostri dati siano decimali, ricordatevi che MS Excel usa la virgola, mentre R usa il punto decimale. Quindi, aprite pippo.txt con il BloccoNote - Notepad, e con il comando Modifica ... Sostituisci... Sostituisci Tutto cambiate tutte le virgole con i punti. Salvate e chiudete.


Per fare le cose semplici semplici, tagliate via pippo.txt dal Desktop e incollatelo direttamente nella directory root del vostro disco rigido C: , usando Risorse del computer:


Date ora il comando

> pluto <- read.table("C:\\pippo.txt", header = TRUE)

per importare il database. Se per caso la prima colonna fosse stata occupata dai codici fiscali (aka "chiave primaria") e quindi quei dati non sarebbero stati oggetto di statistica, allora avreste potuto segnalarlo in partenza:

> pluto <- read.table("C:\\pippo.txt", header = TRUE, row.names = 1)

Per manipolare direttamente le colonne di dati, vi conviene ora dare il comando:

> attach(pluto)

In questo modo il nome di ogni campo del database è diventato un vettore locale di R. In parole povere, se pluto è composto dalle colonne num, genere etaresidenza, comune, se non aveste dato il comando attach avreste dovuto lavorare con la variabile pluto$eta, mentre ora potete scrivere semplicemente eta.
ritorna all'inizio della pagina

Come si fa  a creare un dataset in R?

Per creare un dataset come questo:

  id periodo misura
1  a      14    3.6
2  b      23    2.8
3  c      18    4.1
4  d       4    3.2
5  e       7    3.1
6  f      22    2.9
7  g      18    3.7
8  h      21    2.6

si può ad esempio usare questi comandi:

contatore <- letters[1:8]
giorni <- c(14,23,18,4,7,22,18,21)
indice <- c(3.6, 2.8, 4.1, 3.2, 3.1, 2.9, 3.7, 2.6)

"bancadati" <- structure(.Data = list(contatore , giorni, indice),
names = c("id", "periodo", "misura"),
row.names = c(1:8),
class = "data.frame")
bancadati



ritorna all'inizio della pagina

Come si fa a manipolare un dataset in R?

Ipotizziamo dunque che, seguendo uno dei metodi precedenti, avete inserito un dataset di nome giangi:

> attach(giangi)
> names(giangi)
[1] "nome"      "genere"    "eta"       "punteggio"
> giangi
        nome genere eta punteggio
1    alberto      m  28       6.2
2  aldamaria      f  46       2.3
3 alessandra      f  26       3.8
4    alessia      f  23       6.8
5     andrea      m  37       4.8
6   annalisa      f  24       8.2
7   annarosa      f  46       7.8
8  antonella      f  54       7.1
9    ariella      f  37       7.4

Se volete levare la colonna dei nomi fate così:

> giangino <- giangi[,2:4]
> names(giangino)
[1] "genere"    "eta"       "punteggio"

Per analizzare solo la prima colonna:

> giangino[1]
  genere
1      m
2      f
3      f
4      f
5      m
6      f
7      f
8      f
9      f

Per conoscere quanti sono i maschi e quante le femmine del dataset:

> table(giangino[1])
f m
7 2

per conoscere le eta dei due maschi

> eta[giangino[1]=="m"]
[1] 28 37

Per farsi un'idea della distribuzione dei dati:

> summary(giangino)
 genere      eta          punteggio   
 f:7    Min.   :23.00   Min.   :2.300 
 m:2    1st Qu.:26.00   1st Qu.:4.800 
        Median :37.00   Median :6.800 
        Mean   :35.67   Mean   :6.044 
        3rd Qu.:46.00   3rd Qu.:7.400 
        Max.   :54.00   Max.   :8.200

Se vi siete accorti che il punteggio di andrea sarebbe dovuto essere 4.7 invece che 4.8 lo correggete così:

> which(nome=="andrea")
[1] 5
> punteggio[5] <- 4.7

Per conoscere la deviazione standard delle età disaggregate secondo il genere:

> tapply(eta,genere,sd)
        f         m
12.488090  6.363961

infatti:

> sd(eta[genere=="f"])
[1] 12.48809
> sd(eta[genere=="m"])
[1] 6.363961


ritorna all'inizio della pagina

 Ma posso usare R come fosse una calcolatrice?

Ma certo che sì! Ci sono le quattro operazioni +, -, * e /. C'è l'elevamento a potenza ^. E poi ci sono le consuete funzioni trigonometriche, logaritmiche ed esponenziali. Ma la cosa bella è che si può anche fare algebra matriciale, con il prodotto righe per colonne %*% :

> A <- matrix( c(3,1,4,2), nrow = 2)
> E <- diag(1,2)
> A
     [,1] [,2]
[1,]    3    4
[2,]    1    2
> E
     [,1] [,2]
[1,]    1    0
[2,]    0    1
> A %*% E
     [,1] [,2]
[1,]    3    4
[2,]    1    2

Per trovare gli autovalori e gli autovettori associati:

> eigen(A)
$values
[1] 4.5615528 0.4384472

$vectors
          [,1]       [,2]
[1,] 0.9315321 -0.8421229
[2,] 0.3636591  0.5392856

E possiamo anche risolvere i sistemi lineari di equazioni Ax = b:

> b <- matrix ( c(12,8), nrow = 2)
> solve(A,b)
     [,1]
[1,]   -4
[2,]    6

ritorna all'inizio della pagina

La lista dei comandi di R presenti in questa pagina