Hide Solution
$$ \begin{align}
\text{SSW} &= \sum_{i=1}^g \sum_{j=1}^{n_i}\ (x_{i,j} - \bar{x}_i)^2 \\[3em]
&= \sum_{i=1}^{3} \sum_{j=1}^{n_i}\ (x_{i,j} - \bar{x}_i)^2 \\[1em]
&= \sum_{j=1}^{5}\ (x_{1,j} - 1.8)^2 + \sum_{j=1}^{6}\ (x_{2,j} - 5)^2 + \sum_{j=1}^{4}\ (x_{3,j} - 5)^2 \\[1em]
&= (x_{1,1} - 1.8)^2\ + (x_{1,2} - 1.8)^2\ + (x_{1,3} - 1.8)^2\ + (x_{1,4} - 1.8)^2\ + (x_{1,5} - 1.8)^2\ + \\
& \qquad
(x_{2,1} - 5)^2\ + (x_{2,2} - 5)^2\ + (x_{2,3} - 5)^2\ + (x_{2,4} - 5)^2\ + (x_{2,5} - 5)^2\ + (x_{2,6} - 5)^2\ + \\
& \qquad
(x_{3,1} - 5)^2\ +\ (x_{3,2} - 5)^2\ +\ (x_{3,3} - 5)^2\ +\ (x_{3,4} - 5)^2 \\[1em]
&= (5 - 1.8)^2\ + (-1 - 1.8)^2\ + (-6 - 1.8)^2\ + (6 - 1.8)^2\ + (5 - 1.8)^2\ + \\
& \qquad
(10 - 5)^2\ + (7 - 5)^2\ + (4 - 5)^2\ + (13 - 5)^2\ + (2 - 5)^2\ + (-6 - 5)^2\ + \\
& \qquad
(0 - 5)^2\ +\ (13 - 5)^2\ +\ (9 - 5)^2\ +\ (-2 - 5)^2 \\[1em]
&= (3.2)^2\ + (-2.8)^2\ + (-7.8)^2\ + (4.2)^2\ + (3.2)^2\ + \\
& \qquad
(5)^2\ + (2)^2\ + (-1)^2\ + (8)^2\ + (-3)^2\ + (-11)^2\ + \\
& \qquad
(-5)^2\ +\ (8)^2\ +\ (4)^2\ +\ (-7)^2 \\[1em]
&= (10.24)\ + (7.84)\ + (60.84)\ + (17.64)\ + (10.24)\ + \\
& \qquad
(25)\ + (4)\ + (1)\ + (64)\ + (9)\ + (121)\ + \\
& \qquad
(25)\ +\ (64)\ +\ (16)\ +\ (49) \\[1em]
&= 106.8\ + 224\ + 105 \\[1em]
&= 484.8 \\[1em]
\end{align}
$$
From these calculations, the within sum of squares is SSW = 484.8.
Hide the R Code
There are two ways of performing these calculations in R. The method you select will depend on how your data are stored.
Method 1: Wide Format
Copy and paste the following code into your R script window, then run it from there.
## Import data
treatment1 = c(5, -1, -6, 6, 5)
treatment2 = c(10, 7, 4, 13, 2, -6)
treatment3 = c(0, 13, 9, -2)
## Change to Long Format
mmt = c( treatment1, treatment2, treatment3 )
grp = c( rep("trt1",5), rep("trt2",6), rep("trt3",4) )
## Model the data
mod = aov(mmt~grp)
summary(mod)
In the R output, the value of the sum of squares within is the number in the table under Sum Sq
and to the right of Residuals
. If you would like better precision for that value, or if you would like to have only that value, run the following code in addition to that above:
modSummary = summary(mod)
modSummary[[1]][2,2]
Here, the number outputted is the sum of squares between. How did you get the number? The summary table (also known as an ANOVA table) is just a table. Thus, the first line saves the table as the variable modSummary
the last line looks inside that variable, selects the ANOVA table ([[1]]
), and then selects the row 2, column 2 value.
Method 2: Long Format
Copy and paste the following code into your R script window, then run it from there.
## Import data
yields = c(5, -1, -6, 6, 5, 10, 7, 4, 13, 2, -6, 0, 13, 9, -2)
grp = c('trt1', 'trt1', 'trt1', 'trt1', 'trt1', 'trt2', 'trt2', 'trt2', 'trt2', 'trt2', 'trt2', 'trt3', 'trt3', 'trt3', 'trt3')
## Model the data
mod = aov(yields~grp)
summary(mod)
As discussed above, in the R output, the value of the sum of squares within is the number in the table under Sum Sq
and to the right of Residuals
. If you would like better precision for that value, or if you would like to have only that value, run the following code in addition to that above:
modSummary = summary(mod)
modSummary[[1]][2,2]
Here, the number outputted is the sum of squares between. How did you get the number? The summary table (also known as an ANOVA table) is just a table. Thus, the first line saves the table as the variable modSummary
the last line looks inside that variable, selects the ANOVA table ([[1]]
), and then selects the row 2, column 2 value.
Note: The difference between wide and long formats is this: In wide formatted data, each group has its own variable. In long formatted data, the group number is a variable.