منبع اصلی نوشتار زیر در این لینک قرار دارد

چگونه در R آنالیز واریانس (آنووا) یک‌طرفه انجام دهیم

گاهی اوقات پیش می‌اید که بخواهیم میانگین چند جامعه یا گروه را با هم مقایسه کنیم، مثلا فرض کنید شرکتی با سه پیمانکار A ، B و C قرارداد دارد و می‌خواهد بداند که آیا میانگین یکی از مشخصات محصولات این سه پیمانکار با هم تفاوتی دارند یا نه. برای این کار روشی آماری به نام آنالیز واریانس یا به اخنصار Anova وجود دارد. در این پست قرار است ببینیم که چطور می‌شود از آنالیز واریانس یک‌طرفه(یا یک‌راهه) استفاده کرد.مثال زیر که از کتاب مبانی احتمالات و آمار مهندسی دکتر ایوزیان گرفته شده را می‌خواهیم با استفاده آز R حل کنیم:

یک تولید کننده‌ی کاغذ می‌خواهد اثر استفاده از مواد اولیه A B C D را بر روی مقاومت کششی محصولاتش بررسی نماید، بدین منظور نمونه‌هایی ۶ تایی را با استفاده از هر یک از مواد اولیه مورد بررسی قرار می‌دهد که بعد از اندازه‌گیری نتیجه زیر حاصل می‌شود:

نتایج مشاهده‌ها ماده اولیه
۱۸ ۱۶ ۱۷ ۱۹ ۱۸ ۱۴ A
۱۰ ۹ ۱۱ ۱۵ ۸ ۷ B
۲۰ ۱۸ ۲۳ ۲۲ ۲۵ ۱۹ C
۱۵ ۱۹ ۱۸ ۱۳ ۱۷ ۱۲ D

برای انجام آنالیز واریانس داده‌های این مساله، اول باید آنها را وارد R کنیم:

data <- as.data.frame(cbind(c(14,18,19,17,16,18,7,8,15,11,9,10,19,25,22,23,18,20,12,17,13,18,19,15)))
 data <- cbind( data , rep(c("A","B","C","D") , each= 6 ))
 colnames(data) <- c("numbers" , "material")

در واقع در یک ستون مشاهدات مساله را به ترتیب نوشتیم و در ستون بعدی این که مربوط به کدام زیرگروه (همان تیمار در کتاب‌های آماری ) هستند را وارد کردیم، بهترین راه برای آماده‌سازی داده‌ها برای آنالیز واریانس یک‌طرفه در R به همین صورت است:

برای بدست آوردن درکی بهتر از شرایط داده‌های مساله‌، می‌توان نمودار جعبه‌ای هر ماده‌ی اولیه را رسم نمود:

library(ggplot2)
 ggplot(data, aes(x=material , y = numbers ))  + geom_boxplot()

در نمودار بالا تقریبا مشخص است که میانگین این چهار گروه با هم برابر نیستند. انجام تحلیل واریانس در R بسیار آسان است، فقط حواستان باشد که حتما نتیجه‌ی آن را در یک متغیر ذخیره کنید و سپس با دستور summary آن را فراخوانی کنید:

results <- aov( numbers ~ material , data=data )
 summary(results)
            Df Sum Sq Mean Sq F value   Pr(>F)    
material     3  382.8  127.60   19.61 3.59e-06 ***
Residuals   20  130.2    6.51                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

در نهایت R اطلاعات زیر را نمایش داده است:

دو راه برای تحلیل این نتیجه وجود دارد، راه اول توجه به مقدار P-value است که در اینجا برابر ۳٫۵۹e-06 شده است که بسیار نزدیک به صفر است، بنابراین می‌توان گفت در سطح معنی‌داری(همان آلفا) ۰.۰۵ فرض صفر که در آنالیز واریانس یک‌طرفه برابری میانگین گروه‌ها است رد می‌شود. راه دوم استفاده از آماره آزمون است که از توزیع فیشر پیروی می‌کند. اگر این آماره از F_{a,k-1,k(n-1)} بیشتر باشد، فرض صفر رد می‌شود. برای محاسبه‌ی F_{a,k-1,k(n-1)} می‌توانید از دستور زیر استفاده کنید (جای a از یک منهای a استفاده کنید ) :

qf(0.95,3,20)
[1] 3.098391

همانطور که می‌بینید میزان F_{a,k-1,k(n-1)} در این مساله برابر ۳.۱ شد در حالی که آماره‌ی آزمون برابر ۱۹.۶ شده است، بنابراین فرض برابری میانگین‌ها رد می‌شود.

نکته‌ی پایانی: دستور اجرای آنالیز واریانس یک طرفه در R در حالت کلی به صورت زیر است:

 



برچسب ها :