1 votes

Distribution normale pour une plage donnée de nombres en Matlab

Ma question concerne l'estimation d'une distribution normale pour une rangée de points d'un intervalle qui sont extraits des données, en connaissant simplement le maximum (xmax = 200) et le minimum (xmin = 100), pour les distribuer de manière aléatoire en utilisant une moyenne et un écart-type associé que nous allons estimer.

Y a-t-il une méthode en Matlab, ou dans la littérature pour le faire, de telle sorte que lorsque vous dessinez la loi associée, nous ne dépassons pas les valeurs de xmin et xmax ?

J'ai utilisé cette astuce :

x = xmin + rand(1, n) * (xmax-xmin);

mais je ne sais pas comment extraire les paramètres de la distribution normale (la moyenne, l'écart-type).

0voto

Sagar Mody Points 91

Tout d'abord, vous voudrez utiliser randn pour une distribution normale - rand tirera d'une distribution uniforme.

Appeler randn(1, n) retournera n échantillons normalement distribués de la distribution standard avec une moyenne de zéro et une variance (écart type au carré) de un. Pour changer la moyenne de cette distribution à un x arbitraire et l'écart type à y, il suffit de faire x + y*randn(1, n).

Si vous vous attendez à ce que la moyenne soit, disons, 150 et l'écart type soit de 25, vous accompliriez ceci de la manière suivante:

>> stddev = 25;
>> xmin = 100;
>> xmax = 200;
>> xmean = 150;
>> n = 10000;
>> out = xmin + ( (xmean-xmin) + stddev * randn(1, n) );

Et vous pouvez vérifier que mean(out) et std(out) sont approximativement de 150 et 25, respectivement. Cependant - pour un grand n et un stddev suffisamment grand, vous êtes pratiquement assuré d'obtenir des échantillons inférieurs à xmin et certains supérieurs à xmax. Vous pouvez les ramener à vos limites en quelques lignes seulement:

>> out( out> out( out>xmax ) = xmax;

ou simplement supprimer ces entrées entièrement (donc la longueur de out sera inférieure à n):

>> out( outxmax ) = [];

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X