سؤال

أريد أن وضع lognormal التوزيع مع مجموعة [0.42,1.19] الذين عدة عناصر هي كالتالي D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42].يعني يجب أن يكون 0.84 و الانحراف المعياري صغيرة قدر الإمكان.أيضا بالنظر إلى أن 90% من قوات الدفاع المدني (=90 ٪ من الحبوب) تقع بين 0.59 and 1.19.

عندما أعرف كل عناصر هذا lognormal التوزيع التي تتضمن ظروف معينة لا يمكن أن تجد pdf, وهو ما يتطلب.وإليك خطوات بسيطة حاولت:

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);
هل كانت مفيدة؟

المحلول

إذا كان لديك إحصاءات الأدوات تريد رسم عشوائي القيم من lognormal توزيع يمكنك ببساطة الاتصال LOGNRND.إذا كنت تريد أن تعرف كثافة lognormal توزيع معين يعني سيجما في قيمة محددة ، يمكنك استخدام LOGNPDF.

بما أنك حساب الأوزان ، قد تكون تبحث عن الكثافة.هذه ستكون في المثال الخاص بك:

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

تحرير

إذا كنت تريد أن تعرف ما هي النسبة المئوية من الحبوب يقع في نطاق 0.59 إلى 1.19 استخدام LOGNCDF:

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

هذا ليس الكثير.إذا كنت مؤامرة توزيع ستلاحظ أن lognormal التوزيع مع القيم الخاصة بك قمم قليلا فوق 2

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

نصائح أخرى

يبدو أنك تتطلع إلى توليد أرقام عشوائية lognormal المقطوعة. إذا كان افتراضي صحيحًا ، يمكنك إما استخدام أخذ عينات الرفض أو عكس أخذ أخذ العينات لتوليد العينات اللازمة. التحذير: أخذ عينات الرفض غير فعالة للغاية إذا كانت حدودك بعيدة جدًا عن الوسط.

أخذ عينات الرفض

إذا كان x ~ lognormal (mu ، sigma) i (lb <x <ub)

ثم قم بإنشاء ، x ~ lognormal (mu ، sigma) وقبول السحب إذا lb <x <ub.

عكس أخذ أخذ العينات

إذا كان x ~ lognormal (mu ، sigma) i (lb <x <ub) ثم

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

توليد ، u ~ موحدة (0،1).

SET ، CDF (x) = u و anvert for x.

بعبارات أخرى،

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top