The analyses on this page were performed on 62 students from the following four cohorts: 14 community college students from fall 2016, 25 high school students from fall 2016, 19 high school students from summer 2017, and 4 high school stuents from fall 2017. The 39 students who completed the immediate vs. delayed intervention study were excluded from these analyses because we requried these students to meet a threshold of 50.0% on the SM portions of the AMSA to participate in our study. This requirement would likely skew the effect SM would have on TI1 and lesson performance.
The code in the following analyses uses the following data frames: pretest.rds, lesson.rds, and posttestAll.rds. The raw data can be downloaded from the “Materials” tab, and the process used to get the raw data into the pretest.rds, lesson.rds, and posttestAll.rds format can be found in the “Data Process” tab.
library(lme4) #v 1.1.21
library(dplyr) #v 0.8.3
userIDs <- read.csv("combinedUserIDs.csv")
#exclude those who didn't meet threshold
noThreshold <- c(1719,1653,1735,1998,2038)
userIDs <- userIDs [! userIDs$TrigID %in% noThreshold,]
tahomaIDs <- userIDs[(userIDs$Group == "TaFall16") | (userIDs$Group == "TaSum17") | (userIDs$Group == "TaFall17"),]
tahomaIDs <- tahomaIDs$TrigID
repIDs <- userIDs[(userIDs$Group == "REP16"),]
repIDs <- repIDs$TrigID
combined62 <- c(tahomaIDs,repIDs)
posttestResults <- readRDS("posttestAll.rds")
#reduce to 62
posttestResults62 <- posttestResults[posttestResults$user %in% combined62,]
posttestResults62 <- posttestResults62 %>% group_by(user) %>% summarise(TrigID = mean(correct)*100)
pretestData <- readRDS("pretest.rds")
#reduce to 62
pretestResults62 <- pretestData[pretestData$user %in% combined62,]
sm62 <- pretestResults62 %>%
select("user", "MarkXYII", "MarkThetaII", "Right Triangle Trig III", "Right Triangle Trig V")
sm62$sm <- rowMeans(sm62[,2:5])
postSM62 <- merge(posttestResults62,sm62,by="user")
lmPostSM62 = lm(TrigID ~ sm, data=postSM62)
plot(TrigID ~ sm, data=postSM62,main="SM Score v. Trig ID Posttest")
abline(lm(TrigID ~ sm, data=postSM62))
summary(lmPostSM62)
##
## Call:
## lm(formula = TrigID ~ sm, data = postSM62)
##
## Residuals:
## Min 1Q Median 3Q Max
## -56.891 -15.656 7.755 17.124 36.013
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 54.660 9.585 5.703 3.83e-07 ***
## sm 0.234 0.129 1.814 0.0746 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.27 on 60 degrees of freedom
## Multiple R-squared: 0.052, Adjusted R-squared: 0.0362
## F-statistic: 3.291 on 1 and 60 DF, p-value: 0.07464
lessonData <- readRDS("lesson.rds")
##reduce to 62
lessonData62 <- lessonData [lessonData$user %in% combined62,]
##only look at first attempt data
lessonData <- lessonData[lessonData$trialNumber==1,]
chs14 <- c(1:2,5:13,15:22,23:29,30:36)
ch56 <- c(37:45,47:57)
ch14Data62 <- lessonData62 [ lessonData62$page_id %in% chs14,]
ch56Data62 <- lessonData62 [ lessonData62$page_id %in% ch56,]
lessonDataAverageAll62 <-
lessonData62 %>%
group_by(user) %>%
summarise(PercentCorrect = round(mean(firstCorrect)*100,1))
lessonDataAverageCh1462 <-
ch14Data62 %>%
group_by(user) %>%
summarise(PercentCorrect = round(mean(firstCorrect)*100,1))
lessonDataAverageCh5662 <-
ch56Data62 %>%
group_by(user) %>%
summarise(PercentCorrect = round(mean(firstCorrect)*100,1))
allData62 <- merge(lessonDataAverageAll62,sm62,by="user")
ch14DataSum62 <- merge(lessonDataAverageCh1462,sm62, by="user")
ch56DataSum62 <- merge(lessonDataAverageCh5662,sm62, by="user")
##predict lesson performance with sm score
lm1 = lm(PercentCorrect ~ sm, data=allData62)
lm2 = lm(PercentCorrect ~ sm, data=ch14DataSum62)
lm3 = lm(PercentCorrect ~ sm, data=ch56DataSum62)
plot(PercentCorrect ~ sm, data=ch14DataSum62,main="SM Score v. Ch 1-4 Performance")
abline(lm(PercentCorrect ~ sm, data=ch14DataSum62,main="Ch 1-4"))
summary(lm2)
##
## Call:
## lm(formula = PercentCorrect ~ sm, data = ch14DataSum62)
##
## Residuals:
## Min 1Q Median 3Q Max
## -43.947 -2.981 2.476 7.944 21.818
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 72.18654 4.85132 14.880 <2e-16 ***
## sm 0.14374 0.06529 2.202 0.0315 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.28 on 60 degrees of freedom
## Multiple R-squared: 0.07475, Adjusted R-squared: 0.05933
## F-statistic: 4.847 on 1 and 60 DF, p-value: 0.03155
plot(PercentCorrect ~ sm, data=ch56DataSum62, main="SM Score v. Ch 5-6 Performance")
abline(lm(PercentCorrect ~ sm, data=ch56DataSum62, main="Ch 5-6"))
summary(lm3)
##
## Call:
## lm(formula = PercentCorrect ~ sm, data = ch56DataSum62)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.533 -7.382 2.988 11.153 28.655
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 57.9944 5.6173 10.324 6.3e-15 ***
## sm 0.2534 0.0756 3.352 0.00139 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.22 on 60 degrees of freedom
## Multiple R-squared: 0.1577, Adjusted R-squared: 0.1437
## F-statistic: 11.23 on 1 and 60 DF, p-value: 0.001394
#####predict posttest results from lesson performance
ch14DataSum62 <- merge(lessonDataAverageCh1462,posttestResults62,by="user")
ch56DataSum62 <- merge(lessonDataAverageCh5662,posttestResults62,by="user")
allDataSum62 <- merge(lessonDataAverageAll62,posttestResults62,by="user")
names(ch14DataSum62)[2] <- "PercentCorrectCh14"
names(ch56DataSum62)[2] <- "PercentCorrectCh56"
lm5 = lm(TrigID ~ PercentCorrectCh14, data=ch14DataSum62)
plot(TrigID ~ PercentCorrectCh14, data=ch14DataSum62,main="Ch1-4 Lesson Performance v Posttest")
abline(lm(TrigID ~ PercentCorrectCh14, data=ch14DataSum62))
summary(lm5)
##
## Call:
## lm(formula = TrigID ~ PercentCorrectCh14, data = ch14DataSum62)
##
## Residuals:
## Min 1Q Median 3Q Max
## -53.518 -4.109 5.225 13.201 31.884
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -18.2632 17.4304 -1.048 0.299
## PercentCorrectCh14 1.0861 0.2094 5.188 2.65e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.71 on 60 degrees of freedom
## Multiple R-squared: 0.3096, Adjusted R-squared: 0.2981
## F-statistic: 26.91 on 1 and 60 DF, p-value: 2.65e-06
lm6 = lm(TrigID ~ PercentCorrectCh56, data=ch56DataSum62)
plot(TrigID ~ PercentCorrectCh56, data=ch56DataSum62,main="Ch5-6 Lesson Performance v Posttest")
abline(lm(TrigID ~ PercentCorrectCh56, data=ch56DataSum62))
summary(lm6)
##
## Call:
## lm(formula = TrigID ~ PercentCorrectCh56, data = ch56DataSum62)
##
## Residuals:
## Min 1Q Median 3Q Max
## -47.322 -4.875 2.062 11.145 31.028
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -10.7225 11.9044 -0.901 0.371
## PercentCorrectCh56 1.0795 0.1539 7.013 2.38e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 18.48 on 60 degrees of freedom
## Multiple R-squared: 0.4505, Adjusted R-squared: 0.4413
## F-statistic: 49.18 on 1 and 60 DF, p-value: 2.377e-09