Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
histograme d'un échantillon et courbe de distribution normal
2 participants
Page 1 sur 1
histograme d'un échantillon et courbe de distribution normal
Bonjour,
Je fais appel à vous pour m'aider à régler un petit problème.
En fait j'ai un jeu de données composé d'individus sur lesquels une variable quantitative a été mesurée (concentration d'une hormone) et je voudrais comparer graphiquement la distribution mesurée (sur mon échantillon) de ma variable et la distribution théorique de cette même variable qui suivrait une loi normale de moyenne et écart type identiques à ceux de mon échantillon.
Certains me diront qu'il suffit d'utiliser la fonction qqnorm qui fait exactement ce type d'approche cependant ce que je voudrais, c'est avoir sur le même graphique l'histogramme des fréquences de ma variable dans mon échantillon et la courbe correspondant à la densité de population qui suivrait une loi normale de même moyenne, même écart type et même effectif que mon échantillon.
[img][/img]
Le test de Kolmogorov-Smirnov ainsi que le qqplot semblent valider la distribution normale
[img][/img]
Maintenant je voudrais avoir sur le même graphe l'histogramme précédent et en superposition la courbe de densité de ma variable qui suivrait une loi normale de moyenne = 2.867546 et d'écart type = 1.056236. Ce que je n'arrive pas à générer c'est la courbe de densité "théorique".
A l'image du graphe suivant, j'arrive à avoir l'histogramme et la courbe de densité de l'échantillon superposés :
[img][/img]
ce que je n'arrive pas à faire c'est générer la courbe de la loi normale de même moyenne et écart type que mon échantillon.
quelqu'un pourrait-il m'aider pour cette étape ?
j'ai testé la fonction donnée dans un post sur ce forum mais sans grand succès :
[img][/img]
la courbe semble correcte par contre quand je fais la superposition, c'est là que j'ai un décalage entre l'histogramme et la courbe
[img][/img]
merci d'avance
Je fais appel à vous pour m'aider à régler un petit problème.
En fait j'ai un jeu de données composé d'individus sur lesquels une variable quantitative a été mesurée (concentration d'une hormone) et je voudrais comparer graphiquement la distribution mesurée (sur mon échantillon) de ma variable et la distribution théorique de cette même variable qui suivrait une loi normale de moyenne et écart type identiques à ceux de mon échantillon.
Certains me diront qu'il suffit d'utiliser la fonction qqnorm qui fait exactement ce type d'approche cependant ce que je voudrais, c'est avoir sur le même graphique l'histogramme des fréquences de ma variable dans mon échantillon et la courbe correspondant à la densité de population qui suivrait une loi normale de même moyenne, même écart type et même effectif que mon échantillon.
- Code:
#importation des données
>nationalite=read.table("etude_population_nationalite.txt",header=TRUE,sep="\t",dec=".",row.names=1)
> summary(nationalite)
Nationalite Concentration
Australien: 50 Min. :0.2145
Belge : 29 1st Qu.:2.1880
Francais :233 Median :2.9383
Hollandais: 7 Mean :2.8675
Italien : 50 3rd Qu.:3.5223
Suedois : 23 Max. :6.8241
#moyenne
> moy<-mean(nationalite$Concentration)
> moy
[1] 2.867546
#Ecart type
> ecart<-sqrt(var(nationalite$Concentration))
> ecart
[1] 1.056236
#histogramme
> hist(nationalite$Concentration, xlim = c(0,10),breaks = 10, col = "lightblue")
#la distribution semble s'approcher d'une loi normale
[img][/img]
Le test de Kolmogorov-Smirnov ainsi que le qqplot semblent valider la distribution normale
- Code:
#test de Kolmogorov-Smirnov
> ks.test(nationalite$Concentration, "pnorm",mean = moy, sd = ecart)
One-sample Kolmogorov-Smirnov test
data: nationalite$Concentration
D = 0.0338, p-value = 0.7623
alternative hypothesis: two-sided
Message d'avis :
In ks.test(nationalite$Concentration, "pnorm", mean = moy, sd = ecart) :
aucun ex-aequo ne devrait être présent pour le test de Kolmogorov-Smirnov
#qqplot
> qqnorm(nationalite$Concentration, col="blue")
[img][/img]
Maintenant je voudrais avoir sur le même graphe l'histogramme précédent et en superposition la courbe de densité de ma variable qui suivrait une loi normale de moyenne = 2.867546 et d'écart type = 1.056236. Ce que je n'arrive pas à générer c'est la courbe de densité "théorique".
A l'image du graphe suivant, j'arrive à avoir l'histogramme et la courbe de densité de l'échantillon superposés :
- Code:
> hist(nationaliteb$Concentration, xlim = c(-1,10),breaks = 10, col = "lightblue")
> qqnorm(nationaliteb$Concentration, col="blue")
> hist(nationaliteb$Concentration, xlim = c(-1,10),breaks = 10, col = "lightblue")
> den <- density(nationaliteb$Concentration)
> par(new = TRUE)
> plot(den, xlim = c(-1,10), xlab = "", yaxt = "n", ylab = "", main = "", col = "red")
> abline(v = moy, col = "black", lty ="dotted")
[img][/img]
ce que je n'arrive pas à faire c'est générer la courbe de la loi normale de même moyenne et écart type que mon échantillon.
quelqu'un pourrait-il m'aider pour cette étape ?
j'ai testé la fonction donnée dans un post sur ce forum mais sans grand succès :
- Code:
>curve(dnorm(x, moy ,ecart), from=qnorm(1e-4, moy ,ecart), to=qnorm(1-1e-4, moy ,ecart))
>abline(v = moy, col = "black", lty ="dotted")
>text(moy, 0, 2.86, pos = 1, cex = 0.6)
[img][/img]
la courbe semble correcte par contre quand je fais la superposition, c'est là que j'ai un décalage entre l'histogramme et la courbe
- Code:
> hist(nationaliteb$Concentration, xlim = c(-1,10),breaks = 10, col = "lightblue")
> par(new = TRUE)
> curve(dnorm(x, moy ,ecart), from=qnorm(1e-4, moy ,ecart), to=qnorm(1-1e-4, moy ,ecart), xlab = "", yaxt = "n", ylab = "", main = "", col = "red")
> abline(v = moy, col = "black", lty ="dotted")
> text(moy, 0, 2.86, pos = 1, cex = 0.6)
[img][/img]
merci d'avance
Dernière édition par bloup le Ven 29 Mar 2013 - 15:35, édité 1 fois
bloup- Nombre de messages : 41
Date d'inscription : 13/03/2012
Re: histograme d'un échantillon et courbe de distribution normal
Bonjour,
- Code:
hist(nationaliteb$Concentration, xlim = c(-1,10),breaks = 10, col = "lightblue")
qqnorm(nationaliteb$Concentration, col="blue")
hist(nationaliteb$Concentration, xlim = c(-1,10),breaks = 10, col = "lightblue", prob=T)
den <- density(nationaliteb$Concentration)
lines(den, col = "red")
abline(v = moy, col = "black", lty ="dotted")
curve(dnorm(x, moy, ecart), add=T, col="blue")
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: histograme d'un échantillon et courbe de distribution normal
@ droopy : désolé, j'ai édité mon message pendant votre réponse et rajouté des informations supplémentaires
Je viens d'essayer votre script qui résout complètement mon problème.
Par rapport aux commandes que j'ai rajouté et issues d'un autre post de ce forum je vois que les différences sont sur les termes "from", "to" et "add". Est ce que vous pouvez me donner quelques explications ?
Merci.
Je viens d'essayer votre script qui résout complètement mon problème.
Par rapport aux commandes que j'ai rajouté et issues d'un autre post de ce forum je vois que les différences sont sur les termes "from", "to" et "add". Est ce que vous pouvez me donner quelques explications ?
Merci.
bloup- Nombre de messages : 41
Date d'inscription : 13/03/2012
Re: histograme d'un échantillon et courbe de distribution normal
la superposistion ne se fait pas à cause de la ligne par(new=TRUE). Quand tu fais ça tu permets à un graph d'être tracé sur un précédent, mais si tu n'utilises pas de garde fou, il n'y a aucune raison que les limites de ton graph coincides. Tu vois bien que tu as une répétition des valeurs des abscisses qui ne se superposent pas le "2" par exemple de l'histogramme ne correspond pas au "2" de la courbe. Il suffit de voir aussi ou se situe le 2.86 de la moyenne par rapport à ton histogramme.
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: histograme d'un échantillon et courbe de distribution normal
merci pour la précision, je me rends compte d'où viennent mes erreurs maintenant. J'avais bien vu que les échelles ne coïncidaient pas mais étant autodidacte et pour l'instant utilisateur peu averti de R j'ai tendance à faire pas mal pas mal d'erreurs même si j'essaie de décrypter et comprendre les fonctions avec l'aide de R et les forums.
donc maintenant, pour rajouter une courbe sur un graphe, j'utiliserai "lines" ou "curve" et non plus "par"+"plot"
je viens de voir également que l'argument "prob=T" de l'histogramme est fondamental pour pouvoir superposer la courbe de la loi normale.
encore merci
donc maintenant, pour rajouter une courbe sur un graphe, j'utiliserai "lines" ou "curve" et non plus "par"+"plot"
je viens de voir également que l'argument "prob=T" de l'histogramme est fondamental pour pouvoir superposer la courbe de la loi normale.
encore merci
bloup- Nombre de messages : 41
Date d'inscription : 13/03/2012
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Sujets similaires
» Courbe par colonne .
» Esperence et variance d'une loi log normal
» Courbe de Roc.
» Taux d'incidence sous R
» courbe de lift
» Esperence et variance d'une loi log normal
» Courbe de Roc.
» Taux d'incidence sous R
» courbe de lift
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|