R Code

# AUTHOR: Rein Otsason # TEAM: Samuel Buckstein, Natalie Landon-Brace, Rein Otsason sink("statsresults.txt", split=TRUE, append=FALSE) # Import the raw data data <- read.csv("statsdata.csv", header=TRUE, sep=",", na.strings = "x") # Data with misses replaced with the penalty value data.penalty <- data data.penalty[is.na(data.penalty)] <- 150 # Penalty for missing; arbitrary # Accuracy metric -- simple average of the 5 shots accuracy <- (data.penalty$Shot1 + data.penalty$Shot2 + data.penalty$Shot3 + data.penalty$Shot4 + data.penalty$Shot5) / 5 data.accuracy <- data.frame(data, accuracy) # Vectors of time data times.10 <- data$Time[which(data$Distance == 10)] times.20 <- data$Time[which(data$Distance == 20)] times.30 <- data$Time[which(data$Distance == 30)] # Vectors of accuracy data accuracy.10 <- data.accuracy$accuracy[which(data.accuracy$Distance == 10)] accuracy.20 <- data.accuracy$accuracy[which(data.accuracy$Distance == 20)] accuracy.30 <- data.accuracy$accuracy[which(data.accuracy$Distance == 30)] ## Time data analysis # Test for normality of time data print("Shapiro-Wilks results for time data: ") shapiro.test(times.10) shapiro.test(times.20) shapiro.test(times.30) # Test homogeneity of variances var.test(times.10, times.20) # Between 10 m and 20 m var.test(times.10, times.30) # Between 10 m and 30 m var.test(times.20, times.30) # Between 20 m and 30 m # Two-sample Student's t-test, assuming equal variance and independence t.test(times.10, times.20, var.equal=TRUE, paired=TRUE) t.test(times.10, times.30, var.equal=TRUE, paired=FALSE) t.test(times.20, times.30, var.equal=TRUE, paired=FALSE) ## Accuracy data analysis # Test for normality of accuracy data print("Shapiro-Wilks results for accuracy data:") shapiro.test(accuracy.10) shapiro.test(accuracy.20) shapiro.test(accuracy.30) # Test homogeneity of variances print("F-test for homogeneity of variances:") var.test(accuracy.10, accuracy.20) var.test(accuracy.10, accuracy.30) var.test(accuracy.20, accuracy.30) # Two-sample Student's t-test t.test(accuracy.10, accuracy.20, var.equal=FALSE, paired=TRUE) t.test(accuracy.10, accuracy.30, var.equal=FALSE, paired=FALSE) t.test(accuracy.20, accuracy.30, var.equal=TRUE, paired=FALSE) ## Summary statistics print("Accuracy, 10 m:") print(sprintf("Mean: %f", mean(accuracy.10))) print(sprintf("variance: %f", var(accuracy.10))) print("Accuracy, 20 m:") print(sprintf("Mean: %f", mean(accuracy.20))) print(sprintf("variance: %f", var(accuracy.20))) print("Accuracy, 30 m:") print(sprintf("Mean: %f", mean(accuracy.30))) print(sprintf("variance: %f", var(accuracy.30))) print("Time, 10 m:") print(sprintf("Mean: %f", mean(times.10))) print(sprintf("variance: %f", var(times.10))) print("Time, 20 m:") print(sprintf("Mean: %f", mean(times.20))) print(sprintf("variance: %f", var(times.20))) print("Time, 30 m:") print(sprintf("Mean: %f", mean(times.30))) print(sprintf("variance: %f", var(times.30))) sink() png(filename="experience_boxplot.png") boxplot(accuracy~Experience, data=data.accuracy, main="Accuracy compared with experience", xlab="Experience", ylab="Accuracy (lower is better)") dev.off()