J'ai trouvé une solution à ce problème. Cela peut être fait en utilisant la fonction dtruncnorm du paquet truncnorm comme suggéré précédemment par juan. Je vais démontrer cela en utilisant l'exemple dans la question d'une distribution normale avec la moyenne 5, l'écart type de 1 et les limites de 1 et 10.
D'abord, vous devez créer un vecteur du nombre de points à tracer à partir de la distribution , qui sera également espacé. Ainsi, par exemple, si vous vouliez tracer dix points de la distribution à distance égale, votre vecteur (« VEC ») serait:
vec=seq(from=1,by=1,length.out = 10)
ce qui précède faire en sorte que nous traçons 10 points à partir de 1, incrémente de 1 , jusqu'à la valeur 10.
Nous avons ensuite mis ces derniers dans la fonction dtruncnorm() et enregistrez-le dans la variable « test », puis tracer le: Comme vous le voyez
test=dtruncnorm(vec,a=1,b=10,mean=5,sd=1)
plot(test)
, cette courbe de la densité à des points discrets. Vous pouvez facilement essayer de faire le tracé continu en augmentant le nombre de points:
vec=seq(from=1,by=0.1,length.out = 100)
test=dtruncnorm(vec,a=1,b=10,mean=5,sd=1)
plot(test)
S'il vous plaît commentaire si vous avez des questions
Parlez-vous du paquet 'truncnorm'? La fonction 'dtruncnorm' donne la densité – juan
Hi @juan. Oui, je parle du paquet truncnorm. J'ai essayé la fonction dtruncnorm mais elle ne semble pas donner la densité. Par exemple si j'entre le code: 'vec = seq (de = 0, par = 0.01, longueur.out = 100) test = dtruncnorm (vec, a = 0, b = 1, moyenne = 0.1, sd = 0.1) plot (test) 'alors j'obtiens un tracé qui a la forme exacte d'une distribution normale tronquée, et les valeurs x sont précises. Cependant, l'axe des y va de 0 à 5. Cela signifie qu'il ne montre pas les densités (elles devraient toutes être inférieures à 1) – user5211911
Si la plage de l'axe des ordonnées dépasse 1, cela ne signifie pas ** Ce n'est pas une densité. C'est l'intégrale sur l'espace (ou R, la ligne réelle) qui doit être égale à 1. –