histogramme de fréquences

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

imen benyahya
Messages : 14
Enregistré le : 03 Oct 2022, 12:08

histogramme de fréquences

Messagepar imen benyahya » 05 Oct 2022, 09:34

Bonjour,
j'ai essayé de tracer un histogramme pour une série de données. j'ai commencé par importer ma série de données et déterminer les fréquences et la fréquence cumulative en utilisant le code suivant:

Code : Tout sélectionner

> X=c(15,20,20,20,10,12,12,15,16,18,13,13,11)
> T=table(cut(X, breaks=c(9,12,15,18,21)))
> V=c(T)
> data.frame(Eff=V,EffCum=cumsum(V),Freq=V/sum(V),FreqCum=cumsum(V/sum(V)))

R affiche le tableau suivant:
Eff EffCum Freq FreqCum
(9,12] 4 4 0.3076923 0.3076923
(12,15] 4 8 0.3076923 0.6153846
(15,18] 2 10 0.1538462 0.7692308
(18,21] 3 13 0.2307692 1.0000000
j'ai passé par la suite à tracer l'histogramme en utilisant le code:

Code : Tout sélectionner

hist(X,breaks=c(9,12,15,18,21), freq=FALSE, xlab="",ylab="",main="",xaxt = "n")

l'histogramme a été bien affiché mais au niveau des fréquences il existe 0.00 comme fréquence minimale et 0.08 comme fréquence maximale sachant que les fréquences déjà affiché sur le tableau varie entre 015 et 0.3.
Comment résoudre svp ce problème?
et comment changer les intervalles d'un intervalle semi-ouvert à droite à un intervalle semi-ouvert à gauche?
Merci d'avance

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: histogramme de fréquences

Messagepar Facundo Muñoz » 05 Oct 2022, 10:11

Bonjour Imen,

Ce qui est représenté dans un histogramme est la densité, pas la fréquence rélative. En d'autres termes, la dénsité dépend de la largeur des intervalles, de manière que la surface des barres soient proportionnelles à la fréquence rélative.

Un peu de code peu aider à clarifier peut-être :

Code : Tout sélectionner

X=c(15,20,20,20,10,12,12,15,16,18,13,13,11)
T=table(cut(X, breaks=c(9,12,15,18,21)))
V=c(T)

str(
  hist(X,breaks=c(9,12,15,18,21), freq=FALSE, xlab="",ylab="",main="",xaxt = "n")
)

#> List of 6
#>  $ breaks  : num [1:5] 9 12 15 18 21
#>  $ counts  : int [1:4] 4 4 2 3
#>  $ density : num [1:4] 0.1026 0.1026 0.0513 0.0769
#>  $ mids    : num [1:4] 10.5 13.5 16.5 19.5
#>  $ xname   : chr "X"
#>  $ equidist: logi TRUE
#>  - attr(*, "class")= chr "histogram"

data.frame(
  Eff = V,
  EffCum = cumsum(V),
  Freq = V / sum(V),
  FreqCum = cumsum(V / sum(V)),
  Dens = V / sum(V) / 3
)
#>         Eff EffCum      Freq   FreqCum       Dens
#> (9,12]    4      4 0.3076923 0.3076923 0.10256410
#> (12,15]   4      8 0.3076923 0.6153846 0.10256410
#> (15,18]   2     10 0.1538462 0.7692308 0.05128205
#> (18,21]   3     13 0.2307692 1.0000000 0.07692308



Comme vous le voyez, j'ai calculé une nouvelle colonne "Dens" dans le data.frame qui divise la fréquence par 3 (la largeur des intervalles) et réproduit les mêmes valeurs représentées dans l'histogramme.
ƒacu.-

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: histogramme de fréquences

Messagepar Facundo Muñoz » 05 Oct 2022, 10:15

Pour la question concernant les intervalles semi-ouverts à gauche ou à droite, utilisez l'argument "right" dans les fonctions "cut()" ou "hist()".
ƒacu.-

imen benyahya
Messages : 14
Enregistré le : 03 Oct 2022, 12:08

Re: histogramme de fréquences

Messagepar imen benyahya » 05 Oct 2022, 10:31

Merci infiniment Facundo pour votre aide précieuse. les idées sont bien claires maintenant.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité