توزیع‌ های آماری و رسم نمودار تابع احتمال — با کدهای R

۴۷۸۵ بازدید
آخرین به‌روزرسانی: ۰۶ خرداد ۱۴۰۲
زمان مطالعه: ۵ دقیقه
توزیع‌ های آماری و رسم نمودار تابع احتمال — با کدهای R

بسیاری از پدیده‌های تصادفی، دارای قواعدی برای تعیین احتمال رخداد پیشامدها هستند. الگوی رخداد پیشامدهای تصادفی را «توزیع آماری» (Distribution Function) برای آن پدیده‌های تصادفی می‌نامند. به تابعی که احتمال رخداد یک پیشامد تصادفی را تعیین می‌کند، «توزیع احتمال» (Probability Function) یا «تابع چگالی احتمال» (Probability Density Function) گفته می‌شود.

997696

از طرفی بیشتر پدیده‌های تصادفی به کمک «متغیرهای تصادفی» (Random Variables) بهتر توصیف می‌شوند. همچنین بسیاری از متغیرهای تصادفی نیز دارای تابع احتمال یا تابع چگالی احتمال هستند. در این نوشتار به معرفی تابع احتمال برخی از متغیرهای تصادفی می‌پردازیم و نمودار آن‌ها را رسم می‌کنیم.

برای آشنایی بیشتر با تابع احتمال به مطلب آزمایش تصادفی، پیشامد و تابع احتمال مراجعه کنید. همچنین برای آگاهی از تعریف و خصوصیات متغیرهای تصادفی، مطالعه نوشتار متغیر تصادفی، تابع احتمال و تابع توزیع احتمال پیشنهاد می‌شود.

توزیع‌های آماری و نمودار تابع احتمال

بسیاری از توزیع‌های آماری، به بررسی احتمال رخداد پدیده‌های تصادفی می‌‌پردازند که اغلب در زندگی روزمره نیز با آن‌ها مواجه هستیم. بنابراین آگاهی از توزیع‌های آماری این پدیده‌های تصادفی، شناخت ما را نسبت به آن‌ها بیشتر کرده، قادر به درک آن‌ها خواهیم شد.

در ادامه به بررسی برخی از توزیع‌های آماری رایج پرداخته و نمودار تابع احتمال یا چگالی احتمال آن‌ها را به کمک بسته «Stats» در زبان برنامه‌نویسی R محاسبه و رسم می‌کنیم. این بسته در نسخه‌های جدید این زبان به صورت خودکار نصب شده و احتیاجی به راه‌اندازی آن نیست.

برای انجام محاسبات براساس توزیع‌های آماری، چهار نوع تابع در بسته Stats در نظر گرفته شده است. جدول زیر به معرفی عمومی این توابع می‌پردازد.

ردیفتابعمحاسبهرابطه (فرمول)
۱dxxxمحاسبه تابع احتمال یا چگالی احتمال (Density)fX(y),P(X=y)f_X(y), P(X=y)
۲pxxxمحاسبه تابع توزیع احتمال تجمعی (Probability Distribution Function)FX(y)=P(Xy)=pF_X(y)= P(X\leq y)=p
3qxxxمحاسبه چندک‌های توزیع احتمال (Quantiles)F1(p)=yF^{-1}(p)=y
4rxxxتولید عدد تصادفی از توزیع دلخواه

اگر متغیر تصادفی از نوع گسسته باشد، تابع احتمال یا چگالی احتمال، همان مقدار احتمال در نقطه مورد نظر است. در این حالت داریم:

fX(y)=P(X=y)\large f_X(y)=P(X=y)

ولی برای متغیرهای تصادفی پیوسته، تابع احتمال، جرم احتمال در نقطه مورد نظر را نشان می‌دهد زیرا مقدار احتمال در تک نقطه‌ها مانند y برابر با صفر است و فقط می‌توان احتمال را برای یک فاصله عددی محاسبه کرد.

همچنین تابع احتمال تجمعی نیز مقدار احتمال تا یک نقطه را نشان می‌دهد. در حقیقت شیوه محاسبه آن برای متغیرهای تصادفی گسسته به صورت FX(y)=P(Xy)=xyP(X=x)F_X(y)=P(X\leq y)=\sum_{x\leq y}P(X=x) و برای متغیرهای تصادفی پیوسته به صورت FX(y)=P(Xy)=yfX(x)dxF_X(y)=P(X\leq y)=\int_{-\infty}^y f_X(x)dx است.

از طرف دیگر نیز منظور از چندک pام، نقطه‌ یا مقداری از متغیر تصادفی مثل y است که مقدار احتمال تابع تا آن نقطه برابر با p است. به این ترتیب p=FX(y)p=F_X(y). در این حالت اگر F1F^{-1} را معکوس تابع توزیع بنامیم، می‌توان نوشت: F1(p)=yF_{-1}(p)=y

در این نوشتار به معرفی توابع چگالی یا احتمال پرداخته و براساس تولید اعداد تصادفی از هر توزیع، نمودار تابع احتمال یا چگالی آن‌ها را رسم می‌کنیم. ابتدا در مورد محاسبات توابع احتمال متغیرهای تصادفی گسسته بحث خواهیم کرد.

توزیع‌های گسسته

در این بخش از توزیع‌های گسسته «دوجمله‌ای» (Binomial)، «هندسی» (Geometric)، «پواسون» (Poisson)،  «فوق هندسی» (Hyper-Geometric) و «دوجمله‌ای منفی» (Negative binomial) استفاده خواهیم کرد. برای آگاهی از پارامترهای هر یک از توزیع‌های آماری کافی است که به مطالب فرادرس مراجعه یا روی لینک‌ نام توزیع‌ها کلیک کنید.

جدول زیر به معرفی توابع مربوط به این توزیع‌های گسسته در R پرداخته است.

توزیعتابع احتمالتابع توزیع احتمالمحاسبه چندکتولید عدد تصادفینام انگلیسی
دوجمله‌ایdbinompbinomqbinomrbinom‌binomial
هندسیdgeompgeomqgeomrgeomGeometric
پواسونdpoisppoisqpoisrpiosPoisson
فوق هندسیdhyperphyperqhyperrhyperHyperGeometric
دو جمله‌ای منفیdnbinompnbinomqnbinomrnbinomNegative Binomial

برای رسم تابع احتمال این توزیع‌ها از کدهای زیر استفاده کرده‌ایم. با مشاهده این برنامه مشخص می‌شود که ابتدا به کمک تابع rxxx تعداد ۱۰۰۰ عدد تصادفی از توزیع مورد نظر تولید شده، سپس آن‌ها را مرتب می‌کنیم تا روی محور افقی به ترتیب قرار بگیرند. از طرفی با استفاده از تابع احتمال که با تابع dxxx محاسبه می‌شود، برای هر یک از توزیع‌ها محاسبات را انجام داده و در انتها نیز نمودار تابع توزیع برحسب داده‌های تصادفی را با دستور plot ترسیم می‌کنیم. البته باید توجه داشت که تولید اعداد تصادفی و احتمال براساس پارامترهای هر توزیع صورت گرفته است.

1par(mfrow=c(3,2))
2y=rbinom(n = 1000,size = 20,prob = 0.2)
3d=dbinom(sort(y),size = 20,prob = 0.2)
4plot(sort(y),d,type = 'o',col='red',xlab = 'Values',ylab='Probability', main = 'Binomial Distribution')
5
6y=rgeom(n = 1000,prob = 0.2)
7d=dgeom(sort(y),prob = 0.2)
8plot(sort(y),d,type = 'o',col='green',xlab = 'Values',ylab='Probability', main = 'Geometric Distribution')
9
10y=rpois(n = 1000,lambda = 2)
11d=dpois(sort(y),lambda =2)
12plot(sort(y),d,type = 'o',col='lightgreen',xlab = 'Values',ylab='Probability', main = 'Possion Distribution')
13
14y=rhyper(nn = 1000,m = 10,n = 15,k = 5)
15d=dhyper(sort(y),m = 10,n = 15,k = 5)
16plot(sort(y),d,type = 'o',col='orange',xlab = 'Values',ylab='Probability', main = 'HyperGeometric Distribution')
17
18y=rnbinom(n = 1000,size = 10,prob = 0.2)
19d=dnbinom(sort(y),size = 10,prob = 0.2)
20plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Negative BinomialDistribution')

نکته: فرمان par(mfrow=c(3,2))par(mfrow=c(3,2)) باعث می‌شود که صفحه ترسیم نمودارها به سه سطر و دو ستون تقسیم شود.

نتیجه اجرای این برنامه به صورت زیر است.

discrete
<a href="https://blog.faradars.org/wp-content/uploads/2018/11/discrete.png">برای مشاهده تصویر در ابعاد اصلی کلیک کنید.</a>

توزیع‌های پیوسته

در این بخش از توزیع‌های پیوسته «توزیع نرمال» (Normal Distribution)، «توزیع تی» (Student's Distribution)، «توزیع یکنواخت» (Uniform Distribution)، «توزیع نمایی» (Exponential Distribution)، «توزیع کای ۲» (Chi Squared)، «توزیع بتا» (Beta Distribution)، «توزیع گاما» (Gamma Distribution)، «توزیع فیشر» (F Distribution) و «توزیع کوشی» (Cauchy Distribution) استفاده خواهیم کرد.

جدول زیر به معرفی توابع مربوط به این توزیع‌های پیوسته در R پرداخته است.

توزیعتابع احتمالتابع توزیع احتمالمحاسبه چندکتولید عدد تصادفینام انگلیسی
توزیع نرمالdnormpnormqnormrnormNormal
توزیع تیdtptqtrtStudent's t
توزیع یکنواختdunifpunifqunifrunifUniform (Continuous)
توزیع نماییdexppexpqexprexpExponential
توزیع کای ۲dchiqpchiqqchiqrchisqChi-Squared
توزیع بتاdbetapbetaqbetarbetaBeta
توزیع گاماdgammapgamaaqgammargammaGamma
توزیع فیشرdfpfqfrfF
توزیع کوشیdcauchypcauchyqcauchyrcauchyCauchy

به منظور رسم نمودار تابع چگالی احتمال این توزیع‌ها نیز درست به مانند روش‌ قبلی عمل می‌کنیم. کدهای زیر برای ترسیم تابع چگالی احتمال این توزیع‌ها نوشته شده است.

1par(mfrow=c(3,3))
2y=rnorm(n = 1000,mean = 0,sd = 2)
3d=drnom(sort(y),mean= 0,sd= 2)
4plot(sort(y),d,type = 'o',col='red',xlab = 'Values',ylab='Probability', main = 'Normal Distribution')
5
6y=rt(n = 1000,df = 2)
7d=dt(sort(y),df = 2)
8plot(sort(y),d,type = 'o',col='green',xlab = 'Values',ylab='Probability', main = 'Student\'s t Distribution')
9
10y=runif(n = 1000,min = 0,max = 1)
11d=dunif(sort(y),min = 0,max = 1)
12plot(sort(y),d,type = 'o',col='lightgreen',xlab = 'Values',ylab='Probability', main = 'Uniform Distribution')
13
14y=rexp(nn = 1000,rate = 1)
15d=dexp(sort(y),rate = 1)
16plot(sort(y),d,type = 'o',col='orange',xlab = 'Values',ylab='Probability', main = 'Exponential Distribution')
17
18y=rchisq(n = 1000,df = 10)
19d=dchisq(sort(y),df = 10)
20plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Chi-Squared Distribution')
21
22y=rbeta(n = 1000,shape1 = 1,shape2 = 5)
23d=dbeta(sort(y),shape1 = 1,shape2 = 5)
24plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Beta Distribution')
25
26y=rgamma(n = 1000,shape = 1,scale = 5)
27d=dgamma(sort(y),shape = 1,scale = 5)
28plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Gamma Distribution')
29
30y=rf(n = 1000,df1 = 1,df2 = 10)
31d=df(sort(y),df1= 1,df2 = 10)
32plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Fisher Distribution')
33
34
35y=rcauchy(n = 1000,location = 0,scale = 5)
36d=dcauchy(sort(y),location = 0,scale = 5)
37plot(sort(y),d,type = 'o',col='blue',xlab = 'Values',ylab='Probability', main = 'Cauchy Distribution')

تصویر زیر خروجی این برنامه را نشان می‌دهد. در اینجا صفحه نمایش به سه سطر و سه ستون برای نمایش نمودارها تقسیم شده است.

continuous density plot
<a href="https://blog.faradars.org/wp-content/uploads/2018/11/cont.png">برای مشاهده تصویر در ابعاد اصلی کلیک کنید.</a>

اگر می‌خواهید از پارامترها مربوط به هر یک از توزیع‌های گفته شده اطلاع پیدا کنید، بهتر است از دستور str کمک بگیرید. به این ترتیب برای مثال اگر می‌خواهید پارامترهای تابع احتمال گاما (gamma) را بشناسید، بهتر است کد دستوری str(dgamma)str(dgamma) را وارد کنید. خروجی، پارامترهای این دستور خواهند بود که در شکل زیر قابل مشاهده است.

str function

خروجی این تابع پارامترهای dgamma را نشان می‌دهد. پارامتر اول (x) مقداری است که باید چگالی در آن نقطه محاسبه شود، shape پارامتر شکل، rate پارامتر نرخ توزیع گاما و همچنین scale نیز پارامتر مقیاس است که می‌تواند به صورت عکس پارامتر rate معرفی شود. در انتها نیز پارامتر log که یک پارامتر با مقدارهای منطقی است، نشان می‌دهد آیا لازم است لگاریتم مقدار تابع چگالی احتمال محاسبه شود یا خیر. البته این دستور را می‌توانید برای هر تابعی در R بکار ببرید.

کد مربوط به نمایش این نمودارها را می‌توانید با کلیک روی این لینک دریافت کنید.

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۲۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *