نیکویی برازش در R(بخش اول)

نوشته شده توسط مشاور آماری . منتشر شده در R و S+

به عنوان محقق؛ همانند متخصص داده ها(data scientist)؛ ممکن است یک مجموعه داده را دریافت کنید و علاقمند به دانستن توزیع پیدایشی (generative) آن باشید. در ادامه متنی مناسب در مورد نحوه برآورده نمودن این نیاز ارائه می گردد.

جهت چنین اقدامی، یک سری مجموعه داده‌ی دلخواه از توزیع گاما (توزیع اصلی) نمونه‌گیری می‌شود. همچنین به منظور لحاظ نمودن نوفه (noise)ی اندازه گیری،  به داده ها نوفه ی گاوسی اضافه می نماییم.

با این توضیحات کد زیر را ملاحظه فرمایید:

num_of_samples = 1000
x <- rgamma(num_of_samples, shape = 10, scale = 3)
x <- x + rnorm(length(x), mean=0, sd = .1)

براساس این دستورات، موارد ذیل را جهت نظم فکری و هم زبانی با هم مرور می نماییم:

  • تعداد 1000 نمونه تولید شده است که توسط کاربر قابل تغییر میباشد.
  • به ترتیب، از توزیع گاما با پارامترهای شکل و مقیاس، 10 و 3 نمونه گیری صورت گرفته است.
  • توزیع نرمال جهت ایجاد نوفه، دارای میانگین صفر و انحراف استاندارد 0.1 می باشد. که این مقادیر نیز قابل تغییر توسط کاربر میباشد.

در حالت کلی، فرآیند یافتن توزیع مناسب برای یک مجموعه داده را می توان به چهار مرحله زیر تقسیم نمود:

  • تصویر سازی. که می توان به ترسیم بافت نگار مربوط به داده ها اشاره نمود.
  • حدس اینکه چه توزیعی برای این داده‌ها مناسب تر میباشد،
  • استفاده از آزمون آماری برای نیکویی برازش،
  • تکرار ردیف های 2 و3 اگر اندازه ی نیکویی، رضایت بخش نمی باشد.

در نرم افزار R، اقدام اول نسبتاً ساده می باشد و میتوان با استفاده از تابع hist بافت نگار یک بردار داده را ترسیم نمود.

p1 <- hist(x,breaks=50, include.lowest=FALSE, right=FALSE) 

اقدام دوم، کمی به تخصص و تجربه شناخت توزیع های آماری نیاز دارد. در این آموزش، داده ها از طریق شبیه سازی از توزیع گاما بدست آمده است؛ بر این اساس در محاسبات و عملیات بعدی فرض می کنیم که توزیع مورد نظر توزیع گاما با پارامترهای شکل 10 و  مقیاس 3 می باشد. 

اقدام سوم، به انجام آزمون های آماری اشاره دارد تا بتوانیم بررسی نماییم آیا داده ها از توزیع پارامتری مورد نظر تبعیت می کنند. این آزمون ها، به آزمون های نیکویی برازش(Goodness-Of-Fit=GOF) معروف هستند. 3 مورد از پر کاربرد ترین آزمون های GOF به شرح زیر می باشد:

  • آزمون خی دو(Chi Square test)
  • آزمون کلموگروف-اسمیرنوف(Kolmogorov–Smirnov test)
  • ملاک کرامر-فون میزس(Cramér–von Mises criterion)

تمامی آزمون های فوق برای آزمون فرض صفر(null hypothesis) آماری می باشند. در حالت کلی، برای آزمون نیکویی برازش فرض های زیر را داریم:

  • H0: داده ها با توزیع مرجع سازگار هستند.
  • H1: داده ها با توزیع مرجع ناسازگار هستند.

برای هر آزمون فرض صفر، به تعیین آستانه که به "معنی داری آماری" (یا "سطح معنی داری") شناخته می شود؛ نیاز دارید. مقدار سطح معنی داری به حوزه و رشته ی فعالیت ربط دارد. با این حال این مقدار معمولا در بازه ی [0.01,0.1] میباشد. چنانچه نتیجه آزمون آماری، مقداری بیشتر از سطح معنی داری باشد، فرض صفر را رد نمی کنیم. به عبارتی دیگر، اگر سطح معنی داری بالای آستانه باشد؛ نتیجه می گیریم که فروانی های مربوط به نمونه ی مشاهده شده به طور معنی داری مشابه فراوانی های مورد انتظار مطابق با فرض صفر می باشد. توجه شود که در این نوشته منظور از توزیع مرجع؛ توزیعی می باشد که می پذیریم بهترین برازش رو به داده ها دارد.

آزمون خی دو

در R، برای انجام آزمون خی دو، از تابع chisq.test بهره بگیرید. لازم به توضیح می باشد که برای اجرای این آزمون نیاز به یک سری داده و توزیع پیشنهادی می باشد. دو نکته نیاز به توجه ویژه دارد:

  • توزیع پیشنهادی می بایست pmf (چگالی نامنفی و مجموع جرم برابر یک) باشد. اگر مجموعه ای در اختیار دارید که مجموع جرم برابر یک نیست؛ برای نرمال سازی می بایست شناسه p را برار TRUE قرار دهید.
  • آزمون خی دو یک آزمون آماری می باشد ، از این رو نیاز به استفاده از مونت کارلو دارد تا تصدیق نماید که نتایج به ادازه کافی دقیق هستند. برای استفاده از مونت کارلو، مقدار شناسه p.value را برابر TRUE قرار دهید. همچنین می توانید تعداد تکرار را به شناسه B نسبت دهید.

براساس؛ دستورات قبلی و توضیحات فوق، برای آزمون خی دو، می بایست عبارت دستوری زیر را اجرا نماییم:

a <- chisq.test(p1["counts"], p=null.probs, rescale.p=TRUE, simulate.p.value=TRUE)

آزمون فوق برای داده های ما؛ مقدار احتمال 0.2 را نتیجه می دهد که بیشتر از سطح معنی‌داری می‌باشد. از این رو نمی توانیم فرض صفر را رد کنیم. به بیان دیگر، فرض اینکه \(\text{p1['counts']}\) نمونه ای از null.probs می باشد؛ پذیره ای صحیح می باشد. 

تولید null.probs:

آزمون خی دو نیاز به تعیین تابع توزیع تحت فرض صفر می باشد. توجه کنید که اگرچه توزیع اصلی یک توزیع پیوسته ، توزیع گاما است و نمونه از آن تولید شده است؛ با استفاده از تابع hist، این نمونه را به نمونه ی گسسته تبدیل کردیم. به بیانی صحیح تر، با استفاده از بافت نگار، توزیع گاما به 50 قسمت(=بخش/ ستون) تقسیم بندی شد و \(\text{p1['counts']}\) تعداد نمونه در هر بخش متفاوت را نشان می دهد.

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

breaks_cdf <- pgamma(p1["breaks"], shape=10, scale=3)
null.probs<-diff(breaks_cdf)

خط اول CDF را برای هر نقاط بخشی در نمودار بافت نگار محاسبه می کند. برای محاسبه احتمال هر بخش در بازه ی\([x_1,x_2)\) ، نیاز به محاسبه عبارت زیر داریم:

pgamma(x2, shape=10, scale=3) – pgamma(x1, shape=10, scale=3)

که خط دوم به محاسبه این مقدار می پردازد.

شایان ذکر است که با بررسی خروجی؛ مشاهده می شود که تعدادی از طبقات می بایست با هم ادغام گردند. اصلاح دستورها با این نگاه؛ نتایج دقیق تر و مطابق با ادبیات موضوعی موجود را حاصل می نماید.

ان شاا.. به زودی و در بخش دوم این آموزش؛ معیار کرامر-فون میزس و آزمون کلموگروف-اسمیرنوف را ارائه خواهیم نمود.

جهت درخواست آموزش نرم افزارهای آماری و یا انجام پروژه های آماری از یکی از روش های زیر میتوانید با تیم آی آر آمار در ارتباط باشید. لازم به توضیح می باشید فرآیند مشاوره و همچنین پاسخگویی به سوالات کوتاه به صورت کاملا رایگان ارائه می گردد.

 

شماره تماس:   09300023999

رایانامه:  این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

 

 

Tags: نرم افزارهای آماری مقالات رایگان

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

دفاتر ما

تماس با ما آمادگی داریم تا با شبکه ای از همکاران و مشاوران در هر یک از شهرهای بزرگ (تهران-اصفهان-مشهد-زنجان-... )در کنار شما باشیم 

 با ما در تماس باشید

آمار سایت