Anova, the technique of analysis of variance with R

Anova with R - the analysis of variance header

ANOVA, an acronym for “Analysis of Variance“, is a statistical technique used to evaluate whether there are significant differences between the means of three or more independent groups. In other words, ANOVA compares the means of different groups to determine whether at least one of them is significantly different from the others.

The ANOVA technique

Analysis of Variance (ANOVA) is a statistical technique based on the decomposition of the variability in data into two main components:

  • variability between groups
  • variability within groups

Imagine that you have several people assigned to different groups and that you measure a variable of interest for each person. ANOVA asks whether the differences we observe between the mean values of these variables across groups are larger than what might be expected by simple chance.

To do this, ANOVA uses a test called a T-test, which compares the variance between groups to the variance within groups. If the variability between groups is significantly greater, this suggests that at least one of the groups is different from the others in terms of the measured variable.

The null hypothesis of ANOVA states that there are no significant differences between the group means, while the alternative hypothesis suggests that at least one group is significantly different. The decision to reject or accept the null hypothesis depends on a p-value associated with the F-test. If the p-value is low enough (generally below 0.05), one can reject the null hypothesis.

It is important to note that ANOVA requires that the samples within each group are independent and that the data distributions are approximately normal. These are the main concepts on which ANOVA is based to determine

The T Test

The t-test, or t-test, is a statistical technique used to evaluate whether there are significant differences between the means of two groups. There are several variations of the t-test, but the two most common are the independent samples t-test and the dependent (or paired) samples t-test.

Here’s how each variant works:

T-Test for Independent Samples:

  1. Null and Alternative Hypothesis:
  • Null Hypothesis (H0): There are no significant differences between the means of the two groups.
  • Alternative Hypothesis (H1): There are significant differences between the means of the two groups.
  1. Calculation of the t-value:

The t-value is calculated using the difference between the means of the two groups normalized for the variability of the data.

 t = \frac{\bar{X}_1 - \bar{X}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}


  • \bar{X}_1 e \bar{X}_2 are the averages of the two groups.
  • s_1 e s_2 are the standard errors of the two groups.
  • n_1 e n_2 are the dimensions of the two samples.
  1. Determination of Significance:

You compare the calculated t-value to a Student’s t-distribution or use statistical software to obtain the associated p-value.

  1. Decision:

If the p value is less than the predetermined significance level (usually 0.05), the null hypothesis can be rejected in favor of the alternative hypothesis, suggesting that there are significant differences between the means of the two groups.

T-Test for Dependent Samples:

The dependent samples t-test is used when measurements are paired, for example, when measuring the same thing on paired individuals before and after a treatment.

The calculation of the t-value is similar, but the difference between the pairs of observations is considered:

 t = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}


  • \bar{d} is the average of the differences.
  • s_d is the standard deviation of the differences.
  • n is the number of matched pairs of observations.

The process of determining significance and making the decision is similar to the independent samples t-test.

In both cases, the t test provides an assessment of the likelihood that the observed differences between groups are due to chance, and the p value is compared to the significance level to make a statistical decision.

Calculating the p-value

I apologize for the confusion. Calculating the p-value in a t-test involves comparing the calculated t-value to the Student’s t-distribution and determining the probability of obtaining a t-value at least that extreme under the null hypothesis. Here’s how it’s done:

  • Calculating the t-value: Calculate the t-value using the appropriate formula for the type of t-test you are running (independent-samples t or dependent-samples t).
  • Degrees of Freedom: Calculate the degrees of freedom for your test. For the independent samples t test, the degrees of freedom are df = n_1 + n_2 - 2, where n_1 and n_2 are the dimensions of the two samples. For the dependent-samples t test, the degrees of freedom are df = n - 1, where n is the number of matched pairs of observations.
  • Viewing the Student’s t-Distribution: View the Student’s t-distribution with the calculated degrees of freedom. This is a standard table or can be obtained using statistical software.
  • Comparing the t-value with the Table: Find the critical value of the t-distribution corresponding to your significance level (for example, 0.05). This will be the cutoff point beyond which we reject the null hypothesis.
  • Calculating the p-Value: See if your t-value exceeds the critical value. If the t-value is more extreme (larger or smaller) than the critical value, you can calculate the p-value as the probability of getting a t-value at least that extreme in the Student’s t-distribution.

Calculating ANOVA with R

ANOVA analysis can be implemented with many programming languages. In R, you can perform ANOVA using the aov() function. Let’s look at a simple example together. Suppose we have a data set that contains a factor with three levels and a response variable. For example, consider the following fictitious dataset:

# Creating the data
set.seed(123)  # Setting a seed for reproducibility
groups <- as.factor(rep(1:3, each = 20))  # Creating a factor with three levels
response_variable <- rnorm(60, mean = c(10, 12, 15), sd = 2)  # Creating a response variable with different means for each group

# Creating the data frame
data <- data.frame(Group = groups, Value = response_variable)

# Displaying the first 6 rows of the data frame

You will get the data as follows (showing only the first 6):

  Group     Value
1     1  8.879049
2     1 11.539645
3     1 18.117417
4     1 10.141017
5     1 12.258575
6     1 18.430130

Now that we have the data, we can perform the ANOVA using the aov() function:

# Performing ANOVA
anova_model <- aov(Value ~ Group, data = data)

# Displaying the ANOVA results

The aov() function creates a model object that can be analyzed in several ways. The summary() function applied to this object provides an overview of the ANOVA results, including F-values, p-values, and other relevant statistics. Running the code we get the following result:

            Df Sum Sq Mean Sq F value Pr(>F)
Group        2    1.7   0.868   0.108  0.898
Residuals   57  460.4   8.077 

The ANOVA results you obtained provide information about the explained and unexplained variation in your data. Here’s what the columns mean:

  • Df (Degrees of Freedom): This column indicates the degrees of freedom associated with the model. For your case, you have two degrees of freedom for the “Group” factor and 57 degrees of freedom for the errors (residuals).
  • Sum Sq (Sum of Squares): This column indicates the sum of the squares of the deviation of the data from the mean. For the “Group” factor, it indicates how much of the total variation in the data can be explained by the difference between the means of the different groups. For residuals, indicates variation not explained by the model.
  • Mean Sq (Mean Square): This column represents the mean of the squares, calculated by dividing the sum of the squares by the respective degrees of freedom. It is a measure of the average variability in the data for the “Group” factor and for the residuals.
  • F value (F-ratio): This value is the ratio between the explained variability and the unexplained variability. Indicates whether the differences between the group means are statistically significant. Higher F values indicate greater evidence against the null hypothesis of equality of group means.
  • Pr(>F) (p-value): This value represents the probability of observing an F-ratio equal to or more extreme than the observed value, assuming that the null hypothesis is true. A very small p value (generally less than 0.05) indicates that the differences between group means are statistically significant.

In our case, the F value for the “Group” factor is 0.108 with a p-value of 0.898. This indicates that there is insufficient evidence to reject the null hypothesis of no significant differences between the group means. In other words, the data provides no significant evidence that the group means are different.

If we wanted, again with R, to visualize the three distributions, we can use the ggplot2 package.

ggplot(data = data, aes(x = Group, y = Value, color = Group)) +
     geom_point() +
     labs(title = "Distribution of values by group", x = "Group", y = "Value") +

By executing this you obtain the following graph with the distribution of the points in the 3 groups.

Anova with R - distribution values

The different types of ANOVA

There are several types of ANOVA, designed to meet the specific needs of different data types and study designs. The main types of ANOVA include:

  • One-factor ANOVA: Used when there is only one factor or independent variable. For example, you could use it to compare the averages of three or more groups of participants.
  • Two-factor ANOVA: Involves two independent variables (factors). It can be further divided into two-way ANOVA with repeated measures and without repetitions.
  • Multifactor ANOVA: Involves three or more independent variables. It is more complex than two-factor ANOVA and can handle situations where there are multiple factors influencing the dependent variable.
  • Repeated measures ANOVA: Used when the same experimental units are measured multiple times. It is a form of ANOVA that takes into account the correlation between repeated measurements on the same subject.
  • Multivariate ANOVA (MANOVA): Extension of ANOVA involving multiple dependent variables. It is used when you want to simultaneously examine differences between groups on multiple dependent variables.
  • Randomized block ANOVA: Used when individuals are divided into homogeneous blocks and treatments are randomly assigned within each block.

These are just a few examples and there are many variations and specific adaptations for different research contexts. The choice of the type of ANOVA depends on the nature of the data and the experimental design of the study.

Leave a Reply