Question

Je veux développer une distribution log-normale avec la gamme [0.42,1.19], dont quelques éléments sont donnés à titre D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42]. La moyenne devrait être 0.84 et l'écart type aussi faible que possible. Aussi donnée est que les 90% de CDI (= 90% des grains) est comprise entre 0.59 and 1.19.

Une fois que je connais tous les éléments de cette distribution lognormale qui incorporent les conditions données que je peux trouver le pdf, ce qui est ce que je demande. Voici les étapes simples que j'essayées:

D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42];

s=0.30; % std dev of the lognormal distribution

m=0.84; % mean of the lognormal distribution

mu=log(m^2/sqrt(s^2+m^2)); % mean of the associated normal dist.

sigma=sqrt(log((s^2/m^2)+1)); % std dev of the associated normal dist.

[r,c]=size(D);

for i=1:c

D_normal(i)=mu+(sigma.*randn(1));

w(i)=(D_normal(i)-mu)/sigma; % the probability or the wt. percentage

end

sizes=exp(D_normal);
Était-ce utile?

La solution

Si vous avez la boîte à outils de statistiques et que vous voulez dessiner des valeurs aléatoires de la distribution log-normale, vous pouvez simplement appeler LOGNRND . Si vous voulez connaître la densité de la distribution log-normale avec une moyenne et sigma donnée à une valeur spécifique, vous utilisez LOGNPDF .

Puisque vous calcul des poids, vous pouvez rechercher la densité. Ceux-ci seraient, dans votre exemple:

weights = lognpdf([1.19,1.00,0.84,0.71,0.59,0.50,0.42],0.84,0.3)

weights =
     0.095039     0.026385     0.005212   0.00079218   6.9197e-05   5.6697e-06   2.9244e-07

EDIT

Si vous voulez savoir quel est le pourcentage de grains tombe dans la gamme de 0,59 à 1,19, vous utilisez LOGNCDF :

100*diff(logncdf([0.59,1.19],0.84,0.3))
ans =
       1.3202

Ce n'est pas beaucoup. Si vous tracer la distribution, vous remarquerez que la distribution lognormale avec vos valeurs pics un peu au-dessus 2

x = 0:0.01:10;
figure
plot(x,lognpdf(x,0.84,0.3))

Autres conseils

Il semble que vous cherchez à générer des nombres aléatoires tronquée lognormales. Si mon hypothèse est correcte, vous pouvez utiliser le échantillonnage de rejet ou transformée inverse échantillonnage pour générer les échantillons nécessaires. Avertissement:. Échantillonnage Le rejet est très inefficace si vos limites sont très loin de la moyenne

Rejet d'échantillonnage

Si x ~ lognormales (mu, sigma) I (lb

Ensuite, générer, x ~ lognormales (mu, sigma) et accepter le tirage au sort si lb

Transformation inverse échantillonnage

Si x ~ lognormales (mu, sigma) I (lb

CDF (x) = phi ((log (x) - mu) / sigma) / (phi ((log (ub) - mu) / sigma) - phi ((log (lb) - mu) / sigma) )

Générer, u ~ uniforme (0,1).

Set, CDF (x) = u et inverti pour x.

En d'autres termes,

x = exp (mu + sigma * phi_inverse (u * (phi ((log (ub) - mu) / sigma) - phi ((log (lb) - mu) / sigma))))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top