Summary

This report describes an accuracy and precision competition within an upper division microbiology laboratory course. The classroom, which is divided into 6 tables (maximum of four students per table), was challegned into an accuracy and precision with pipetting techniques. This challenge was an extension from the accuracy and precision topics that were discuss in the laboratory classroom the same day of the competition. Students also had an online reading assignment, due before the laboratory class session, that covered pipetting techniques, and the professor discussed the technique before the competition as well. At a given time point during the class session, while the students were carrying out other laboratory exercises assigned for the class session, each table was called upon to pipette as follows:

  1. A microplate would be placed on an analytical balance
  2. Each student from each table, using the same p100 micropipette, would pipette 100 microliters of distilled water into the microplate three times. Volumes pipetted per table are found below
  3. After each 100 microliters pipetted, the mass reported by the analytical balance was recorded by the professor
  4. After all the tables pipetted accordingly, the professor calculated the accuracy (as percent error) and the precission (as relative standard deviation) per table. Calculations are found below.

Volumes pipetted per table

# pipetting volumes by each table (each student pipetted three times)
table1 <- c(100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100) 

table2 <- c(98, 99, 99, 100, 101, 123)

table3 <- c(100, 101, 101, 101, 101, 100, 100, 99, 100, 102, 101, 100)

table4 <- c(99, 103, 100, 99, 100, 100, 120, 99, 100)

table5 <- c(100, 101, 101, 100, 99, 99, 93, 100, 99, 98, 99, 102)

table6 <- c(100, 96, 100, 99, 101, 99, 100, 100, 99, 99, 99, 100)

Cleaning and preparing data for analysis

Given that not all tables had four students, in which case there would be 12 recorded volumes, the data was prepared such that NA would substitute missing values. For examples, 6 NAs would be included in table 2 and 3 in table 4. After the missing values were substituted with NA in order for all tables’ vectors to be the same length (n = 12), the vectors were combined into a table and this table converted into a data frame. This data frame would be then be used to calculate accuracy (as percent error) and precision (as relative standard deviation).

# calculate the maximum length for the tables vectors 
n <- max(length(table1), length(table2), length(table3), length(table4), length(table5), length(table6))

# make all tables' vectors the same length (missing value replaced with NA)
length(table1) <- n
length(table2) <- n
length(table3) <- n
length(table4) <- n
length(table5) <- n
length(table6) <- n

# combine all vectors into a table
pipetting_tables <- cbind(table1, table2, table3, table4, table5, table6)

# make sure the created table, pipetting_tables, is a data frame
pipetting_tables <- as.data.frame(pipetting_tables)

# create a tidy dataset (one variable per colum: tables, volumes)
library(tidyr)
pipetting_tables_long <- gather (pipetting_tables, tables, volumes, table1:table6)

Calculations

  1. accuracy (as percent error) = |(exact value - approximate value/exact value)| x 100
    1. exact value, in our case, would be 100 microliters
    2. approximate value would the average of the volumes pipetted per table
  2. precision (as relative standard deviation) = ((standard deviation per table)/approximate value) x 100
    1. standard deviation determines how much a set of values deviate from the average

Accuracy (as percent error)

# calculate accuracy (percent error) for each table 
library(plyr); library(dplyr)

accuracy <- pipetting_tables_long %>% group_by(tables) %>% summarise(prcnterr = (abs(100 - mean(volumes, na.rm=TRUE))/2)*100)

# print the table
library(pander)
pander(accuracy)
tables prcnterr
table1 0.00000
table2 166.66667
table3 25.00000
table4 111.11111
table5 37.50000
table6 33.33333

Precision (as relative standard deviation)

# calculate the precision for each table
precision <- pipetting_tables_long %>% group_by(tables) %>% summarise(precision = sd(volumes, na.rm=TRUE))

# prind precision table (as relative standard deviation)
pander(precision)
tables precision
table1 0.000000
table2 9.688481
table3 0.797724
table4 6.778233
table5 2.261335
table6 1.230915

Interpretations and Conclusion

As seen in the accuracy and precision calculations, students from table 1 were both the most accurate and precise in the pipetting competition. Its percent error (prcnterr) as well as the precision (reported as relative standard deviation) were both equal to 0.00. The second most precise and accurate “pipetters” belong to students from table 3. As discussed in the classroom by the professor, the most accurate and precise table would be awarded bonus points towards one of the final summative assessment.

Although students may have interpreted this exercise solely from the competitive point of view, it also provides a scenario for them to stimulate and teach their peers, as well as learn from errors. It also provides the importance of proper pipetting techniques and how minor human errors may contribute to decreased accurate and precision of measurements. The professor will also invite students from table 1 to share their approach during the competition as well as advises with the pipetting technique.