आर में एकतरफ़ा एनोवा कैसे निष्पादित करें
एक-तरफ़ा एनोवा का उपयोग यह निर्धारित करने के लिए किया जाता है कि तीन या अधिक स्वतंत्र समूहों के साधनों के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर है या नहीं।
इस प्रकार के परीक्षण को वन-वे एनोवा कहा जाता है क्योंकि हम एक प्रतिक्रिया चर पर एक भविष्यवक्ता चर के प्रभाव का विश्लेषण करते हैं।
ध्यान दें : यदि हम एक प्रतिक्रिया चर पर दो भविष्यवक्ता चर के प्रभाव में रुचि रखते हैं, तो हम दो-तरफ़ा एनोवा प्रदर्शन कर सकते हैं।
आर में एकतरफ़ा एनोवा कैसे निष्पादित करें
निम्नलिखित उदाहरण दिखाता है कि आर में एक-तरफ़ा एनोवा कैसे निष्पादित किया जाए।
पृष्ठभूमि
मान लीजिए हम यह निर्धारित करना चाहते हैं कि क्या तीन अलग-अलग व्यायाम कार्यक्रमों का वजन घटाने पर अलग-अलग प्रभाव पड़ता है। हम जिस भविष्यवक्ता चर का अध्ययन करते हैं वह व्यायाम कार्यक्रम है और प्रतिक्रिया चर वजन घटाना है, जिसे पाउंड में मापा जाता है।
हम यह निर्धारित करने के लिए एक-तरफ़ा एनोवा का प्रदर्शन कर सकते हैं कि क्या तीन कार्यक्रमों के परिणामस्वरूप होने वाले वजन घटाने के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर है।
हम एक प्रयोग में भाग लेने के लिए 90 लोगों को भर्ती करते हैं जिसमें हम यादृच्छिक रूप से 30 लोगों को एक महीने के लिए प्रोग्राम ए, प्रोग्राम बी, या प्रोग्राम सी का पालन करने के लिए नियुक्त करते हैं।
निम्नलिखित कोड वह डेटा फ़्रेम बनाता है जिसके साथ हम काम करेंगे:
#make this example reproducible
set.seed(0)
#create data frame
data <- data.frame(program = rep(c("A", "B", "C"), each = 30),
weight_loss = c(runif(30, 0, 3),
runif(30, 0, 5),
runif(30, 1, 7)))
#view first six rows of data frame
head(data)
# program weight_loss
#1 A 2.6900916
#2 A 0.7965260
#3 A 1.1163717
#4 A 1.7185601
#5 A 2.7246234
#6 A 0.6050458
डेटा फ़्रेम का पहला कॉलम उस कार्यक्रम को दिखाता है जिसमें व्यक्ति ने एक महीने के लिए भाग लिया था और दूसरा कॉलम कार्यक्रम के अंत में व्यक्ति द्वारा अनुभव किए गए कुल वजन घटाने को दिखाता है, जिसे पाउंड में मापा जाता है।
डेटा का अन्वेषण करें
वन-वे एनोवा मॉडल को फिट करने से पहले, हम dplyr पैकेज का उपयोग करके तीन कार्यक्रमों में से प्रत्येक के लिए वजन घटाने का माध्य और मानक विचलन ढूंढकर डेटा को बेहतर ढंग से समझ सकते हैं:
#load dplyr package library (dplyr) #find mean and standard deviation of weight loss for each treatment group data %>% group_by (program) %>% summarize (mean = mean(weight_loss), sd = sd(weight_loss)) # A tibble: 3 x 3 # program mean sd # #1 A 1.58 0.905 #2 B 2.56 1.24 #3 C 4.13 1.57
हम प्रत्येक कार्यक्रम के लिए वजन घटाने के वितरण की कल्पना करने के लिए तीन कार्यक्रमों में से प्रत्येक के लिए एक बॉक्सप्लॉट भी बना सकते हैं:
#create boxplots
boxplot(weight_loss ~ program,
data = data,
main = "Weight Loss Distribution by Program",
xlab = "Program",
ylab = "Weight Loss",
col = "steelblue",
border = "black")
इन बॉक्स प्लॉट्स से, हम देख सकते हैं कि प्रोग्राम सी में प्रतिभागियों के लिए औसत वजन घटाना सबसे अधिक है और प्रोग्राम ए में प्रतिभागियों के लिए औसत वजन घटाना सबसे कम है।
हम यह भी देख सकते हैं कि वजन घटाने के लिए मानक विचलन (बॉक्सप्लॉट की “लंबाई”) अन्य दो कार्यक्रमों की तुलना में प्रोग्राम सी में थोड़ा अधिक है।
इसके बाद, हम यह देखने के लिए अपने डेटा में एक-तरफ़ा एनोवा मॉडल फिट करेंगे कि क्या ये दृश्य अंतर वास्तव में सांख्यिकीय रूप से महत्वपूर्ण हैं।
एक तरफ़ा एनोवा मॉडल फिटिंग
R में एक-तरफ़ा एनोवा मॉडल को फ़िट करने का सामान्य सिंटैक्स है:
एओवी (प्रतिक्रिया चर ~ भविष्यवक्ता_चर, डेटा = डेटासेट)
हमारे उदाहरण में, हम एक-तरफ़ा एनोवा मॉडल को फिट करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं, वेट_लॉस को प्रतिक्रिया चर के रूप में और प्रोग्राम को भविष्यवक्ता चर के रूप में उपयोग कर सकते हैं। फिर हम अपने मॉडल का परिणाम प्रदर्शित करने के लिए सारांश() फ़ंक्शन का उपयोग कर सकते हैं:
#fit the one-way ANOVA model model <- aov(weight_loss ~ program, data = data) #view the model output summary(model) # Df Sum Sq Mean Sq F value Pr(>F) #program 2 98.93 49.46 30.83 7.55e-11 *** #Residuals 87 139.57 1.60 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
मॉडल परिणामों से, हम देख सकते हैं कि भविष्यवक्ता चर का कार्यक्रम 0.05 महत्व स्तर पर सांख्यिकीय रूप से महत्वपूर्ण है।
दूसरे शब्दों में, तीन कार्यक्रमों के परिणामस्वरूप औसत वजन घटाने के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर है।
मॉडल मान्यताओं की जाँच करना
इससे पहले कि हम आगे बढ़ें, हमें यह सत्यापित करना होगा कि हमारे मॉडल की धारणाएँ पूरी हुई हैं ताकि हमारे मॉडल के परिणाम विश्वसनीय हों। विशेष रूप से, एक-तरफ़ा एनोवा मानता है:
1. स्वतंत्रता – प्रत्येक समूह के अवलोकन एक दूसरे से स्वतंत्र होने चाहिए। चूँकि हमने एक यादृच्छिक डिज़ाइन का उपयोग किया है (अर्थात, हमने प्रतिभागियों को व्यायाम कार्यक्रमों में यादृच्छिक रूप से नियुक्त किया है), इस धारणा को पूरा किया जाना चाहिए ताकि हमें इसके बारे में बहुत अधिक चिंता न करनी पड़े।
2. सामान्यता – आश्रित चर का पूर्वानुमानक चर के प्रत्येक स्तर के लिए लगभग सामान्य वितरण होना चाहिए।
3. समान प्रसरण – प्रत्येक समूह के लिए प्रसरण समान या लगभग बराबर हैं।
सामान्यता और समान विचरण की धारणाओं की जांच करने का एक तरीका प्लॉट() फ़ंक्शन का उपयोग करना है, जो चार मॉडल-चेकिंग प्लॉट तैयार करता है। विशेष रूप से, हम निम्नलिखित दो कथानकों में विशेष रूप से रुचि रखते हैं:
- अवशेष बनाम फिट – यह ग्राफ़ अवशेषों और फिट मूल्यों के बीच संबंध दिखाता है। हम इस ग्राफ़ का उपयोग मोटे तौर पर यह आकलन करने के लिए कर सकते हैं कि समूहों के बीच अंतर लगभग बराबर है या नहीं।
- QQ प्लॉट – यह प्लॉट सैद्धांतिक मात्राओं के विरुद्ध मानकीकृत अवशेषों को प्रदर्शित करता है। हम इस ग्राफ का उपयोग मोटे तौर पर यह आकलन करने के लिए कर सकते हैं कि सामान्यता की धारणा पूरी हुई है या नहीं।
इन मॉडल जाँच प्लॉटों को तैयार करने के लिए निम्नलिखित कोड का उपयोग किया जा सकता है:
plot(model)
उपरोक्त QQ ग्राफ़ हमें सामान्यता धारणा को सत्यापित करने की अनुमति देता है। आदर्श रूप से, मानकीकृत अवशेष प्लॉट की सीधी विकर्ण रेखा के साथ स्थित होंगे। हालाँकि, ऊपर दिए गए ग्राफ़ में हम देख सकते हैं कि अवशेष शुरुआत और अंत की ओर रेखा से थोड़ा विचलित होते हैं। यह इंगित करता है कि हमारी सामान्यता धारणा का उल्लंघन हो सकता है।
अवशेष बनाम. उपरोक्त समायोजित ग्राफ़ हमें समान भिन्नताओं की हमारी धारणा को सत्यापित करने की अनुमति देता है। आदर्श रूप से, हम चाहेंगे कि फिट किए गए मानों के प्रत्येक स्तर के लिए अवशेषों को समान रूप से वितरित किया जाए।
हम देख सकते हैं कि उच्चतर फिट मूल्यों के लिए अवशेष बहुत अधिक फैले हुए हैं, जो दर्शाता है कि भिन्नताओं की समानता की हमारी धारणा का उल्लंघन हो सकता है।
समान भिन्नताओं के लिए औपचारिक रूप से परीक्षण करने के लिए, हम कार पैकेज का उपयोग करके लेवेने परीक्षण कर सकते हैं:
#load car package library (car) #conduct Levene's Test for equality of variances leveneTest(weight_loss ~ program, data = data) #Levene's Test for Homogeneity of Variance (center = median) # Df F value Pr(>F) #group 2 4.1716 0.01862 * #87 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
परीक्षण का पी-मान 0.01862 है। यदि हम 0.05 के महत्व स्तर का उपयोग करते हैं, तो हम उस शून्य परिकल्पना को अस्वीकार कर देंगे कि तीनों कार्यक्रमों में भिन्नताएँ समान हैं। हालाँकि, यदि हम 0.01 के महत्व स्तर का उपयोग करते हैं, तो हम शून्य परिकल्पना को अस्वीकार नहीं करेंगे।
हालाँकि हम यह सुनिश्चित करने के लिए डेटा को बदलने का प्रयास कर सकते हैं कि सामान्यता और भिन्नताओं की समानता की हमारी धारणाएँ पूरी हों, अभी हम इसके बारे में बहुत अधिक चिंता नहीं करेंगे।
उपचार के अंतरों का विश्लेषण करें
एक बार जब हम सत्यापित कर लेते हैं कि मॉडल धारणाएँ पूरी हो गई हैं (या यथोचित रूप से पूरी हो गई हैं), तो हम यह निर्धारित करने के लिए पोस्ट हॉक परीक्षण कर सकते हैं कि कौन से उपचार समूह एक दूसरे से भिन्न हैं।
हमारे पोस्ट हॉक परीक्षण के लिए, हम कई तुलनाओं के लिए तुकी परीक्षण करने के लिए TukeyHSD() फ़ंक्शन का उपयोग करेंगे:
#perform Tukey's Test for multiple comparisons
TukeyHSD(model, conf.level=.95)
#Tukey multiple comparisons of means
# 95% family-wise confidence level
#
#Fit: aov(formula = weight_loss ~ program, data = data)
#
#$program
# diff lwr upr p adj
#BA 0.9777414 0.1979466 1.757536 0.0100545
#CA 2.5454024 1.7656076 3.325197 0.0000000
#CB 1.5676610 0.7878662 2.347456 0.0000199
पी-वैल्यू इंगित करता है कि प्रत्येक प्रोग्राम के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर है या नहीं। नतीजे बताते हैं कि 0.05 महत्व स्तर पर प्रत्येक कार्यक्रम के औसत वजन घटाने के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर है।
हम R में प्लॉट(TukeyHSD()) फ़ंक्शन का उपयोग करके Tukey परीक्षण के परिणामस्वरूप 95% विश्वास अंतराल की कल्पना भी कर सकते हैं:
#create confidence interval for each comparison
plot(TukeyHSD(model, conf.level=.95), las = 2)
आत्मविश्वास अंतराल के परिणाम परिकल्पना परीक्षणों के परिणामों के अनुरूप होते हैं।
विशेष रूप से, हम देख सकते हैं कि कार्यक्रमों के बीच औसत वजन घटाने के लिए किसी भी विश्वास अंतराल में शून्य मान नहीं है, जो दर्शाता है कि तीन कार्यक्रमों के बीच औसत वजन घटाने में सांख्यिकीय रूप से महत्वपूर्ण अंतर है।
यह हमारे परिकल्पना परीक्षणों के लिए 0.05 से कम होने वाले सभी पी-मानों के अनुरूप है।
वन-वे एनोवा परिणामों की रिपोर्टिंग
अंत में, हम एक-तरफ़ा एनोवा के परिणामों को इस तरह से रिपोर्ट कर सकते हैं जो परिणामों को सारांशित करता है:
व्यायाम कार्यक्रम के प्रभावों की जांच करने के लिए एक-तरफ़ा एनोवा का प्रदर्शन किया गया वजन घटाने पर (पाउंड में मापा गया)। वजन घटाने पर तीन कार्यक्रमों के प्रभावों के बीच सांख्यिकीय रूप से महत्वपूर्ण अंतर था (F(2, 87) = 30.83, p = 7.55e-11)। पोस्ट-हॉक तुकी के एचएसडी परीक्षण किए गए।
कार्यक्रम सी में प्रतिभागियों का औसत वजन कम होना कार्यक्रम बी में प्रतिभागियों के औसत वजन घटाने से काफी अधिक है (पी <0.0001)।
कार्यक्रम सी में प्रतिभागियों का औसत वजन कम होना कार्यक्रम ए (पी <0.0001) में प्रतिभागियों के औसत वजन घटाने से काफी अधिक है।
इसके अतिरिक्त, कार्यक्रम बी में प्रतिभागियों का औसत वजन घटाना कार्यक्रम ए (पी = 0.01) में प्रतिभागियों के औसत वजन घटाने से काफी अधिक था।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल एक-तरफ़ा एनोवा के बारे में अतिरिक्त जानकारी प्रदान करते हैं:
वन-वे एनोवा का परिचय
एनोवा के साथ पोस्ट-हॉक परीक्षण का उपयोग करने के लिए एक गाइड
संपूर्ण गाइड: एनोवा परिणामों की रिपोर्ट कैसे करें