آموزش کامل انواع دستورات توزیعهای آماری در متلب
در ادامه مجموعه مقالات آموزش نرم افزار متلب در این مقاله به آموزش ایجاد توزیع های آماری در متلب خواهیم پرداخت و سعی خواهیم کرد تمام دستورات مهم برای کار با انواع توزیعهای آماری را در قالب دستورات کلی که برای همه توزیعها استفاده میشود، بیان نماییم.
پس با ما باشید تا با انواع مهم دستورات توزیع های آماری در متلب آشنا شوید.
به شما توصیه میکنیم که مقاله « آموزش توزیع نرمال در متلب » را نیز مطالعه نمایید.
متلب برای ایجاد توزیع آماری
در شروع این مقاله برای کار با توزیع های آماری در متلب اگر بخواهیم یک توزیع آماری با پارامترهای دلخواه را ایجاد نماییم و همچنین بتوانیم از آن برای ترسیم تابع چگالی احتمال و تابع تجمعی احتمال استفاده نماییم، از دستور makedist استفاده مینماییم.
نحوه استفاده از دستور makedist به این صورت است که در ورودی اول نوع توزیع با توجه به اسم آن و بعد از آن در ورودی دوم نام پارامتر توزیع و در ورودی بعد مقدار مشخص میشود. در ادامه این روند برای توزیعهایی که چندین پارامتر دارد تکرار میشود به این صورت که در ورودی چهارم پارامتر بعدی و در ورودی پنجم مقدار این پارامتر مشخص میشود. دقت نمایید که اگر فقط ورودی اول (نوع توزیع) را به دستور بدهیم؛ پارامترها مقادیر پیشفرض تعریف شده در متلب را خواهند داشت.
انواع توزیعهایی که در متلب تعریف شدهاند، در جدول زیر مشخص شدهاند:
همانطور که مشاهده مینمایید انواع توزیعهای در متلب قابل تعریف است از جمله توزیع نرمال ، توزیع لوگ نرمال، توزیع رایلی ، توزیع ویبول ، توزیع گاما و …
اگر بخواهیم بدانیم که پارامترهای هر توزیع چه میباشند و چه نامی دارند باید به راهنمای نرمافزار متلب و یا سایت اصلی متلب مراجعه نماییم و با توجه به جدول بالا بر روی قسمت سمت راست جدول که با رنگ آبی برای هر توزیع نوشته شده است کلیک نموده و پارامترهای مرتبط با هر توزیع را مشاهده نماییم.
در ادامه با یک مثال از چندین توزیع نحوه استفاده از این دستور را روشن خواهیم کرد:
1 2 3 4 5 |
pd1 = makedist('Normal','mu',5,'sigma',3) ; pd2 = makedist('Exponential','mu',10) ; pd3 = makedist('Rayleigh','b',2) ; pd4 = makedist('Weibull','a',2,'b',0.1) ; pd5 = makedist('Lognormal','mu',10,'sigma',4) ; |
همانطور که در تصویر بالا مشاهده میکنید هر کدام از این توزیعها یک نوع داده مشخص با اسم این توزیع میباشند و سوال اصلی این است که چطور میتوانیم از این نوع داده استفاده نماییم و بتوانیم این توزیع را ترسیم نماییم؟ چون تا به اینجا کار خاصی را انجام ندادهایم و فقط توزیعها را تعریف کردهایم.
در بخش بعد با استفاده از دستور pdf قادر خواهیم بود توزیعها را برای برآمدهای مختلف مقدار دهی نماییم و بعد با دستورات رسم نمودار آنها را ترسیم نماییم.
توزیع های آماری در متلب – تابع چگالی احتمال با دستور pdf در متلب
همانطور که میدانید تابع چگالی احتمال در حالت کلی تابعی است که مقدار متناظر با یک برآمد را براساس تعریف تابع توزیع بیان میکند. لازم به توجه است که تابع pdf برای متغیرهای تصادفی پیوسته میباشد و همانطور که میدانید در توابع پیوسته احتمال یک نقطه برابر صفر میباشد و بنابراین این مقدار متناظر برابر احتمال نیست.
برای استفاده از تابع چگالی احتمال از دستور pdf در متلب استفاده میشود که یک دستور کلی برای استفاده از انواع توزیعها در متلب میباشد.
نحوه استفاده از این دستور به این صورت است که ابتدا در ورودی اول مشخصات توزیع داده میشود که این همان خروجی دستور makedist میباشد. به عنوان مثال در توزیع نرمال با استفاده از دستور makedist یک توزیع نرمال با دو خروجی میانگین و انحراف معیار تولید میشود. در ادامه کار با دستور pdf پس از دادن ورودی اول که گفته شد، در ورودی دوم مقدارهای برآمدهای موردنظر را به دستور خواهیم داد.
در ادامه با استفاده از این دستور مقادیر متناظر را تولید میکنیم و سپس با استفاده از دستور plot نمودارهای متناظر با توزیع را ترسیم میکنیم. این کار برای دو توزیع نرمال و Exponential برای مقادیر مختلف پارامترها با هم مقایسه شدهاند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
% Normal Distribution pd1 = makedist('Normal','mu',5,'sigma',3) ; pd11 = makedist('Normal','mu',5,'sigma',4) ; pd111 = makedist('Normal','mu',5,'sigma',5) ; pd1111 = makedist('Normal','mu',5,'sigma',6) ; x1 = -10 : 0.01 : 20 ; y1 = pdf(pd1,x1) ; y11 = pdf(pd11,x1) ; y111 = pdf(pd111,x1) ; y1111 = pdf(pd1111,x1) ; figure(1) plot(x1,y1,x1,y11,x1,y111,x1,y1111,'LineWidth',2) xlabel('x','Interpreter','latex','FontSize',30) ylabel('y','Interpreter','latex','FontSize',30) title('Normal distribution for mu = 5 with different Standard deviation'... ,'FontSize',20) legend({'sigma = 3','sigma = 4',... 'sigma = 5','sigma = 6'},'FontSize',15) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
% Exponential Distirbution pd2 = makedist('Exponential','mu',1) ; pd22 = makedist('Exponential','mu',1.5) ; pd222 = makedist('Exponential','mu',2) ; pd2222 = makedist('Exponential','mu',4) ; pd22222 = makedist('Exponential','mu',7) ; x2 = 0 : 0.01 : 10 ; y2 = pdf(pd2,x2) ; y22 = pdf(pd22,x2) ; y222 = pdf(pd222,x2) ; y2222 = pdf(pd2222,x2) ; y22222 = pdf(pd22222,x2) ; figure(2) plot(x2,y2,x2,y22,x2,y222,x2,y2222,x2,y22222,'LineWidth',2) legend({'mu = 1','mu = 1.5',... 'mu = 2','mu = 4','mu = 7'},'FontSize',15) ; xlabel('x','Interpreter','latex','FontSize',30) ; ylabel('y','Interpreter','latex','FontSize',30) ; title('PDF for Exponential distribution with different means'... ,'FontSize',20) ; |
تابع توزیع تجمعی احتمال در متلب با دستور cdf در متلب
در ادامه بحث توزیع های آماری در متلب همانطور که میدانید اگر بخواهیم در یک توزیع آماری احتمال کمتر یا مساوی بودن از یک مقدار را بدانیم، باید از تابع تجمعی احتمال(cdf) که در واقع همان انتگرال سطح تا نقطه موردنظر از pdf میباشد را محاسبه نماییم. برای این منظور از دستور cdf در متلب استفاده میشود. دستور cdf در متلب نیز یک دستور کلی برای محاسبات انواع توزیع ها میباشد و با آن میتوانیم احتمال کمتر یا مساوی بودن را بدست آوریم.
نحوه استفاده از این دستور کاملا مشابه با دستور pdf میباشد و در ورودی اول همان مشخصات توزیع با توجه به دستور makedist که در اول مقاله گفته شد داده میشود و در ادامه اعدادی که میخواهیم این احتمال را برای آنها محاسبه نماییم، داده میشود.
با ارائه مثالی برای توزیع رایلی و ویبول توابع تجمعی احتمال را در حالتهای مختلف مشابه دستور pdf ترسیم خواهیم نمود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
% Rayleigh Distribution pd3 = makedist('Rayleigh','b',1) ; pd33 = makedist('Rayleigh','b',2); pd333 = makedist('Rayleigh','b',3); pd3333 = makedist('Rayleigh','b',4); pd33333 = makedist('Rayleigh','b',5); x3 = 0 : 0.01 : 10 ; y3 = cdf(pd3,x3) ; y33 = cdf(pd33,x3) ; y333 = cdf(pd333,x3) ; y3333 = cdf(pd3333,x3) ; y33333 = cdf(pd33333,x3) ; figure(3) ; plot(x3,y3,x3,y33,x3,y333,x3,y3333,x3,y33333,'LineWidth',2) legend({'b = 1','b = 2',... 'b = 3','b = 4','b = 5'},'FontSize',15) ; xlabel('x','Interpreter','latex','FontSize',30) ; ylabel('y','Interpreter','latex','FontSize',30) ; title('CDF for Rayleigh distribution with different Scale Parameters'... ,'FontSize',20) ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
% Weibull Distribution pd4 = makedist('Weibull','a',2,'b',0.5) ; pd44 = makedist('Weibull','a',2,'b',1) ; pd444 = makedist('Weibull','a',2,'b',2) ; pd4444 = makedist('Weibull','a',2,'b',4) ; pd44444 = makedist('Weibull','a',2,'b',7) ; x4 = 0 : 0.01 : 4 ; y4 = cdf(pd4,x4) ; y44 = cdf(pd44,x4) ; y444 = cdf(pd444,x4) ; y4444 = cdf(pd4444,x4) ; y44444 = cdf(pd44444,x4) ; figure(4) ; plot(x4,y4,x4,y44,x4,y444,x4,y4444,x4,y44444,'LineWidth',2) legend({'b = 0.5','b = 1',... 'b = 2','b = 4','b = 7'},'FontSize',15) ; xlabel('x','Interpreter','latex','FontSize',30) ; ylabel('y','Interpreter','latex','FontSize',30) ; title('CDF for Weibull distribution with a=2 and different Shape Parameters'... ,'FontSize',20) ; |
اگر بخواهیم پارامتر مقیاس (Scale Parameter) توزیع ویبول را متغیر و پارامتر شکل را یکسان فرض نماییم به نمودارهای زیر خواهیم رسید که همانطور که مشخص است شکل یکسانی دارند و مقیاس آنها متفاوت است.
به عنوان تمرین برای توزیعهای نرمال و exp نیز توابع cdf را ترسیم نمایید.
یکی از خدمات اصلی گام98 در زمینه تولید پروژههای آماده متلب میباشد که توسط تیم کارشناسان اختصاصی گام98 کدنویسی شده است و شما میتوانید آنها را از صفحه « پروژه متلب » دانلود نمایید.
توزیع های آماری در متلب : تابع معکوس توزیع تجمعی احتمال- دستور icdf در متلب
در ادامه آموزش توزیع های آماری در متلب همانطور که میدانید برای بدست آوردن احتمال کمتر و مساوی بودن از یک برآمد مشخص از تابع cdf استفاده میکنیم. اما اگر بخواهیم با داشتن این احتمال، برآمد متناظر با آن را پیدا نماییم، از دستور icdf که در واقع سرواژه عبارت Inverse cumulative distribution function میباشد، استفاده میکنیم.
نحوه استفاده از این دستور کاملا مشابه با استفاده از دستورات pdf و cdf میباشد، به این صورت که ابتدا باید یک توزیع با پارامترهای مشخص را با استفاده از دستور makedist تولید نماییم و سپس با استفاده از دستور icdf میتوانیم در ورودی اول این توزیع را بدهیم و در ورودی بعدی احتمالهایی که میخواهیم برآمد آنها را حساب نماییم، به دستور میدهیم.
در ادامه با حل یک مثال از توزیع لوگ نرمال و رسم نمودار cdf آن با استفاده از icdf خواهیم پرداخت:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pd5 = makedist('Lognormal','mu',0,'sigma',0.25) ; pd55 = makedist('Lognormal','mu',0,'sigma',0.5) ; pd555 = makedist('Lognormal','mu',0,'sigma',1) ; pd5555 = makedist('Lognormal','mu',0,'sigma',2) ; pd55555 = makedist('Lognormal','mu',0,'sigma',5) ; y5 = 0 : 0.01 : 5 ; x5 = icdf(pd5,y5) ; x55 = icdf(pd55,y5) ; x555 = icdf(pd555,y5) ; x5555 = icdf(pd5555,y5) ; x55555 = icdf(pd55555,y5) ; figure(5) ; plot(x5,y5,x55,y5,x555,y5,x5555,y5,x55555,y5,'LineWidth',2) axis([0 4 0 1]) ; legend({'sigma = 0.25','sigma = 0.5','sigma = 1',... 'sigma = 2','sigma = 5'},'FontSize',15) xlabel('x','Interpreter','latex','FontSize',30) ; ylabel('y','Interpreter','latex','FontSize',30) ; title('CDF for Lognormal distribution with mu=0 and different Standard Deviation'... ,'FontSize',20) ; |
نکته : دقت نمایید که در این بخش مقدار y که همان احتمال میباشد، برای حالتهای مختلف ثابت است و مقدار برآمدهای توزیع با توجه به تغییر انحراف معیار، متفاوت میباشد.
برازش منحنی با استفاده از توزیع آماری – دستور fitdist در متلب
اما در ادامه کار با توزیع های آماری در متلب در یکی از مهمترین بخشها دستوری را در متلب معرفی میکنیم که با این دستور میتوانیم با استفاده از توزیع های آماری یک منحنی را برای یکسری از داده های تعریف شده برازش دهیم که این بخش در بسیاری موارد کاربردی و لازم میباشد.
برای انجام برازش منحنی با استفاده از توزیع آماری از دستور fitdist استفاده میکنیم. نحوه استفاده از این دستور به این صورت است که در ورودی اول دادهها را میدهیم و در ورودی دوم نوع توزیع را مشخص میکنیم. دقت نمایید که خروجی این دستور پارامترهای تابع توزیع میباشد. به عنوان مثال برای توزیع نرمال خروجی این دستور میانگین و انحراف معیار این توزیع میباشد.
با یک مثال از برازش منحنی توزیع ها در متلب این موضوع را روشن میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
x = 5 + 2*randn(1,10000); h = histogram(x,30,'Normalization','pdf') ; pd = fitdist(x','Normal') ; hold on ; x_values = 0:0.01:12; y = pdf(pd,x_values); plot(x_values,y,'LineWidth',2) legend({'Data histogram','Normal Distribution with fitting'},'FontSize',15) xlabel('x','Interpreter','latex','FontSize',30) ; ylabel('y','Interpreter','latex','FontSize',30) ; title('Curve Fitting with Normal Distribution'... ,'FontSize',20) ; |
نکتهها :
1- برای تولید اعدادی تصادفی با توزیع نرمال از دستور randn استفاده شده که این اعداد با میانگین 5 و انحراف معیار 2 تولید شدهاند.
2- در مثال بالا برای ترسیم هیستوگرام داده ها از دستور histogram استفاده شده که نوع نرمال کردن آن pdf انتخاب شده است که در حقیقت تابع چگالی احتمال داده ها ترسیم شود. برای آشنایی بیشتر با این دستور میتوانید مقاله ترسیم نمودارهای دوبعدی در متلب را مطالعه نمایید.
برازش با استفاده از توزیع آماری – تولباکس Distribution Fitter
در ادامه بحث توزیع های آماری در متلب برای برازش منحنی با استفاده از توزیع ها در متلب اگر بخواهیم بسیار ساده و بدون کدنویسی این کار را انجام دهیم، میتوانیم از ابزار Distribution Fitter استفاده نماییم.
برای استفاده از این تولباکس کافی است عبارت dfittool را در محیط command window متلب اجرا نماییم که در این صورت به محیط زیر خواهیم رسید:
استفاده از این ابزار بسیار ساده است و کافی است از قسمت Data دادههایی که میخواهیم برازش دهیم را انتخاب کنیم و بعد از آن در قسمت New Fit از بخش Distribution توزیع دلخواه خود را انتخاب نماییم و Apply را بزنیم. با کارهای گفته شده میتوانیم برازش منحنی را بصورت زیر داشته باشیم:
البته از قسمتهای دیگر میتوانیم سایر محاسبات را نیز که به آن نیاز داریم بدست آوریم که این مورد را برحسب نیازهای ما متفاوت میباشد و میتوانید برحسب نیاز خود از آن استفاده نمایید.
در پایان امیدوارم این مقاله بتواند اطلاعات مفیدی را برای شما بیان کرده باشد. اگر نظر و یا پیشنهاد و سوالی دارید میتوانید در همین صفحه بیان نمایید. برای مشاهده سایر مقالات کاربردی و جامع آموزش متلب، به صفحه « آموزش متلب » مراجعه کنید.
پایان.
مطالب زیر را حتما مطالعه کنید
کار با بردارها در متلب
آموزش صفر تا 100 تحلیل المان میله به روش اجزا محدود
در ادامه دومین سری از آموزشهای روش المان محدود در این مقاله تحلیل المان میله به روش اجزا محدود را همراه با مثال به طور صفر تا صدی آموزش خواهیم داد.
آموزش جامع و کامل تحلیل المان فنر به روش اجزا محدود
در اولین مجموعه از مقالات آموزشی روش اجزا محدود، آموزش جامع و کامل تحلیل المان فنر به روش المان محدود را همراه با مثال برای شما عزیزان بیان خواهیم کرد.
روش اجزا محدود – Finite Element Method
روش اجزا محدود یک روش عددی برای حل مسائل مهندسی و فیزیکی میباشد. در این مقاله به طورکلی با کاربرد، تاریخچه و مراحل حل این روش آشنا خواهیم شد.
آموزش جامع انواع دستورات توزیع نرمال در متلب
در این مقاله انواع دستورات توزیع نرمال در متلب را به شما آموزش میدهیم.همچنین نحوه کار با توزیع های نرمال تک متغیره و چند متغیره را با جزئیات خواهید آموخت.
آموزش صفر تا 100 کار با فایل اکسل در متلب بصورت کاربردی
در این مقاله به صورت کاملا کاربردی و آسان کار با فایل اکسل در متلب را به شما آموزش خواهیم داد که همه زیردستوارت و تنظیمات با توضیحات کامل شرح داده میشود.
دیدگاهتان را بنویسید