# 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)