R code: Correlation and linear regression
#############
# Baayen's demo of different degrees of correlation
library(languageR)
mvrnormplot.fnc(r = -0.4)
mvrnormplot.fnc(r = 0.1)
mvrnormplot.fnc(r = 0.6)
mvrnormplot.fnc(r = 0.95)
###############
# Hinton's study time data p.265
studytimedata = data.frame(study.time=c(40,43,18,10,25,33,27,17,30,47),exam.score=c(58,73,56,47,58,54,45,32,68,69))
plot(studytimedata[,1:2])
#Calculating pearson's r via z-scores
n = length(studytimedata$exam.score)
# mean study time
mean.studytime = mean(studytimedata$study.time)
# standard deviation: use population standard deviation, not sample standard deviation
sd.studytime = sqrt(sum((studytimedata$study.time - mean.studytime)**2) / n)
studytimedata$study.time.z = (studytimedata$study.time - mean.studytime)/sd.studytime
# mean and SD for exam score
mean.examscore = mean(studytimedata$exam.score)
sd.examscore = sqrt(sum((studytimedata$exam.score - mean.examscore)**2) / n)
studytimedata$exam.score.z = (studytimedata$exam.score - mean.examscore) / sd.examscore
par(mfrow = c(2,1)
plot(studytimedata[,1:2])
plot(studytimedata[,3:4])
r = sum(studytimedata$study.time.z * studytimedata$exam.score.z)/n
df = n -2
#Or use the cor command
cor(studytimedata$study.time,studytimedata$exam.score)
# Is this correlation significantly different from zero?
cor.test(studytimedata$study.time,studytimedata$exam.score)
# practical significance: What percentage of the variance in the data is explained by the correlation?
r**2
# When you don't have interval data,
# use Spearman's rho, which is
# Pearson's r on the ranks of the values
# rather than on the values themselves
# say we have a subjective attention score by the teacher
studytimedata$subjectivescore = c(90, 95, 50, 50, 60, 65, 68, 45, 70, 90)
cor.test(studytimedata$exam.score, studytimedata$subjectivescore, method = "spearman", exact = F)
# Spearman's rank correlation rho
#
# data: studytimedata$exam.score and studytimedata$subjectivescore
# S = 35.3205, p-value = 0.007031
# alternative hypothesis: true rho is not equal to 0
# sample estimates:
# rho
# 0.7859364
# regression model Y = A + B*X
lm(studytimedata$exam.score ~ studytimedata$study.time)