برای آشنایی با توزیع نرمال پیشنهاد میکنم مدخل ویکیپدیای آن را بخوانید و یا به یکی از کتابهای آمار و احتمال( احتمال شلدون راس، آمار فروند، آمار مهندسی مونتگومری یا هر کتابی که پیدا کردید) مراجعه کنید. اما به طور خلاصه:
- توزیع نرمال یک توزیع پیوسته است(یعنی گسسته نیست و میتواند هر مقداری به خود بگیرد)
- بسیاری از پدیدههای طبیعی از آن پیروی میکنند.
- شکل آن همانند زنگوله (اصطلاحا Bell shape) و حول میانگین خود متقارن است.
- با تقریب خوبی مهمترین توزیع آماری است.
(منبع عکس + )
خوب حالا چرا توزیع نرمال مهم است؟
گفتیم که توزیع نرمال، پیوسته، حول میانگین خود متقارن و زنگوله مانند است، به همین دلیل بسیاری ار دادههایی که از پدیدههای طبیعی به دست میآیند تقریبا(این تقریبا کمی تا قسمتی مهم است) از توزیع نرمال پیروی میکنند. برای مثال قد یک جامعه را در نظر بگیرید، در یک جامعه معمولا تعداد کمی از افراد قد بسیار بلند و یا بسیار کوتاه دارند، و اکثریت جامعه قدی متوسط و نزدیک به میانگین دارند و نمودار فراوانی دادهها در آن شبیه شکل بالا خواهد بود. (اگر به دادهای همانند قد یک افراد جامعه، وزن یا IQ دسترسی دارید میتوانید این موضوع را بررسی کنید.)، به همین دلیل میتوان با استفاده از توزیع نرمال و خواص آن این پدیدهها را مورد تحلیل آماری قرار داد.
دلیل دوم اهمیت توزیع نرمال قضیه حد مرکزی یا CLT است. خلاصه این قضیه این است که تحت شرایط خاص، میانگین (یا جمع) چند متغیر تصادفی که هر کدام واریانس و میانگین تعریف شده و محدود دارند، به طور تقریبی از توزیع نرمال پیروی میکند. این قضیه که باعث میشود بسیاری از محاسبات آماری تا حدی سادهتر شود، پایهی بسیاری از محاسبات و روابط مربوط به نمونهگیری و کنترل کیفیت آماری است .(میتوانید این آدرسها را برای اطلاعات بیشتر دربارهی اهمیت این توزیع بخوانید. + +)
حالا برویم سر این که چطور نرمال بودن دادهها را مشخص کنیم. دمدستیابزار برای این کار همین نمودار Histogram است. هیستوگرام یک توزیع نرمال به طور کلی به شکل زیر است. (البته منحنی نرمال بر روی شکل زیر فیت شده است. هیستوگرام فقط همان ستونهای نمودار زیر است.)
البته نمودار نرمال همیشه به پهنی شکل بالا نیست و ممکن است به شکلهای زیر نیز باشد:
ابزار کارآمد بعدی نمودار normal probability plot است که در R با دستور qqnorm میتوانید آن را رسم کنید. به طور خلاصه اگر اکثر نقاط روی این نمودار بر روی خط راست (در صورتی که تعداد دادهها زیاد است و اکثریت آنها روی خط قرار دارند میتوانید دادههای پرت را درنظر نگیرید) قرار گرفتند میتوان نتیجه گرفت که دادهها تقریبا از توزیع نرمال پیروی میکنند. مثال آن را میتوانید در شکل زیر مشاهده کنید:
راه دیگر بررسی نرمال بودن داده، استفاده از آزمونهای فرض مانند آزمونهای نکویی برازش(Goodness of fit) و نرمالیتی تستها است. اما باید دقت داشته باشید که این آزمونهای فرض صرفا فرض صفر پیروی داده از توزیع نرمال را علیه فرض جایگزین نرمال نبودن بررسی میکنند و در تصمیمگیری این موضوع که آیا باید از روندهای آماری مبنی بر توزیع نرمال استفاده نمود یا نه ارزش خاصی ندارند. در حالت کلی اگر تعداد دادهها به اندازه کافی زیاد باشد (بیشتر از ۳۰ یا ۴۰ مشاهده)، تخطی از فرض نرمال بودن مشکل آنچنانی در محاسبات ایجاد نمیکند و در صورتی که داده متشکل از صدها مشاهده است توزیع داده آنقدرها مهم نیست.(به دلیل قضیه حد مرکزی). اکثر آزمونهای نرمال بودن، در صورتی که تعداد مشاهدات دادههای شما زیاد باشد حساسیت زیادی خواهند داشت و کوچکترین انحرافی(به عنوان مثال مقدار بسیار کمی چولگی یا skewness) در هیستوگرام دادههای شما، احتمال رد فرض صفر نرمال بودن را به شدت بالا میبرد و از طرف دیگر هنگامی که تعداد مشاهدات کم است(زیر ۳۰ یا ۴۰ مشاهده) یک داده با هیستوگرام کاملا نامتقارن هم ممکن است تست نرمال بودن را با موفقیت پشت سر بگذارد. برای همین قبل از استفاده از هر کدام از آزمونهای آماری نرمال بودن، حتما دربارهی خود آزمون فرض و نحوهی استفاده از آن مطالعه کنید. (این پاراگراف خلاصهای از مطالب این صفحات است: ++++ توصیه میکنم برای کسب اطلاعات بیشتر حتما آنها را بخوانید.)
آزمون کولوموگروف-اسمیرنف
این آزمون که به اختصار K-S test نامیده میشود از معروفترین آزمونهای نکویی برازش برای توزیع نرمال است(برای بقیه توزیعها هم قابل استفاده است، این آزمون بررسی میکند که آیا داده شما از یک مجموعه فرضی آمده یا نه). به طور کلی به خاطر مشکلاتی که در پاراگراف قبل بیان شد، استفاده از این آزمون خیلی توصیه نمیشود. این آزمون با دستور زیر در R استفاده میشود:
ks.test()
مثال:
با استفاده از دستور زیر ۵۰ دادهی تصادفی در برداری به نام x تولید میشود. دستور set.seed در واقع باعث میشود که نتیجه این دستور روی لپتاپ من و سیستم شما دقیقا یکسان باشد.
> set.seed(12345) > x <- runif(50,2,4)
دستوز زیر آزمون کولموگروف اسمیرنف را بر روی دادههای ذخیره شده در بردار زیر انجام میدهد:
ks.test(x,"pnorm",mean(x),sd(x))
pnorm در واقع دستور فرمول تابع توزیع تجمعی نرمال در R است، میتوان از توابع توزیعهای دیگر برای بررسی این که آیا داده از آن توزیع پیروی میکند یا نه استفاده نمود (مثلا pbinm برای توزیع دوجملهای)، دقت کنید که باید حتما میانگین و انحراف معیار داده خود را در دستور ks.test مشخص کنید، در غیر این صورت این تست پیروی داده از توزیع نرمال استاندارد را بررسی میکند. اجرای دستور نتیجه زیر را نشان میدهد:
> ks.test(x,"pnorm",mean(x),sd(x)) One-sample Kolmogorov-Smirnov test data: x D = 0.09667, p-value = 0.702 alternative hypothesis: two-sided
این آزمون دوطرفه است و فرض صفر آن این است که دو نمونه موجود در آزمون(که در اینجا یکی داده x و دیگری توزیع نرمال است) از یک توزیع پیروی میکنند. با توجه به p-value بیش از ۰.۰۵ فرض صفر قویا رد نمیشود.
آزمون شپیرو-ویلک
این آزمون بر خلاف KS.test فقط برای بررسی نرمال بودن کاربرد دارد. فرض صفر این آزمون پیروی داده از توزیع نرمال است. با استفاده از دستور زیر در R میتوانید از این آزمون استفاده کنید:
shapiro.test()
اگر p-value بیشتر از ۰.۰۵ شد نشان دهندهی نرمال بودن داده است(باز هم تاکید میکنم که لینکهای دو پاراگراف قبل را بخوانید.)
آزمون اندرسن-دارلینگ
این آزمون در base زبان R موجود نیست و برای استفاده از آن باید یکی از پکیجهای adTest ، nortest یا ADgofTest را نصب کنید، این آزمون هم مانند دو آزمون قبلی هنگامی که P-value بیشتر از ۰.۰۵ (با آلفا یا سطح اطمینان) باشد نرمال بودن داده را نشان میدهد. اندرسن-دارلینگ هم همانند K-s قابلیت استفاده برای توزیعهایی غیر از توزیع نرمال را دارد.
آزمونهای دیگری هم برای بررسی نرمال بودن داده موجود است اما در اکثر مواقع فکر میکنم همین سه آزمون کافی باشد. به دلیل ماهیت آماری این پست و اهمیت آن، اگر در جایی از این پست از نظر آماری اشتباهی رخ داده حتما در کامنتی آن را بیان کنید تا اصلاح شود.