Pregunta

Quiero desarrollar una distribución logarítmica normal con rango [0.42,1.19], cuyos elementos se dan como pocos D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42]. La media debe ser 0.84 y la desviación estándar lo más pequeño posible. Además se ha dado es que el 90% de cdf (= 90% de los granos) se encuentra entre 0.59 and 1.19.

Una vez que sé todos los elementos de esta distribución logarítmica normal que incorporan las condiciones dadas puedo encontrar su pdf, que es lo que necesito. Aquí están los pasos sencillos que probé:

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);
¿Fue útil?

Solución

Si usted tiene la caja de herramientas estadísticas y desea dibujar valores aleatorios de la distribución logarítmica normal, sólo tiene que llamar LOGNRND . Si desea conocer la densidad de la distribución logarítmica normal con una determinada media y sigma en un valor determinado, se utiliza LOGNPDF .

Puesto que usted está calculando pesos, es posible que se busca la densidad. Estos serían, en su ejemplo:

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

Editar

Si desea saber qué porcentaje de granos cae en el rango de 0,59 a 1,19; utilice LOGNCDF :

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

Eso no es mucho. Si traza la distribución, se dará cuenta de que la distribución logarítmica normal con sus valores picos un poco por encima del 2

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

Otros consejos

Parece que usted está buscando para generar números aleatorios truncada lognormal. Si mi suposición es correcta, se puede utilizar el href="http://en.wikipedia.org/wiki/Rejection_sampling" rel="nofollow noreferrer"> muestreo rechazo transformada inversa de muestreo para generar las muestras necesarias. Advertencia:. El rechazo de muestreo es muy ineficaz si sus límites son muy lejos de la media

Rechazo de muestreo

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

A continuación, generar, x ~ LogNormal (mu, sigma) y aceptar el sorteo si lb

transformada inversa de muestreo

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

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

Generar, u ~ Uniforme (0,1).

Set, CDF (x) = u y invertido para x.

En otras palabras,

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top