#1 India's Top IT Training Institute

×

About Uncodemy

Know more about who we are and what we stand for.

About Us

About Us

Discover our mission to equip individuals with essential IT skills and industry expertise.

Read More →
UnCodeMy Gallery

UnCodeMy Gallery

Explore highlights from our IT training sessions and success stories.

Read More →
×

Free Resources

Learn, practice and plan your career — bilkul free.

Tutorials

Tutorials

Step-by-step written tutorials to learn any technology at your own pace.

Read More →
Free Counselling

Free Counselling

Book a free video counselling session and pick the right course for you.

Read More →
Online Compiler

Online Compiler

Write, run and test your code online — no setup required.

Read More →
Statistics

Hypothesis Testing

Hypothesis testing lets you make statistically grounded decisions from sample data — is a difference real, or just noise? R has built-in functions for every classic test.

1. The Core Idea — Null and Alternative Hypotheses

Every test compares a null hypothesis (H₀) — "no effect / no difference" — against an alternative hypothesis (H₁). The p-value tells you how surprising your observed data would be if H₀ were actually true.

Production Reality: A p-value below your significance threshold (commonly 0.05) suggests rejecting H0 — but it's not proof, and it says nothing about effect size or practical importance.

2. T-Tests — Comparing Means

One-Sample T-Test

scores <- c(72, 85, 90, 68, 75, 88, 95, 70)
t.test(scores, mu = 80)   # is the mean significantly different from 80?

Two-Sample T-Test (Independent Groups)

group_a <- c(85, 90, 78, 92, 88)
group_b <- c(70, 75, 68, 80, 72)

t.test(group_a, group_b)
# or with a data frame:
t.test(salary ~ gender, data = df)

Paired T-Test

before <- c(80, 85, 78, 90, 82)
after  <- c(88, 91, 85, 94, 89)
t.test(before, after, paired = TRUE)

3. Reading t.test() Output

FieldMeaning
tTest statistic
dfDegrees of freedom
p-valueProbability of observing this result under H0
95 percent confidence intervalPlausible range for the true difference

4. ANOVA — Comparing 3+ Group Means

anova_model <- aov(salary ~ department, data = df)
summary(anova_model)

# Post-hoc test if ANOVA is significant
TukeyHSD(anova_model)
Pro Tip: Run ANOVA when comparing 3+ groups instead of multiple t-tests — running many t-tests inflates your false-positive rate (the multiple comparisons problem).

5. Chi-Square Test — Categorical Relationships

# Test of independence between two categorical variables
contingency_table <- table(df$department, df$gender)
chisq.test(contingency_table)

# Goodness-of-fit test
observed <- c(50, 30, 20)
expected_probs <- c(0.5, 0.3, 0.2)
chisq.test(observed, p = expected_probs)

6. Choosing the Right Test

QuestionTest
Is one group's mean different from a fixed value?One-sample t-test
Do two independent groups differ in mean?Two-sample t-test
Does the same group differ before/after?Paired t-test
Do 3+ groups differ in mean?ANOVA
Are two categorical variables related?Chi-square test

7. Checking Test Assumptions

shapiro.test(scores)          # test for normality
var.test(group_a, group_b)   # test for equal variances (before t.test)

8. Production-Ready Checklist

  • ✅ Know your hypotheses before testing — H0 and H1, clearly stated.
  • ✅ Choose the correct test — based on data type and number of groups.
  • ✅ Check assumptions — normality, equal variance — before trusting results.
  • ✅ Interpret p-values carefully — statistical significance ≠ practical importance.
Pro Tip: Always pair a p-value with an effect size and confidence interval — a tiny, statistically significant difference may be practically meaningless.

Ready to master R Programming?

Build real-world data analysis and visualization projects with hands-on training, mentor-led sessions, and placement support.

Explore Course