In questo articolo, imparerete ad usare la funzione hist() per creare istogrammi nella programmazione R con l’aiuto di numerosi esempi.
L’istogramma può essere creato usando la funzione hist()
nel linguaggio di programmazione R. Questa funzione prende un vettore di valori per i quali viene tracciato l’istogramma.
Utilizziamo il dataset incorporato airquality
che ha misure giornaliere della qualità dell’aria a New York, da maggio a settembre 1973.
> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
Utilizzeremo il parametro temperatura che ha 154 osservazioni in gradi Fahrenheit.
Esempio 1: Istogramma semplice
Temperature <- airquality$Temphist(Temperature)
Possiamo vedere sopra che ci sono 9 celle con interruzioni equamente distanziate. In questo caso, l’altezza di una cella è uguale al numero di osservazioni che cadono in quella cella.
Possiamo passare parametri aggiuntivi per controllare l’aspetto del nostro grafico. Potete leggere su di essi nella sezione Aiuto ?hist
.
Alcuni di quelli usati frequentemente sono, main
per dare il titolo, xlab
e ylab
per fornire etichette per gli assi, xlim
e ylim
per fornire la gamma degli assi, col
per definire il colore ecc.
Inoltre, con l’argomento freq=FALSE
possiamo ottenere la distribuzione di probabilità invece della frequenza.
Esempio 2: Istogramma con aggiunta di parametri
# histogram with added parametershist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="darkmagenta",freq=FALSE)
Nota che l’asse y è chiamato densità invece che frequenza. In questo caso, l’area totale dell’istogramma è uguale a 1.
Valore restituito di hist()
La funzione hist()
restituisce una lista con 6 componenti.
> h <- hist(Temperature)> h$breaks 55 60 65 70 75 80 85 90 95 100$counts 8 10 15 19 33 34 20 12 2$density 0.010457516 0.013071895 0.019607843 0.024836601 0.043137255 0.044444444 0.026143791 0.015686275 0.002614379$mids 57.5 62.5 67.5 72.5 77.5 82.5 87.5 92.5 97.5$xname "Temperature"$equidist TRUEattr(,"class") "histogram"
Vediamo che viene restituito un oggetto di classe histogram
che ha:
-
breaks
-luoghi in cui si verificano le interruzioni, -
counts
il numero di osservazioni che rientrano in quella cella, -
density
-la densità delle celle,mids
i punti medi delle celle, -
xname
il nome dell’argomento x e -
equidist
un valore logico che indica se le interruzioni sono equamente spaziate o meno.
Possiamo usare questi valori per ulteriori elaborazioni.
Per esempio, nell’esempio seguente usiamo i valori di ritorno per mettere i conteggi in cima ad ogni cella usando la funzione text()
.
Esempio 3: Usare i valori di ritorno dell’istogramma per le etichette usando text()
h <- hist(Temperature,ylim=c(0,40))text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
Definire il numero di interruzioni
Con l’argomento breaks
possiamo specificare il numero di celle che vogliamo nell’istogramma. Tuttavia, questo numero è solo un suggerimento.
R calcola il miglior numero di celle, tenendo presente questo suggerimento. Di seguito sono riportati due istogrammi sugli stessi dati con diverso numero di celle.
Esempio 4: Istogramma con diverse pause
hist(Temperature, breaks=4, main="With breaks=4")hist(Temperature, breaks=20, main="With breaks=20")
Nella figura precedente vediamo che il numero effettivo di celle tracciate è maggiore di quello specificato. Questo rende possibile tracciare un istogramma con intervalli disuguali. In tal caso, l’area della cella è proporzionale al numero di osservazioni che rientrano in quella cella.
Esempio 5: Istogramma con larghezza non uniforme
hist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="chocolate",border="brown",breaks=c(55,60,70,75,80,100))