############################################# ### MACKEREL ELECTRICAL STUNNING ANALYSIS ### ############################################# #SET-UP ENVIRONMENT sessionInfo() rm(list = ls()) par(mfrow=c(1,1)) #IMPORT DATASET setwd("") # user to set working directory data <- read.table(file = "", header = TRUE,dec = ".") # user to enter data file name str(data) #--------------------------------------------# #CALCULATE SUMMARY STATS Mean <- aggregate(data$Index, by=list(data$Assessment_time) , mean) ; colnames(Mean)=c("Time" , "Mean") SD <- aggregate(data$Index, by=list(data$Assessment_time), sd) ; colnames(SD)=c("Time" , "SD") n <- aggregate(data$Index, by=list(data$Assessment_time), FUN = length) ; colnames(n)=c("Time" , "n") #MERGE SUMMARY STATS INTO A DF MyData <- merge(Mean , SD , by.x=1 , by.y=1) MyData <- merge(MyData , n , by.x=1 , by.y=1) MyData <- MyData[-c(9, 10, 11, 12), ] MyData #--------------------------------------------# #CALCULATE 95% CI FOR MEANS USING BOOTSTRAPPING #MAKE DIFFERENCE OBJECTS FOR DIFFERENT TIME POINTS Time0 <- data[data$Assessment_time == 0,] Time1 <- data[data$Assessment_time == 1,] Time2 <- data[data$Assessment_time == 2,] Time3 <- data[data$Assessment_time == 3,] Time4 <- data[data$Assessment_time == 4,] Time5 <- data[data$Assessment_time == 5,] Time6 <- data[data$Assessment_time == 6,] #CREATE BOOT OBJECTS library(boot) My0Boot <- boot(Time0$Index,function(x,i) mean(x[i]),R=10000) My1Boot <- boot(Time1$Index,function(x,i) mean(x[i]),R=10000) My2Boot <- boot(Time2$Index,function(x,i) mean(x[i]),R=10000) My3Boot <- boot(Time3$Index,function(x,i) mean(x[i]),R=10000) My4Boot <- boot(Time4$Index,function(x,i) mean(x[i]),R=10000) My5Boot <- boot(Time5$Index,function(x,i) mean(x[i]),R=10000) My6Boot <- boot(Time6$Index,function(x,i) mean(x[i]),R=10000) #CALCULATE BOOTSTRAPPPED CI's boot.ci(My0Boot,conf = 0.95,type = c("perc")) boot.ci(My1Boot,conf = 0.95,type = c("perc")) boot.ci(My2Boot,conf = 0.95,type = c("perc")) boot.ci(My3Boot,conf = 0.95,type = c("perc")) boot.ci(My4Boot,conf = 0.95,type = c("perc")) boot.ci(My5Boot,conf = 0.95,type = c("perc")) boot.ci(My6Boot,conf = 0.95,type = c("perc")) #ADD UPPER AND LOWER CI AS NEW OBJECTS CIDo <- c(1,NA,0,0.0145,0,0,0,0) CIUp <- c(1,NA,0.0667,0.1159,0.0417,0.0764,0.06,0.0417) #ADD CI's TO MYDATA MyData <- cbind(MyData, CIDo) MyData <- cbind(MyData, CIUp) MyData #--------------------------------------------# #PLOTTING #REMOVE VALUES PAST 6mins FROM DATASET data2 <- data[!(data$Assessment_time > 6),] #MAKE TIME INTO DISCRETE AXIS FOR PLOTTING MyData$Time <- as.factor(MyData$Time) data2$Assessment_time <- as.factor(data2$Assessment_time) #RENAME LEVELS levels(MyData$Time)[levels(MyData$Time)=="-1"] <- "Not stunned" levels(data2$Assessment_time)[levels(data2$Assessment_time)=="-1"] <- "Not stunned" library(ggplot2) p <- ggplot(MyData, aes(x=Time,y=Mean)) p <- p + geom_jitter(data = data2, aes(Assessment_time, Score),color="grey",alpha=0.8,size=1,width=0.1,height=0) # raw data in background p <- p + geom_errorbar(data = MyData, aes(ymin=CIDo,ymax=CIUp),width=0.2, size=0.5, color="grey40") # error bars p <- p + geom_point(data = MyData, aes(Time,Mean), size=1, color="grey40") # mean values p <- p + theme_bw() p <- p + labs(x = "Time post stunning (mins)", y = "Consciousness Index ") p <- p + theme(axis.text=element_text(size=8)) # axis labels size p <- p + theme(axis.title=element_text(size=8)) # axis title size p <- p + scale_y_continuous(limits = c(0, 1)) p <- p + geom_vline(aes(xintercept = which(levels(Time) %in% '0')),color="grey 40",size=0.75,linetype="dashed") p <- p + theme(axis.title.y = element_text(margin = margin(t = 0, r = 10, b = 0, l = 0))) p <- p + theme(axis.title.x = element_text(margin = margin(t = 10, r = 0, b = 0, l = 0))) p ggsave("Fig2.tiff", height=4.446, width=5.2, units='in',dpi=300)