web-dev-qa-db-fra.com

Utilisez la fonction hist () dans R pour obtenir des pourcentages par opposition aux fréquences brutes

Comment peut-on tracer les pourcentages par opposition aux fréquences brutes en utilisant la fonction hist () dans R?

26
newdev14

La simple utilisation de l'argument freq=FALSE Ne donne pas d'histogramme avec des pourcentages, il normalise l'histogramme de sorte que la surface totale est égale à 1.
Pour obtenir un histogramme des pourcentages de certains ensembles de données, disons x, procédez comme suit:

h = hist(x) # or hist(x,plot=FALSE) to avoid the plot of the histogram
h$density = h$counts/sum(h$counts)*100
plot(h,freq=FALSE)

Fondamentalement, ce que vous faites est de créer un objet histogramme, de changer la propriété de densité en pourcentages, puis de tracer à nouveau.

84
Brian

Si vous souhaitez répertorier explicitement chaque valeur unique de x sur l'axe des x (c'est-à-dire pour tracer les pourcentages d'une variable entière telle que le nombre), la commande suivante est une alternative plus pratique:

# Make up some data
set.seed(1)
x <- rgeom(100, 0.2)

# One barplot command to get histogram of x
barplot(height = table(factor(x, levels=min(x):max(x)))/length(x),
        ylab = "proportion",
        xlab = "values",
        main = "histogram of x (proportions)")

enter image description here

# Comparison to hist() function
h = hist(x, breaks=(min(x)-1):(max(x))+0.5)
h$density = h$counts/sum(h$counts)*100
plot(h,freq=FALSE, main = "histogram of x (proportions)")

enter image description here

5
majom