——————————————————————————————–

Facilitator: CDAM Experts

——————————————————————————————–

Session 7: ANOVA and Non-Parametric Tests

By the end of this session, you will be able to:

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)
tail(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

4. Wilcoxon Rank-Sum Test (Mann-Whitney U Test): Compare medians of two independent samples.

# Example: Wilcoxon rank-sum test
group1 <- c(5, 6, 7)
group2 <- c(8, 9, 10)

# Perform Wilcoxon rank-sum test
wilcoxon_result <- wilcox.test(group1, group2)

# Print results
print(wilcoxon_result)

    Wilcoxon rank sum exact test

data:  group1 and group2
W = 0, p-value = 0.1
alternative hypothesis: true location shift is not equal to 0

5. Kruskal-Wallis Test: Compare medians across more than two groups.

# Example: Kruskal-Wallis test
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))

# Perform Kruskal-Wallis test
kruskal_result <- kruskal.test(value ~ group, data = data)
krus
G1;H1;Errorh: object 'krus' not found
gG1;H1;Error during wrapuph: not that many frames on the stack
Error: no more error handlers available (recursive errors?); invoking 'abort' restart
g
# Print results
print(kruskal_result)

    Kruskal-Wallis rank sum test

data:  value by group
Kruskal-Wallis chi-squared = 7.2, df = 2, p-value = 0.02732

———————————————–

Homework

———————————————–

Practice ANOVA and Non-Parametric Tests :

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

  • Identify a numeric outcome variable and a categorical grouping variable

  • Run a one-way ANOVA

  • Interpret the result

Exercise C: Post-Hoc Test

  • If ANOVA is significant, run Tukey’s HSD

  • Report which groups differ significantly

Exercise D: Two-Way ANOVA

  • Include a second categorical variable

  • Interpret both main effects and interaction

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

  • Summarize your findings clearly in plain language

  • Include:

    • What question you were answering

    • Which variables were tested

    • Whether the result was significant

    • What conclusion can be drawn

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IA0KICBodG1sX25vdGVib29rOiANCiAgICBoaWdobGlnaHQ6IG1vbm9jaHJvbWUNCiAgICB0aGVtZTogcmVhZGFibGUNCi0tLQ0KDQoNCjxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjphdXRvO2Rpc3BsYXk6YmxvY2s6Jz48SU1HICBzcmM9ICAiQzpcVXNlcnNcU2NpZW50aXN0XERvY3VtZW50c1wyMDI1X1JfVFJBSU5JTkdcaW5yb2RfUjREUy5QTkciPjwvZGl2Pg0KIA0KIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gDQo8ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyNXB4O2NvbG9yOmJsdWU7Jz5GYWNpbGl0YXRvcjogQ0RBTSBFeHBlcnRzPC9kaXY+DQojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSANCg0KIyBTZXNzaW9uIDc6IEFOT1ZBIGFuZCBOb24tUGFyYW1ldHJpYyBUZXN0cw0KDQpCeSB0aGUgZW5kIG9mIHRoaXMgc2Vzc2lvbiwgeW91IHdpbGwgYmUgYWJsZSB0bzoNCg0KICogVW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdG8gdXNlIEFuYWx5c2lzIG9mIFZhcmlhbmNlIChBTk9WQSkgLg0KIA0KICogUGVyZm9ybSBvbmUtd2F5IGFuZCB0d28td2F5IEFOT1ZBICwgaW5jbHVkaW5nIGludGVycHJldGF0aW9uIG9mIHJlc3VsdHMuDQogDQogKiBDb25kdWN0IHBvc3QtaG9jIHRlc3RzIGxpa2UgVHVrZXnigJlzIEhTRCB0byBpZGVudGlmeSBncm91cCBkaWZmZXJlbmNlcy4NCg0KICogQXBwbHkgbm9uLXBhcmFtZXRyaWMgYWx0ZXJuYXRpdmVzIChlLmcuLCBLcnVza2FsLVdhbGxpcywgV2lsY294b24gcmFuay1zdW0pIHdoZW4gYXNzdW1wdGlvbnMgb2YgQU5PVkEgYXJlIG5vdCBtZXQuDQoNCiAqIFVzZSB0aGVzZSBzdGF0aXN0aWNhbCB0b29scyB0byBhbnN3ZXIgcXVlc3Rpb25zIGxpa2U6DQogICANCiAgICogQXJlIHRoZXJlIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGluIHNhbGFyeSBhY3Jvc3MgZGVwYXJ0bWVudHM/DQogICANCiAgICogSXMgdGhlcmUgYW4gaW50ZXJhY3Rpb24gYmV0d2VlbiBnZW5kZXIgYW5kIGpvYiBsZXZlbCBvbiBwZXJmb3JtYW5jZT8NCiAgIA0KIyMgSW50cm9kdWN0aW9uIHRvIEFOT1ZBDQoNCldoYXQgaXMgQU5PVkE/DQoNCiogQU5PVkEgc3RhbmRzIGZvciBBbmFseXNpcyBvZiBWYXJpYW5jZSDigJQgYSBzdGF0aXN0aWNhbCBtZXRob2QgdXNlZCB0byBjb21wYXJlIG1lYW5zIGFjcm9zcyBtb3JlIHRoYW4gdHdvIGdyb3VwcyAuDQoNCioqSXQgaGVscHMgYW5zd2VyIHF1ZXN0aW9ucyBsaWtlOioqICJJcyB0aGVyZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiBhdmVyYWdlIHNhbGFyeSBhbW9uZyBlbXBsb3llZXMgaW4gZGlmZmVyZW50IGRlcGFydG1lbnRzPyIgDQoNCiMjIEtleSBDb25jZXB0czoNCg0KKiBOdWxsIEh5cG90aGVzaXMgKEjigoApOiBBbGwgZ3JvdXAgbWVhbnMgYXJlIGVxdWFsDQoNCiogQWx0ZXJuYXRpdmUgSHlwb3RoZXNpcyAoSOKCgSk6IEF0IGxlYXN0IG9uZSBncm91cCBtZWFuIGlzIGRpZmZlcmVudA0KDQoqIEYtc3RhdGlzdGljOiBSYXRpbyBvZiB2YXJpYW5jZSBiZXR3ZWVuIGdyb3VwcyB0byB2YXJpYW5jZSB3aXRoaW4gZ3JvdXBzDQoNCiogcC12YWx1ZTogUHJvYmFiaWxpdHkgdGhhdCBvYnNlcnZlZCBkaWZmZXJlbmNlcyBvY2N1cnJlZCBieSBjaGFuY2UNCg0KIyMgMS4gT25lLVdheSBBTk9WQQ0KDQpVc2VkIHdoZW4gY29tcGFyaW5nIG1lYW5zIG9mIGEgY29udGludW91cyBvdXRjb21lIHZhcmlhYmxlIGFjcm9zcyBvbmUgY2F0ZWdvcmljYWwgaW5kZXBlbmRlbnQgdmFyaWFibGUgd2l0aCBtb3JlIHRoYW4gdHdvIGxldmVscyAuDQoNCiMjIEV4YW1wbGU6RG9lcyBhdmVyYWdlIHNhbGFyeSBkaWZmZXIgc2lnbmlmaWNhbnRseSBieSBkZXBhcnRtZW50PyANCmBgYHtyfQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBncm91cCA9IGZhY3RvcihjKCJBIiwgIkEiLCAiQSIsICJCIiwgIkIiLCAiQiIsICJDIiwgIkMiLCAiQyIpKSwNCiAgdmFsdWUgPSBjKDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzKSkNCg0KI1ZpZXcoZGF0YSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBQZXJmb3JtIG9uZS13YXkgQU5PVkENCmFub3ZhX3Jlc3VsdCA9IGFvdih2YWx1ZSB+IGdyb3VwLCBkYXRhID0gZGF0YSkNCg0KIyBQcmludCBzdW1tYXJ5IG9mIEFOT1ZBDQpzdW1tYXJ5KGFub3ZhX3Jlc3VsdCkNCmBgYA0KDQojIyAyLiBQb3N0LWhvYyBUZXN0IChUdWtleeKAmXMgSFNEKTogSWRlbnRpZnkgd2hpY2ggZ3JvdXBzIGRpZmZlciBzaWduaWZpY2FudGx5IGFmdGVyIGEgc2lnbmlmaWNhbnQgQU5PVkEgcmVzdWx0Lg0KYGBge3J9DQojIEV4YW1wbGU6IFR1a2V5J3MgSFNEIHBvc3QtaG9jIHRlc3QNCnR1a2V5X3Jlc3VsdCA8LSBUdWtleUhTRChhbm92YV9yZXN1bHQpDQoNCiMgUHJpbnQgcmVzdWx0cw0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KYGBgDQoNCg0KIyAzLiBUd28tV2F5IEFOT1ZBOiBFeGFtaW5lIHRoZSBlZmZlY3RzIG9mIHR3byBmYWN0b3JzIGFuZCB0aGVpciBpbnRlcmFjdGlvbi4NCmBgYHtyfQ0KIyBFeGFtcGxlOiBUd28td2F5IEFOT1ZBDQpkYXRhMSA8LSBkYXRhLmZyYW1lKA0KICBmYWN0b3IxID0gZmFjdG9yKGMoIlgiLCAiWCIsICJYIiwgIlkiLCAiWSIsICJZIikpLA0KICBmYWN0b3IyID0gZmFjdG9yKGMoIlAiLCAiUSIsICJSIiwgIlAiLCAiUSIsICJSIikpLA0KICB2YWx1ZSA9IGMoNSwgNiwgNywgOCwgOSwgMTApKQ0KDQpoZWFkKGRhdGExKQ0KdGFpbChkYXRhMSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBQZXJmb3JtIHR3by13YXkgQU5PVkENCmFub3ZhX3Jlc3VsdDEgPC0gYW92KHZhbHVlIH4gZmFjdG9yMSArIGZhY3RvcjIsIGRhdGEgPSBkYXRhMSkNCg0KIyBQcmludCBzdW1tYXJ5IG9mIEFOT1ZBDQpzdW1tYXJ5KGFub3ZhX3Jlc3VsdDEpDQpgYGANCg0KIyMgNC4gV2lsY294b24gUmFuay1TdW0gVGVzdCAoTWFubi1XaGl0bmV5IFUgVGVzdCk6IENvbXBhcmUgbWVkaWFucyBvZiB0d28gaW5kZXBlbmRlbnQgc2FtcGxlcy4NCmBgYHtyfQ0KIyBFeGFtcGxlOiBXaWxjb3hvbiByYW5rLXN1bSB0ZXN0DQpncm91cDEgPC0gYyg1LCA2LCA3KQ0KZ3JvdXAyIDwtIGMoOCwgOSwgMTApDQoNCiMgUGVyZm9ybSBXaWxjb3hvbiByYW5rLXN1bSB0ZXN0DQp3aWxjb3hvbl9yZXN1bHQgPC0gd2lsY294LnRlc3QoZ3JvdXAxLCBncm91cDIpDQoNCiMgUHJpbnQgcmVzdWx0cw0KcHJpbnQod2lsY294b25fcmVzdWx0KQ0KYGBgDQoNCiMjIDUuIEtydXNrYWwtV2FsbGlzIFRlc3Q6IENvbXBhcmUgbWVkaWFucyBhY3Jvc3MgbW9yZSB0aGFuIHR3byBncm91cHMuDQpgYGB7cn0NCiMgRXhhbXBsZTogS3J1c2thbC1XYWxsaXMgdGVzdA0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBncm91cCA9IGZhY3RvcihjKCJBIiwgIkEiLCAiQSIsICJCIiwgIkIiLCAiQiIsICJDIiwgIkMiLCAiQyIpKSwNCiAgdmFsdWUgPSBjKDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzKSkNCg0KIyBQZXJmb3JtIEtydXNrYWwtV2FsbGlzIHRlc3QNCmtydXNrYWxfcmVzdWx0IDwtIGtydXNrYWwudGVzdCh2YWx1ZSB+IGdyb3VwLCBkYXRhID0gZGF0YSkNCmtydXMNCg0KIyBQcmludCByZXN1bHRzDQpwcmludChrcnVza2FsX3Jlc3VsdCkNCmBgYA0KDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgSG9tZXdvcmsNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJhY3RpY2UgQU5PVkEgYW5kIE5vbi1QYXJhbWV0cmljIFRlc3RzIDoNCg0KKiBVc2UgdGhlIGFvdigpIGZ1bmN0aW9uIGZvciBvbmUtd2F5IGFuZCB0d28td2F5IEFOT1ZBLg0KDQoqIFVzZSBUdWtleUhTRCgpIGZvciBwb3N0LWhvYyBhbmFseXNpcy4NCg0KKiBVc2Ugd2lsY294LnRlc3QoKSBmb3IgdGhlIFdpbGNveG9uIHJhbmstc3VtIHRlc3QuDQoNCiogVXNlIGtydXNrYWwudGVzdCgpIGZvciB0aGUgS3J1c2thbC1XYWxsaXMgdGVzdC4NCg0KDQojIyBIb21ld29yayBBc3NpZ25tZW50DQoNCiMjIEV4ZXJjaXNlIEE6IEltcG9ydCBhIERhdGFzZXQNCg0KKiBEb3dubG9hZCBhIHB1YmxpYyBkYXRhc2V0IChjdXN0b21lckRhdGEpDQoNCiogTG9hZCBpdCBpbnRvIFIgdXNpbmcgaW1wb3J0KCkgb3IgcmVhZC5jc3YoKQ0KDQoqIFByaW50IGZpcnN0IGZldyByb3dzIGFuZCBjaGVjayBzdHJ1Y3R1cmUNCg0KIyMgRXhlcmNpc2UgQjogT25lLVdheSBBTk9WQQ0KDQoqIElkZW50aWZ5IGEgbnVtZXJpYyBvdXRjb21lIHZhcmlhYmxlIGFuZCBhIGNhdGVnb3JpY2FsIGdyb3VwaW5nIHZhcmlhYmxlDQoNCiogUnVuIGEgb25lLXdheSBBTk9WQQ0KDQoqIEludGVycHJldCB0aGUgcmVzdWx0DQoNCiMjIEV4ZXJjaXNlIEM6IFBvc3QtSG9jIFRlc3QNCg0KKiBJZiBBTk9WQSBpcyBzaWduaWZpY2FudCwgcnVuIFR1a2V54oCZcyBIU0QNCg0KKiBSZXBvcnQgd2hpY2ggZ3JvdXBzIGRpZmZlciBzaWduaWZpY2FudGx5DQoNCiMjIEV4ZXJjaXNlIEQ6IFR3by1XYXkgQU5PVkENCg0KKiBJbmNsdWRlIGEgc2Vjb25kIGNhdGVnb3JpY2FsIHZhcmlhYmxlDQoNCiogSW50ZXJwcmV0IGJvdGggbWFpbiBlZmZlY3RzIGFuZCBpbnRlcmFjdGlvbg0KDQojIyBFeGVyY2lzZSBFOiBOb24tUGFyYW1ldHJpYyBUZXN0cw0KDQoqIENoZWNrIGFzc3VtcHRpb25zIG9mIEFOT1ZBIChub3JtYWxpdHksIGhvbW9nZW5laXR5KQ0KDQoqIElmIHZpb2xhdGVkLCBydW4gS3J1c2thbC1XYWxsaXMgb3IgV2lsY294b24gdGVzdHMgaW5zdGVhZA0KDQoqIEludGVycHJldCB0aGUgcmVzdWx0DQoNCiMjIEV4ZXJjaXNlIEY6IFdyaXRlIGEgU3VtbWFyeQ0KDQoqIFN1bW1hcml6ZSB5b3VyIGZpbmRpbmdzIGNsZWFybHkgaW4gcGxhaW4gbGFuZ3VhZ2UNCg0KKiBJbmNsdWRlOg0KDQogICAqIFdoYXQgcXVlc3Rpb24geW91IHdlcmUgYW5zd2VyaW5nDQoNCiAgICogV2hpY2ggdmFyaWFibGVzIHdlcmUgdGVzdGVkDQoNCiAgICogV2hldGhlciB0aGUgcmVzdWx0IHdhcyBzaWduaWZpY2FudA0KDQogICAqIFdoYXQgY29uY2x1c2lvbiBjYW4gYmUgZHJhd24NCg0KYGBge3J9DQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=