——————————————————————————————–
Facilitator: CDAM Experts
——————————————————————————————–
Session 7: ANOVA and Non-Parametric Tests
By the end of this session, you will be able to:
Understand when and how to use Analysis of Variance (ANOVA)
.
Perform one-way and two-way ANOVA , including interpretation of
results.
Conduct post-hoc tests like Tukey’s HSD to identify group
differences.
Apply non-parametric alternatives (e.g., Kruskal-Wallis, Wilcoxon
rank-sum) when assumptions of ANOVA are not met.
Use these statistical tools to answer questions like:
Introduction to ANOVA
What is ANOVA?
- ANOVA stands for Analysis of Variance — a statistical method used to
compare means across more than two groups .
It helps answer questions like: “Is there a
statistically significant difference in average salary among employees
in different departments?”
Key Concepts:
Null Hypothesis (H₀): All group means are equal
Alternative Hypothesis (H₁): At least one group mean is
different
F-statistic: Ratio of variance between groups to variance within
groups
p-value: Probability that observed differences occurred by
chance
1. One-Way ANOVA
Used when comparing means of a continuous outcome variable across one
categorical independent variable with more than two levels .
Example:Does average salary
differ significantly by department?
data <- data.frame(
group = factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C")),
value = c(5, 6, 7, 8, 9, 10, 11, 12, 13))
#View(data)
# Perform one-way ANOVA
anova_result = aov(value ~ group, data = data)
# Print summary of ANOVA
summary(anova_result)
Df Sum Sq Mean Sq F value Pr(>F)
group 2 54 27 27 0.001 ***
Residuals 6 6 1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
2. Post-hoc Test (Tukey’s HSD): Identify which groups differ
significantly after a significant ANOVA result.
# Example: Tukey's HSD post-hoc test
tukey_result <- TukeyHSD(anova_result)
# Print results
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = value ~ group, data = data)
$group
diff lwr upr p adj
B-A 3 0.4947644 5.505236 0.0242291
C-A 6 3.4947644 8.505236 0.0007942
C-B 3 0.4947644 5.505236 0.0242291
3. Two-Way ANOVA: Examine the effects of two factors and their
interaction.
# Example: Two-way ANOVA
data1 <- data.frame(
factor1 = factor(c("X", "X", "X", "Y", "Y", "Y")),
factor2 = factor(c("P", "Q", "R", "P", "Q", "R")),
value = c(5, 6, 7, 8, 9, 10))
head(data1)
# Perform two-way ANOVA
anova_result1 <- aov(value ~ factor1 + factor2, data = data1)
# Print summary of ANOVA
summary(anova_result1)
Df Sum Sq Mean Sq F value Pr(>F)
factor1 1 13.5 13.5 4.213e+30 <2e-16 ***
factor2 2 4.0 2.0 6.241e+29 <2e-16 ***
Residuals 2 0.0 0.0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
———————————————–
Homework
———————————————–
Practice ANOVA and Non-Parametric Tests :
Use the aov() function for one-way and two-way ANOVA.
Use TukeyHSD() for post-hoc analysis.
Use wilcox.test() for the Wilcoxon rank-sum test.
Use kruskal.test() for the Kruskal-Wallis test.
Homework Assignment
Exercise A: Import a Dataset
Download a public dataset (customerData)
Load it into R using import() or read.csv()
Print first few rows and check structure
Exercise B: One-Way ANOVA
Exercise C: Post-Hoc Test
Exercise D: Two-Way ANOVA
Exercise E: Non-Parametric Tests
Check assumptions of ANOVA (normality, homogeneity)
If violated, run Kruskal-Wallis or Wilcoxon tests
instead
Interpret the result
Exercise F: Write a Summary
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IA0KICBodG1sX25vdGVib29rOiANCiAgICBoaWdobGlnaHQ6IG1vbm9jaHJvbWUNCiAgICB0aGVtZTogcmVhZGFibGUNCi0tLQ0KDQoNCjxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjphdXRvO2Rpc3BsYXk6YmxvY2s6Jz48SU1HICBzcmM9ICAiQzpcVXNlcnNcU2NpZW50aXN0XERvY3VtZW50c1wyMDI1X1JfVFJBSU5JTkdcaW5yb2RfUjREUy5QTkciPjwvZGl2Pg0KIA0KIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gDQo8ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyNXB4O2NvbG9yOmJsdWU7Jz5GYWNpbGl0YXRvcjogQ0RBTSBFeHBlcnRzPC9kaXY+DQojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSANCg0KIyBTZXNzaW9uIDc6IEFOT1ZBIGFuZCBOb24tUGFyYW1ldHJpYyBUZXN0cw0KDQpCeSB0aGUgZW5kIG9mIHRoaXMgc2Vzc2lvbiwgeW91IHdpbGwgYmUgYWJsZSB0bzoNCg0KICogVW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdG8gdXNlIEFuYWx5c2lzIG9mIFZhcmlhbmNlIChBTk9WQSkgLg0KIA0KICogUGVyZm9ybSBvbmUtd2F5IGFuZCB0d28td2F5IEFOT1ZBICwgaW5jbHVkaW5nIGludGVycHJldGF0aW9uIG9mIHJlc3VsdHMuDQogDQogKiBDb25kdWN0IHBvc3QtaG9jIHRlc3RzIGxpa2UgVHVrZXnigJlzIEhTRCB0byBpZGVudGlmeSBncm91cCBkaWZmZXJlbmNlcy4NCg0KICogQXBwbHkgbm9uLXBhcmFtZXRyaWMgYWx0ZXJuYXRpdmVzIChlLmcuLCBLcnVza2FsLVdhbGxpcywgV2lsY294b24gcmFuay1zdW0pIHdoZW4gYXNzdW1wdGlvbnMgb2YgQU5PVkEgYXJlIG5vdCBtZXQuDQoNCiAqIFVzZSB0aGVzZSBzdGF0aXN0aWNhbCB0b29scyB0byBhbnN3ZXIgcXVlc3Rpb25zIGxpa2U6DQogICANCiAgICogQXJlIHRoZXJlIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGluIHNhbGFyeSBhY3Jvc3MgZGVwYXJ0bWVudHM/DQogICANCiAgICogSXMgdGhlcmUgYW4gaW50ZXJhY3Rpb24gYmV0d2VlbiBnZW5kZXIgYW5kIGpvYiBsZXZlbCBvbiBwZXJmb3JtYW5jZT8NCiAgIA0KIyMgSW50cm9kdWN0aW9uIHRvIEFOT1ZBDQoNCldoYXQgaXMgQU5PVkE/DQoNCiogQU5PVkEgc3RhbmRzIGZvciBBbmFseXNpcyBvZiBWYXJpYW5jZSDigJQgYSBzdGF0aXN0aWNhbCBtZXRob2QgdXNlZCB0byBjb21wYXJlIG1lYW5zIGFjcm9zcyBtb3JlIHRoYW4gdHdvIGdyb3VwcyAuDQoNCioqSXQgaGVscHMgYW5zd2VyIHF1ZXN0aW9ucyBsaWtlOioqICJJcyB0aGVyZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiBhdmVyYWdlIHNhbGFyeSBhbW9uZyBlbXBsb3llZXMgaW4gZGlmZmVyZW50IGRlcGFydG1lbnRzPyIgDQoNCiMjIEtleSBDb25jZXB0czoNCg0KKiBOdWxsIEh5cG90aGVzaXMgKEjigoApOiBBbGwgZ3JvdXAgbWVhbnMgYXJlIGVxdWFsDQoNCiogQWx0ZXJuYXRpdmUgSHlwb3RoZXNpcyAoSOKCgSk6IEF0IGxlYXN0IG9uZSBncm91cCBtZWFuIGlzIGRpZmZlcmVudA0KDQoqIEYtc3RhdGlzdGljOiBSYXRpbyBvZiB2YXJpYW5jZSBiZXR3ZWVuIGdyb3VwcyB0byB2YXJpYW5jZSB3aXRoaW4gZ3JvdXBzDQoNCiogcC12YWx1ZTogUHJvYmFiaWxpdHkgdGhhdCBvYnNlcnZlZCBkaWZmZXJlbmNlcyBvY2N1cnJlZCBieSBjaGFuY2UNCg0KIyMgMS4gT25lLVdheSBBTk9WQQ0KDQpVc2VkIHdoZW4gY29tcGFyaW5nIG1lYW5zIG9mIGEgY29udGludW91cyBvdXRjb21lIHZhcmlhYmxlIGFjcm9zcyBvbmUgY2F0ZWdvcmljYWwgaW5kZXBlbmRlbnQgdmFyaWFibGUgd2l0aCBtb3JlIHRoYW4gdHdvIGxldmVscyAuDQoNCiMjIEV4YW1wbGU6RG9lcyBhdmVyYWdlIHNhbGFyeSBkaWZmZXIgc2lnbmlmaWNhbnRseSBieSBkZXBhcnRtZW50PyANCmBgYHtyfQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBncm91cCA9IGZhY3RvcihjKCJBIiwgIkEiLCAiQSIsICJCIiwgIkIiLCAiQiIsICJDIiwgIkMiLCAiQyIpKSwNCiAgdmFsdWUgPSBjKDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzKSkNCg0KI1ZpZXcoZGF0YSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBQZXJmb3JtIG9uZS13YXkgQU5PVkENCmFub3ZhX3Jlc3VsdCA9IGFvdih2YWx1ZSB+IGdyb3VwLCBkYXRhID0gZGF0YSkNCg0KIyBQcmludCBzdW1tYXJ5IG9mIEFOT1ZBDQpzdW1tYXJ5KGFub3ZhX3Jlc3VsdCkNCmBgYA0KDQojIyAyLiBQb3N0LWhvYyBUZXN0IChUdWtleeKAmXMgSFNEKTogSWRlbnRpZnkgd2hpY2ggZ3JvdXBzIGRpZmZlciBzaWduaWZpY2FudGx5IGFmdGVyIGEgc2lnbmlmaWNhbnQgQU5PVkEgcmVzdWx0Lg0KYGBge3J9DQojIEV4YW1wbGU6IFR1a2V5J3MgSFNEIHBvc3QtaG9jIHRlc3QNCnR1a2V5X3Jlc3VsdCA8LSBUdWtleUhTRChhbm92YV9yZXN1bHQpDQoNCiMgUHJpbnQgcmVzdWx0cw0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KYGBgDQoNCg0KIyAzLiBUd28tV2F5IEFOT1ZBOiBFeGFtaW5lIHRoZSBlZmZlY3RzIG9mIHR3byBmYWN0b3JzIGFuZCB0aGVpciBpbnRlcmFjdGlvbi4NCmBgYHtyfQ0KIyBFeGFtcGxlOiBUd28td2F5IEFOT1ZBDQpkYXRhMSA8LSBkYXRhLmZyYW1lKA0KICBmYWN0b3IxID0gZmFjdG9yKGMoIlgiLCAiWCIsICJYIiwgIlkiLCAiWSIsICJZIikpLA0KICBmYWN0b3IyID0gZmFjdG9yKGMoIlAiLCAiUSIsICJSIiwgIlAiLCAiUSIsICJSIikpLA0KICB2YWx1ZSA9IGMoNSwgNiwgNywgOCwgOSwgMTApKQ0KDQpoZWFkKGRhdGExKQ0KdGFpbChkYXRhMSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBQZXJmb3JtIHR3by13YXkgQU5PVkENCmFub3ZhX3Jlc3VsdDEgPC0gYW92KHZhbHVlIH4gZmFjdG9yMSArIGZhY3RvcjIsIGRhdGEgPSBkYXRhMSkNCg0KIyBQcmludCBzdW1tYXJ5IG9mIEFOT1ZBDQpzdW1tYXJ5KGFub3ZhX3Jlc3VsdDEpDQpgYGANCg0KIyMgNC4gV2lsY294b24gUmFuay1TdW0gVGVzdCAoTWFubi1XaGl0bmV5IFUgVGVzdCk6IENvbXBhcmUgbWVkaWFucyBvZiB0d28gaW5kZXBlbmRlbnQgc2FtcGxlcy4NCmBgYHtyfQ0KIyBFeGFtcGxlOiBXaWxjb3hvbiByYW5rLXN1bSB0ZXN0DQpncm91cDEgPC0gYyg1LCA2LCA3KQ0KZ3JvdXAyIDwtIGMoOCwgOSwgMTApDQoNCiMgUGVyZm9ybSBXaWxjb3hvbiByYW5rLXN1bSB0ZXN0DQp3aWxjb3hvbl9yZXN1bHQgPC0gd2lsY294LnRlc3QoZ3JvdXAxLCBncm91cDIpDQoNCiMgUHJpbnQgcmVzdWx0cw0KcHJpbnQod2lsY294b25fcmVzdWx0KQ0KYGBgDQoNCiMjIDUuIEtydXNrYWwtV2FsbGlzIFRlc3Q6IENvbXBhcmUgbWVkaWFucyBhY3Jvc3MgbW9yZSB0aGFuIHR3byBncm91cHMuDQpgYGB7cn0NCiMgRXhhbXBsZTogS3J1c2thbC1XYWxsaXMgdGVzdA0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBncm91cCA9IGZhY3RvcihjKCJBIiwgIkEiLCAiQSIsICJCIiwgIkIiLCAiQiIsICJDIiwgIkMiLCAiQyIpKSwNCiAgdmFsdWUgPSBjKDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzKSkNCg0KIyBQZXJmb3JtIEtydXNrYWwtV2FsbGlzIHRlc3QNCmtydXNrYWxfcmVzdWx0IDwtIGtydXNrYWwudGVzdCh2YWx1ZSB+IGdyb3VwLCBkYXRhID0gZGF0YSkNCmtydXMNCg0KIyBQcmludCByZXN1bHRzDQpwcmludChrcnVza2FsX3Jlc3VsdCkNCmBgYA0KDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgSG9tZXdvcmsNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJhY3RpY2UgQU5PVkEgYW5kIE5vbi1QYXJhbWV0cmljIFRlc3RzIDoNCg0KKiBVc2UgdGhlIGFvdigpIGZ1bmN0aW9uIGZvciBvbmUtd2F5IGFuZCB0d28td2F5IEFOT1ZBLg0KDQoqIFVzZSBUdWtleUhTRCgpIGZvciBwb3N0LWhvYyBhbmFseXNpcy4NCg0KKiBVc2Ugd2lsY294LnRlc3QoKSBmb3IgdGhlIFdpbGNveG9uIHJhbmstc3VtIHRlc3QuDQoNCiogVXNlIGtydXNrYWwudGVzdCgpIGZvciB0aGUgS3J1c2thbC1XYWxsaXMgdGVzdC4NCg0KDQojIyBIb21ld29yayBBc3NpZ25tZW50DQoNCiMjIEV4ZXJjaXNlIEE6IEltcG9ydCBhIERhdGFzZXQNCg0KKiBEb3dubG9hZCBhIHB1YmxpYyBkYXRhc2V0IChjdXN0b21lckRhdGEpDQoNCiogTG9hZCBpdCBpbnRvIFIgdXNpbmcgaW1wb3J0KCkgb3IgcmVhZC5jc3YoKQ0KDQoqIFByaW50IGZpcnN0IGZldyByb3dzIGFuZCBjaGVjayBzdHJ1Y3R1cmUNCg0KIyMgRXhlcmNpc2UgQjogT25lLVdheSBBTk9WQQ0KDQoqIElkZW50aWZ5IGEgbnVtZXJpYyBvdXRjb21lIHZhcmlhYmxlIGFuZCBhIGNhdGVnb3JpY2FsIGdyb3VwaW5nIHZhcmlhYmxlDQoNCiogUnVuIGEgb25lLXdheSBBTk9WQQ0KDQoqIEludGVycHJldCB0aGUgcmVzdWx0DQoNCiMjIEV4ZXJjaXNlIEM6IFBvc3QtSG9jIFRlc3QNCg0KKiBJZiBBTk9WQSBpcyBzaWduaWZpY2FudCwgcnVuIFR1a2V54oCZcyBIU0QNCg0KKiBSZXBvcnQgd2hpY2ggZ3JvdXBzIGRpZmZlciBzaWduaWZpY2FudGx5DQoNCiMjIEV4ZXJjaXNlIEQ6IFR3by1XYXkgQU5PVkENCg0KKiBJbmNsdWRlIGEgc2Vjb25kIGNhdGVnb3JpY2FsIHZhcmlhYmxlDQoNCiogSW50ZXJwcmV0IGJvdGggbWFpbiBlZmZlY3RzIGFuZCBpbnRlcmFjdGlvbg0KDQojIyBFeGVyY2lzZSBFOiBOb24tUGFyYW1ldHJpYyBUZXN0cw0KDQoqIENoZWNrIGFzc3VtcHRpb25zIG9mIEFOT1ZBIChub3JtYWxpdHksIGhvbW9nZW5laXR5KQ0KDQoqIElmIHZpb2xhdGVkLCBydW4gS3J1c2thbC1XYWxsaXMgb3IgV2lsY294b24gdGVzdHMgaW5zdGVhZA0KDQoqIEludGVycHJldCB0aGUgcmVzdWx0DQoNCiMjIEV4ZXJjaXNlIEY6IFdyaXRlIGEgU3VtbWFyeQ0KDQoqIFN1bW1hcml6ZSB5b3VyIGZpbmRpbmdzIGNsZWFybHkgaW4gcGxhaW4gbGFuZ3VhZ2UNCg0KKiBJbmNsdWRlOg0KDQogICAqIFdoYXQgcXVlc3Rpb24geW91IHdlcmUgYW5zd2VyaW5nDQoNCiAgICogV2hpY2ggdmFyaWFibGVzIHdlcmUgdGVzdGVkDQoNCiAgICogV2hldGhlciB0aGUgcmVzdWx0IHdhcyBzaWduaWZpY2FudA0KDQogICAqIFdoYXQgY29uY2x1c2lvbiBjYW4gYmUgZHJhd24NCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=