Chapter 8 | Exercise 2
‘Methods of teaching French’
The data in Table 8.1 represent fictitious test scores of students who were taught French as a foreign language according to two methods, a communicative one and a traditional grammar-based one. The students were native speakers of Italian and German. Which method was more successful? Is there a difference between the speakers of the two languages? Is there an interaction between the mother tongue and the method?
Import the data in R as a data frame.
Compute the mean test scores for each teaching method by the native language and visualize the differences in an interaction plot. Is there an interaction between native language and method?
Perform factorial ANOVA. Are there significant differences between the methods and the native languages with regard to the test score? Is the interaction significant?
Copy the data to a spreadsheet and save as a text file. Import the data as a data frame called
french by using
read.table() or its alternatives. See Chapter 2, Section 2.6.1.
Use the function
> aggregate(test ~ method + lang, data = french, FUN = mean) method lang test 1 commun ger 7.55 2 grammar ger 5.94 3 commun ita 8.69 4 grammar ita 7.85 > interaction.plot(french$method, french$lang, french$test)
The native Italian speakers overall perform better than the German speakers. For both languages, the communicative teaching method yields higher scores. However, there seems to be a mild interaction: for the German speakers, the difference between the methods is greater than for the Italian speakers.
The design is balanced, and the variance is homogeneous, according to the Levene test:
> library(car) > leveneTest(test ~ method*lang, data = french) Levene's Test for Homogeneity of Variance (center = median) Df F value Pr(>F) group 3 0.6695 0.5763 36
This means that you can use a parametric test. First, you should change the coding of both variables to sum contrasts:
> contrasts(french$method) <- contr.sum #alternatively, <-c(-1, 1) > contrasts(french$lang) <- contr.sum > french.aov <- aov(test ~ method*lang, data = french)
Now you can perform the Type-III ANOVA:
> Anova(french.aov, type = "III") Anova Table (Type III tests) Response: test Sum Sq Df F value Pr(>F) (Intercept) 2254.50 1 636.4505 < 2e-16 *** method 15.01 1 4.2363 0.04686 * lang 23.26 1 6.5653 0.01473 * method:lang 1.48 1 0.4184 0.52182 Residuals 127.52 36 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The results suggest that both the method and the native language have significant effects, but their interaction is not significant.