setwd("~/Research/02b Neural Network Research UMR/Data + Analysis/Clustering_Xavier")
umr = read.csv("UMR_all_for_R.csv",header = TRUE)
#remove if PLC or NS is NaN
umr = umr[!is.na(umr$PLC),]
umr = umr[!is.na(umr$NS),]
umrs1 = umr[which(umr$Survey=="ES_Chemical_Reaction"),]
umrs2 = umr[which(umr$Survey=="ES_Glucosidase"),]
umrs3 = umr[which(umr$Survey=="Nucleic_Acids"),]
umrs4 = umr[which(umr$Survey=="Oxygen_Binding"),]
umrs5 = umr[which(umr$Survey=="Protein_Structure"),]

expert = read.csv("Experts_all_for_R.csv",header = TRUE)
exs1 = expert[which(expert$Survey=="ES_Chemical_Equation"),]
exs2 = expert[which(expert$Survey=="ES_Glucosidase"),]
exs3 = expert[which(expert$Survey=="Nucleic_Acids"),]
exs4 = expert[which(expert$Survey=="Oxygen_Binding"),]
exs5 = expert[which(expert$Survey=="Protein_Strcuture"),]

others = read.csv("Dennison_UNL_UT_all_for_R.csv",header = TRUE)
#remove if PLC or NS is NaN
others = others[!is.na(others$PLC),]
others = others[!is.na(others$NS),]
otherss1 = others[which(others$Survey=="ES_Chemical_Reaction"),]
otherss2 = others[which(others$Survey=="ES_Glucosidase"),]
otherss3 = others[which(others$Survey=="Nucleic_Acids"),]
otherss4 = others[which(others$Survey=="Oxygen_Binding"),]
otherss5 = others[which(others$Survey=="Protein_Structure"),]

1 Plotting

1.1 ES Chemical Reaction

We can use the survey “ES Chemical Reaction” to test different variables.

#plot(exs1$PLC,exs1$NS,col=factor(expert$Survey))
par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES Chem_Rx - NS vs PLC",ylab="NS",xlab="PLC")
points(umrs1$PLC,umrs1$NS,col="red",cex=0.2,pch=c(20))
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES Chem_Rx - NS vs PLC",yaxt='n',xlab="PLC",ylab="NS")
points(otherss1$PLC,otherss1$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs1$PLC,exs1$Coherency,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES Chem_Rx - Coher vs PLC")
points(umrs1$PLC,umrs1$Coherency,col="red",cex=0.2,pch=c(20))
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs1$PLC,exs1$Coherency,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES Chem_Rx - Coher vs PLC",yaxt='n',xlab="PLC",ylab="Coherency")
points(otherss1$PLC,otherss1$Coherency,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

Initial conclusion about indicators

  • PLC seem to clearly distinguish experts from students (with significant overlap though)
  • NS does not distinguish as much as PLC, but the highest score and median is still significantly different between experts and students
  • Coherency does not seem to distinguish well and we will discard it in the subsequent analysis

Meaning of PLC and NS * PLC: path length correlation. How connected are two nodes. The closer to one more connected. Compared to expert. * NS: Neighborhood similarity. Compared to the experts.

What follows is just an exploration to other demographic indicators to see how PLC and NS distribute among the different populations.

1.1.1 By sex at birth

plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="By sex - UMR")
points(umrs1[umrs1$Sex_birth=="Male",]$PLC,umrs1[umrs1$Sex_birth=="Male",]$NS,col="red",cex=0.2)
points(umrs1[umrs1$Sex_birth=="Female",]$PLC,umrs1[umrs1$Sex_birth=="Female",]$NS,col="black",cex=0.2)
legend("topleft", legend=c("Experts", "UMR-male","UMR-female"), col=c("blue", "red","black"), lty=1:1, cex=0.8,pch=c(20))

plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="By sex - Other campuses",yaxt='n')
points(otherss1[otherss1$Sex_birth=="Male",]$PLC,otherss1[otherss1$Sex_birth=="Male",]$NS,col="red",cex=0.2)
points(otherss1[otherss1$Sex_birth=="Female",]$PLC,otherss1[otherss1$Sex_birth=="Female",]$NS,col="black",cex=0.2)
legend("topleft", legend=c("Experts", "Others-male","Others-female"), col=c("blue", "red","black"), lty=1:1, cex=0.8,pch=c(20))

1.1.2 By year

plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="By year - UMR")
points(umrs1[umrs1$Year=="First year",]$PLC,umrs1[umrs1$Year=="First year",]$NS,col="red",cex=0.2)
points(umrs1[umrs1$Year=="Second year",]$PLC,umrs1[umrs1$Year=="Second year",]$NS,col="black",cex=0.2)
points(umrs1[umrs1$Year=="Third year",]$PLC,umrs1[umrs1$Year=="Third year",]$NS,col="green",cex=0.2)
points(umrs1[umrs1$Year=="Fourth year",]$PLC,umrs1[umrs1$Year=="Fourth year",]$NS,col="yellow",cex=0.2)
legend("topleft", legend=c("Experts", "1st year","2nd year","3rd year","4th year"), col=c("blue", "red","black","green","yellow"), lty=1:1, cex=0.8,pch=c(20))

plot(exs1$PLC,exs1$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="By year - Other campuses",yaxt='n')
points(otherss1[otherss1$Year=="First year/Freshman",]$PLC,otherss1[otherss1$Year=="First year/Freshman",]$NS,col="red",cex=0.2)
points(otherss1[otherss1$Year=="Second year/Sophomore",]$PLC,otherss1[otherss1$Year=="Second year/Sophomore",]$NS,col="black",cex=0.2)
points(otherss1[otherss1$Year=="Third year/Junior",]$PLC,otherss1[otherss1$Year=="Third year/Junior",]$NS,col="green",cex=0.2)
points(otherss1[otherss1$Year=="Fourth year/Senior",]$PLC,otherss1[otherss1$Year=="Fourth year/Senior",]$NS,col="yellow",cex=0.2)
legend("topleft", legend=c("Experts", "1st year","2nd year","3rd year","4th year"), col=c("blue", "red","black","green","yellow"), lty=1:1, cex=0.8,pch=c(20))

1.2 ES Glucosidase

par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs2$PLC,exs2$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES_Glucosidase")
points(umrs2$PLC,umrs2$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs2$PLC,exs2$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="ES_Glucosidase")
points(otherss2$PLC,otherss2$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

1.3 Nucleic Acids

par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs3$PLC,exs3$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Nucleic_Acids")
points(umrs3$PLC,umrs3$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs3$PLC,exs3$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Nucleic_Acids")
points(otherss3$PLC,otherss3$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

1.4 Oxygen Binding

par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs4$PLC,exs4$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Oxygen_Binding")
points(umrs4$PLC,umrs4$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs4$PLC,exs4$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Oxygen_Binding")
points(otherss4$PLC,otherss4$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

1.5 Protein Structure

par(mfrow=c(1,2), oma = c(5,4,4,2) + 0.1, mar = c(0,0,1,1) + 0.1)
plot(exs5$PLC,exs5$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Protein_Structure")
points(umrs5$PLC,umrs5$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "UMR"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))
plot(exs5$PLC,exs5$NS,col="blue",pch=19,xlim = c(-0.4,1),ylim = c(-0.4,1),main="Protein_Structure")
points(otherss5$PLC,otherss5$NS,col="red",cex=0.2)
legend("topleft", legend=c("Experts", "Others"), col=c("blue", "red"), lty=1:1, cex=0.8,pch=c(20))

2 Clustering NS-PLC pairs

df <- matrix(data=c(umrs1$PLC,umrs1$NS),ncol=2)
clusters1 = kmeans(scale(df[,1:2]),3)$cluster
plot(umrs1$PLC,umrs1$NS,col=clusters1,main = "ES Chemical reaction - NS vs PLC - UMR 3 clusters",ylab="NS",xlab="PLC")

clusters1 = kmeans(scale(df[,1:2]),4)$cluster
plot(umrs1$PLC,umrs1$NS,col=clusters1,main = "ES Chemical reaction - NS vs PLC - UMR 4 clusters",ylab="NS",xlab="PLC")

df = matrix(data=c(as.numeric(otherss1$PLC),as.numeric(otherss1$NS)),ncol=2)
#df = df[complete.cases(df),]
clusters1 = kmeans(scale(df[,1:2]),3)$cluster
plot(otherss1$PLC,otherss1$NS,col=clusters1,main = "ES Chemical reaction - NS vs PLC - External campuses - 3 clusters",ylab="NS",xlab="PLC")

clusters1 = kmeans(scale(df[,1:2]),4)$cluster
plot(otherss1$PLC,otherss1$NS,col=clusters1,main = "ES Chemical reaction - NS vs PLC - External campuses - 4 clusters",ylab="NS",xlab="PLC")

3 Demographics of clusters (only biochem)

We are trimming all courses that are not biochemistry 1. We are only making three clusters. The High performers (HP), Intermediate performers (IP), and Low performers (LP). These labels are assigned to the groups by ranking the average PLC. Careful, if a PLC/NS distribution is mostly changing in the NS direction, the HP/IP/LP label may be wrongly assigned.

library(psych)

analyzeBiochemClusters = function(umrs1,otherss1){
  allBiochem = data.frame(matrix(ncol = 8,nrow=0))
  myCols = c("Institution", "Course_collected", "Deidentifier","Sex_birth","Race_ethnicity","Coherency","NS","PLC")
  colnames(allBiochem) = myCols

  allBiochem = rbind(allBiochem,otherss1[myCols])

  #remove UT/BIO206 and all Dennison and non-Bioc3321 at UMR
  allBiochem = allBiochem[! grepl("Dennison",allBiochem$Institution ),]
  allBiochem = allBiochem[! grepl("BIO206",allBiochem$Course_collected),]
  tempo = umrs1[grep("BIOC3321",umrs1$Course_collected),]
  allBiochem = rbind(allBiochem,tempo[myCols])
  allBiochem$Coherency = as.numeric(allBiochem$Coherency)
  allBiochem$NS = as.numeric(allBiochem$NS)
  allBiochem$PLC = as.numeric(allBiochem$PLC)
  allBiochem$race_binary <- ifelse(allBiochem$Race_ethnicity == "White/Caucasian" , 'White', "Non-white")
   
  #Cluster
  df <- matrix(data=c(allBiochem$PLC,allBiochem$NS),ncol=2)
  allBiochem$cluster = kmeans(scale(df[,1:2]),3)$cluster
  
  #this is clumsy but I have to programmatically find the cluster number corresponding to HP, LP, and IP
  #Using the PLC to make sure its working
  meanPLCbyCluster = describeBy(allBiochem$PLC,allBiochem$cluster,mat=TRUE)
  maxPLC = max(meanPLCbyCluster$mean)
  HPgroup = as.numeric(meanPLCbyCluster[which(meanPLCbyCluster$mean==maxPLC),]$group1)
  minPLC = min(meanPLCbyCluster$mean)
  LPgroup = as.numeric(meanPLCbyCluster[which(meanPLCbyCluster$mean==minPLC),]$group1)
  if (HPgroup + LPgroup == 3 ){IPgroup = 3}
  if (HPgroup + LPgroup == 4 ){IPgroup = 2}
  if (HPgroup + LPgroup == 5 ){IPgroup = 1}
  allBiochem$clusterLetter = ifelse(allBiochem$cluster == HPgroup, "HP",
                                    ifelse(allBiochem$cluster == LPgroup,"LP",
                                           ifelse(allBiochem$cluster == IPgroup,"IP","Oops")))  
  
  return(allBiochem)
}

buildTables = function(allBiochem){
  mata<-describeBy(allBiochem$PLC,allBiochem$clusterLetter,mat=TRUE,digits = 2)
  print(knitr::kable(mata[,c(2,4,5,6,7,8,9,10,11,12)] ,  caption = "PLC by cluster group"))
  mata<-describeBy(allBiochem$PLC,allBiochem$Institution,mat=TRUE,digits = 2)
  print(knitr::kable(mata[,c(2,4,5,6,7,8,9,10,11,12)] ,  caption = "PLC by institution"))
  mata<-describeBy(allBiochem$PLC,allBiochem$Course_collected,mat=TRUE,digits = 2)
  print(knitr::kable(mata[,c(2,4,5,6,7,8,9,10,11,12)] ,  caption = "PLC by course"))
  mata<-describeBy(allBiochem$PLC,allBiochem$Sex_birth,mat=TRUE,digits = 2)
  print(knitr::kable(mata[,c(2,4,5,6,7,8,9,10,11,12)] ,  caption = "PLC by Sex"))
  mata<-describeBy(allBiochem$PLC,allBiochem$race_binary,mat=TRUE,digits = 2)
  print(knitr::kable(mata[,c(2,4,5,6,7,8,9,10,11,12)] ,  caption = "PLC by Race"))
}
calcStats = function(allBiochem){
   for (course in unique(allBiochem$Course_collected)){
     header = paste("<b>Results for course: ",course,"</b></br></br>")
     cat(header)
     umrTot = sum(allBiochem$Course_collected == course )
     umrHP = sum(allBiochem$Course_collected == course & allBiochem$clusterLetter == "HP")
     umrIP = sum(allBiochem$Course_collected == course & allBiochem$clusterLetter == "IP")
     umrLP = sum(allBiochem$Course_collected == course & allBiochem$clusterLetter == "LP")
     
     umrMale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Male")
     umrHPmale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Male" & allBiochem$clusterLetter == "HP")
     umrIPmale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Male" & allBiochem$clusterLetter == "IP")
     umrLPmale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Male" & allBiochem$clusterLetter == "LP")
      
     umrFemale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Female")
     umrHPfemale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Female" & allBiochem$clusterLetter == "HP")
     umrIPfemale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Female" & allBiochem$clusterLetter == "IP")
     umrLPfemale = sum(allBiochem$Course_collected == course & allBiochem$Sex_birth == "Female" & allBiochem$clusterLetter == "LP")
      
     umrWhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "White")
     umrHPWhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "White" & allBiochem$clusterLetter == "HP")
     umrIPWhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "White" & allBiochem$clusterLetter == "IP")
     umrLPWhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "White" & allBiochem$clusterLetter == "LP")
      
     umrNonwhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "Non-white")
     umrHPNonwhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "Non-white" & allBiochem$clusterLetter == "HP")
     umrIPNonwhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "Non-white" & allBiochem$clusterLetter == "IP")
     umrLPNonwhite = sum(allBiochem$Course_collected == course & allBiochem$race_binary == "Non-white" & allBiochem$clusterLetter == "LP")
     
     output = paste("<table >
<thead>
<tr>
  <th colspan='2'></th>
  <th colspan='2'>High Performers</th>
  <th colspan='2'>Intermediate Performers</th>
  <th colspan='2'>Low Performers</th>
  
</tr>
</thead>
<tbody>
  <tr>
    <td rowspan='5'>",course," </td>
    <td>Total N=", umrTot,"</td>
    <td colspan='2'>", signif(umrHP/umrTot*100,digits=2),"% </td>
    <td colspan='2'>", signif(umrIP/umrTot*100,digits=2),"%</td>
    <td colspan='2'>", signif(umrLP/umrTot*100,digits=2),"% </td>
  </tr>
  <tr>
    <td rowspan='2'>Sex: males N=",umrMale,"; females N=",umrFemale,"</td>
    <td>male</td>
    <td>female</td>
    <td>male</td>
    <td>female</td>
    <td>male</td>
    <td>female</td>
  </tr>
  <tr>
    <td>", signif(umrHPmale/umrMale*100,digits=2),"%</td>
    <td>", signif(umrHPfemale/umrFemale*100,digits=2),"%</td>
    <td>", signif(umrIPmale/umrMale*100,digits=2),"%</td>
    <td>", signif(umrIPfemale/umrFemale*100,digits=2),"%</td>
    <td>", signif(umrLPmale/umrMale*100,digits=2),"%</td>
    <td>", signif(umrLPfemale/umrFemale*100,digits=2),"%</td>
  </tr>
  <tr>
    <td rowspan='2'>Race: White N=",umrWhite,"; Non-white N=",umrNonwhite,"</td>
    <td>white</td>
    <td>non-white</td>
    <td>white</td>
    <td>non-white</td>
    <td>white</td>
    <td>non-white</td>
  </tr>
  <tr>
    <td>", signif(umrHPWhite/umrWhite*100,digits=2),"%</td>
    <td>", signif(umrHPNonwhite/umrNonwhite*100,digits=2),"%</td>
    <td>", signif(umrIPWhite/umrWhite*100,digits=2),"%</td>
    <td>", signif(umrIPNonwhite/umrNonwhite*100,digits=2),"%</td>
    <td>", signif(umrLPWhite/umrWhite*100,digits=2),"%</td>
    <td>", signif(umrLPNonwhite/umrNonwhite*100,digits=2),"%</td>
  </tr>
</tbody>
</table> ")
     cat(output)
   }
  
}

3.1 Survey 1: ES_Chemical_Reaction

#
allBiochem = analyzeBiochemClusters(umrs1,otherss1)
buildTables(allBiochem)
PLC by cluster group
group1 n mean sd median trimmed mad min max range
X11 HP 204 0.51 0.10 0.51 0.51 0.09 0.18 0.74 0.55
X12 IP 321 0.44 0.09 0.43 0.44 0.10 0.24 0.70 0.46
X13 LP 185 0.15 0.11 0.18 0.16 0.10 -0.18 0.38 0.57
PLC by institution
group1 n mean sd median trimmed mad min max range
X11 UMR 58 0.40 0.18 0.45 0.42 0.13 -0.18 0.67 0.85
X12 UNL 106 0.38 0.17 0.39 0.39 0.19 -0.12 0.66 0.78
X13 UT 546 0.38 0.17 0.41 0.40 0.16 -0.16 0.74 0.89
PLC by course
group1 n mean sd median trimmed mad min max range
X11 BCH339F 67 0.42 0.17 0.42 0.43 0.16 -0.06 0.71 0.77
X12 BCH339M 45 0.37 0.17 0.39 0.38 0.18 -0.08 0.69 0.77
X13 BCH369 434 0.38 0.17 0.41 0.39 0.16 -0.16 0.74 0.89
X14 BIOC3321 58 0.40 0.18 0.45 0.42 0.13 -0.18 0.67 0.85
X15 BIOC431 106 0.38 0.17 0.39 0.39 0.19 -0.12 0.66 0.78
PLC by Sex
group1 n mean sd median trimmed mad min max range
X11 Female 485 0.38 0.17 0.41 0.39 0.15 -0.12 0.74 0.86
X12 Male 224 0.39 0.18 0.41 0.41 0.18 -0.18 0.69 0.87
X13 Prefer not to answer 1 0.56 NA 0.56 0.56 0.00 0.56 0.56 0.00
PLC by Race
group1 n mean sd median trimmed mad min max range
X11 Non-white 446 0.37 0.17 0.40 0.38 0.17 -0.18 0.74 0.92
X12 White 264 0.41 0.17 0.43 0.42 0.15 -0.12 0.72 0.83
markerIntegers = as.integer(as.factor(allBiochem$Institution))
plot(allBiochem$PLC,allBiochem$NS,pch=allBiochem$clusterLetter,main = "ES_Chemical_Reaction - High(H), Intermediate(I), Low(L) performers",ylab="NS",xlab="PLC",col=markerIntegers)
legend("topleft", legend=unique(allBiochem$Institution), col=unique(markerIntegers), lty=1:1, cex=0.8)

paste("Institution with max PLC is ", allBiochem[which(allBiochem$PLC == max(allBiochem$PLC)),]$Institution)

[1] “Institution with max PLC is UT”

calcStats(allBiochem)
Results for course: BIOC431

High Performers Intermediate Performers Low Performers
BIOC431 Total N= 106 30 % 42 % 28 %
Sex: males N= 42 ; females N= 64 male female male female male female
36 % 27 % 43 % 41 % 21 % 33 %
Race: White N= 80 ; Non-white N= 26 white non-white white non-white white non-white
31 % 27 % 40 % 46 % 29 % 27 %
Results for course: BCH339F

High Performers Intermediate Performers Low Performers
BCH339F Total N= 67 28 % 52 % 19 %
Sex: males N= 26 ; females N= 41 male female male female male female
38 % 22 % 42 % 59 % 19 % 20 %
Race: White N= 19 ; Non-white N= 48 white non-white white non-white white non-white
26 % 29 % 74 % 44 % 0 % 27 %
Results for course: BCH339M

High Performers Intermediate Performers Low Performers
BCH339M Total N= 45 33 % 33 % 33 %
Sex: males N= 14 ; females N= 31 male female male female male female
43 % 29 % 21 % 39 % 36 % 32 %
Race: White N= 11 ; Non-white N= 34 white non-white white non-white white non-white
27 % 35 % 27 % 35 % 45 % 29 %
Results for course: BCH369

High Performers Intermediate Performers Low Performers
BCH369 Total N= 434 28 % 45 % 27 %
Sex: males N= 124 ; females N= 309 male female male female male female
27 % 29 % 45 % 45 % 28 % 26 %
Race: White N= 122 ; Non-white N= 312 white non-white white non-white white non-white
34 % 26 % 48 % 44 % 18 % 30 %
Results for course: BIOC3321

High Performers Intermediate Performers Low Performers
BIOC3321 Total N= 58 28 % 53 % 19 %
Sex: males N= 18 ; females N= 40 male female male female male female
50 % 18 % 39 % 60 % 11 % 22 %
Race: White N= 32 ; Non-white N= 26 white non-white white non-white white non-white
28 % 27 % 56 % 50 % 16 % 23 %

3.2 Survey 2: ES_Glucosidase

allBiochem = analyzeBiochemClusters(umrs2,otherss2)
buildTables(allBiochem)
PLC by cluster group
group1 n mean sd median trimmed mad min max range
X11 HP 194 0.54 0.10 0.56 0.55 0.09 0.23 0.80 0.57
X12 IP 361 0.47 0.09 0.47 0.47 0.10 0.28 0.70 0.42
X13 LP 155 0.17 0.12 0.19 0.18 0.12 -0.18 0.35 0.53
PLC by institution
group1 n mean sd median trimmed mad min max range
X11 UMR 58 0.44 0.17 0.46 0.46 0.14 -0.16 0.68 0.84
X12 UNL 106 0.42 0.18 0.44 0.43 0.17 -0.10 0.80 0.89
X13 UT 546 0.42 0.17 0.46 0.44 0.16 -0.18 0.74 0.92
PLC by course
group1 n mean sd median trimmed mad min max range
X11 BCH339F 67 0.47 0.16 0.50 0.48 0.18 -0.02 0.74 0.77
X12 BCH339M 45 0.42 0.16 0.42 0.42 0.18 0.06 0.70 0.64
X13 BCH369 434 0.42 0.17 0.46 0.43 0.15 -0.18 0.74 0.92
X14 BIOC3321 58 0.44 0.17 0.46 0.46 0.14 -0.16 0.68 0.84
X15 BIOC431 106 0.42 0.18 0.44 0.43 0.17 -0.10 0.80 0.89
PLC by Sex
group1 n mean sd median trimmed mad min max range
X11 Female 485 0.42 0.17 0.46 0.44 0.15 -0.16 0.79 0.95
X12 Male 224 0.43 0.19 0.46 0.45 0.17 -0.18 0.80 0.97
X13 Prefer not to answer 1 0.60 NA 0.60 0.60 0.00 0.60 0.60 0.00
PLC by Race
group1 n mean sd median trimmed mad min max range
X11 Non-white 446 0.41 0.18 0.45 0.43 0.16 -0.18 0.79 0.96
X12 White 264 0.45 0.16 0.47 0.46 0.16 -0.10 0.80 0.89
markerIntegers = as.integer(as.factor(allBiochem$Institution))
plot(allBiochem$PLC,allBiochem$NS,pch=allBiochem$clusterLetter,main = "ES_Glucosidase - High(H), Intermediate(I), Low(L) performers",ylab="NS",xlab="PLC",col=markerIntegers)
legend("topleft", legend=unique(allBiochem$Institution), col=unique(markerIntegers), lty=1:1, cex=0.8)

paste("Institution with max PLC is ", allBiochem[which(allBiochem$PLC == max(allBiochem$PLC)),]$Institution)

[1] “Institution with max PLC is UNL”

calcStats(allBiochem)
Results for course: BIOC431

High Performers Intermediate Performers Low Performers
BIOC431 Total N= 106 33 % 46 % 21 %
Sex: males N= 42 ; females N= 64 male female male female male female
38 % 30 % 45 % 47 % 17 % 23 %
Race: White N= 80 ; Non-white N= 26 white non-white white non-white white non-white
35 % 27 % 42 % 58 % 22 % 15 %
Results for course: BCH339F

High Performers Intermediate Performers Low Performers
BCH339F Total N= 67 27 % 55 % 18 %
Sex: males N= 26 ; females N= 41 male female male female male female
31 % 24 % 54 % 56 % 15 % 20 %
Race: White N= 19 ; Non-white N= 48 white non-white white non-white white non-white
42 % 21 % 53 % 56 % 5.3 % 23 %
Results for course: BCH339M

High Performers Intermediate Performers Low Performers
BCH339M Total N= 45 31 % 47 % 22 %
Sex: males N= 14 ; females N= 31 male female male female male female
29 % 32 % 50 % 45 % 21 % 23 %
Race: White N= 11 ; Non-white N= 34 white non-white white non-white white non-white
18 % 35 % 45 % 47 % 36 % 18 %
Results for course: BCH369

High Performers Intermediate Performers Low Performers
BCH369 Total N= 434 26 % 51 % 23 %
Sex: males N= 124 ; females N= 309 male female male female male female
24 % 26 % 52 % 51 % 24 % 23 %
Race: White N= 122 ; Non-white N= 312 white non-white white non-white white non-white
24 % 27 % 59 % 48 % 17 % 26 %
Results for course: BIOC3321

High Performers Intermediate Performers Low Performers
BIOC3321 Total N= 58 26 % 57 % 17 %
Sex: males N= 18 ; females N= 40 male female male female male female
28 % 25 % 56 % 57 % 17 % 18 %
Race: White N= 32 ; Non-white N= 26 white non-white white non-white white non-white
34 % 15 % 53 % 62 % 12 % 23 %

3.3 Survey 3: Nucleic_Acids

allBiochem = analyzeBiochemClusters(umrs3,otherss3)
buildTables(allBiochem)
PLC by cluster group
group1 n mean sd median trimmed mad min max range
X11 HP 75 0.37 0.11 0.36 0.37 0.12 0.16 0.61 0.45
X12 IP 163 0.23 0.10 0.22 0.23 0.08 0.03 0.92 0.89
X13 LP 153 0.03 0.10 0.04 0.04 0.10 -0.33 0.23 0.57
PLC by institution
group1 n mean sd median trimmed mad min max range
X11 UMR 53 0.14 0.15 0.14 0.14 0.13 -0.17 0.56 0.72
X12 UNL 105 0.19 0.15 0.19 0.19 0.14 -0.18 0.60 0.78
X13 UT 233 0.18 0.18 0.19 0.18 0.18 -0.33 0.92 1.25
PLC by course
group1 n mean sd median trimmed mad min max range
X11 BCH339F 54 0.21 0.17 0.24 0.22 0.15 -0.33 0.59 0.93
X12 BCH339M 39 0.24 0.20 0.27 0.25 0.18 -0.23 0.61 0.84
X13 BCH369 140 0.16 0.17 0.15 0.15 0.17 -0.29 0.92 1.21
X14 BIOC3321 53 0.14 0.15 0.14 0.14 0.13 -0.17 0.56 0.72
X15 BIOC431 105 0.19 0.15 0.19 0.19 0.14 -0.18 0.60 0.78
PLC by Sex
group1 n mean sd median trimmed mad min max range
X11 Female 256 0.18 0.16 0.18 0.17 0.15 -0.23 0.92 1.15
X12 Male 135 0.19 0.19 0.18 0.19 0.21 -0.33 0.60 0.94
PLC by Race
group1 n mean sd median trimmed mad min max range
X11 Non-white 210 0.16 0.17 0.17 0.16 0.18 -0.33 0.59 0.93
X12 White 181 0.21 0.17 0.19 0.20 0.16 -0.24 0.92 1.16
markerIntegers = as.integer(as.factor(allBiochem$Institution))
plot(allBiochem$PLC,allBiochem$NS,pch=allBiochem$clusterLetter,main = "Nucleic_Acids - High(H), Intermediate(I), Low(L) performers",ylab="NS",xlab="PLC",col=markerIntegers)
legend("topleft", legend=unique(allBiochem$Institution), col=unique(markerIntegers), lty=1:1, cex=0.8)

paste("Institution with max PLC is ", allBiochem[which(allBiochem$PLC == max(allBiochem$PLC)),]$Institution)

[1] “Institution with max PLC is UT”

calcStats(allBiochem)
Results for course: BIOC431

High Performers Intermediate Performers Low Performers
BIOC431 Total N= 105 27 % 38 % 35 %
Sex: males N= 41 ; females N= 64 male female male female male female
29 % 25 % 37 % 39 % 34 % 36 %
Race: White N= 79 ; Non-white N= 26 white non-white white non-white white non-white
29 % 19 % 42 % 27 % 29 % 54 %
Results for course: BCH339F

High Performers Intermediate Performers Low Performers
BCH339F Total N= 54 22 % 50 % 28 %
Sex: males N= 20 ; females N= 34 male female male female male female
20 % 24 % 40 % 56 % 40 % 21 %
Race: White N= 16 ; Non-white N= 38 white non-white white non-white white non-white
31 % 18 % 44 % 53 % 25 % 29 %
Results for course: BCH339M

High Performers Intermediate Performers Low Performers
BCH339M Total N= 39 28 % 38 % 33 %
Sex: males N= 14 ; females N= 25 male female male female male female
21 % 32 % 29 % 44 % 50 % 24 %
Race: White N= 9 ; Non-white N= 30 white non-white white non-white white non-white
44 % 23 % 22 % 43 % 33 % 33 %
Results for course: BCH369

High Performers Intermediate Performers Low Performers
BCH369 Total N= 140 12 % 43 % 45 %
Sex: males N= 45 ; females N= 95 male female male female male female
20 % 8.4 % 27 % 51 % 53 % 41 %
Race: White N= 48 ; Non-white N= 92 white non-white white non-white white non-white
19 % 8.7 % 40 % 45 % 42 % 47 %
Results for course: BIOC3321

High Performers Intermediate Performers Low Performers
BIOC3321 Total N= 53 13 % 40 % 47 %
Sex: males N= 15 ; females N= 38 male female male female male female
13 % 13 % 47 % 37 % 40 % 50 %
Race: White N= 29 ; Non-white N= 24 white non-white white non-white white non-white
10 % 17 % 48 % 29 % 41 % 54 %

3.4 Survey 4: Oxygen_Binding

allBiochem = analyzeBiochemClusters(umrs4,otherss4)
buildTables(allBiochem)
PLC by cluster group
group1 n mean sd median trimmed mad min max range
X11 HP 75 0.38 0.15 0.36 0.37 0.14 0.09 0.86 0.77
X12 IP 173 0.23 0.08 0.22 0.23 0.09 0.04 0.53 0.49
X13 LP 123 0.01 0.09 0.02 0.02 0.07 -0.32 0.17 0.49
PLC by institution
group1 n mean sd median trimmed mad min max range
X11 UMR 53 0.22 0.26 0.18 0.21 0.27 -0.25 0.86 1.11
X12 UNL 110 0.18 0.16 0.19 0.18 0.17 -0.19 0.57 0.76
X13 UT 208 0.18 0.15 0.18 0.18 0.15 -0.32 0.67 0.98
PLC by course
group1 n mean sd median trimmed mad min max range
X11 BCH339F 53 0.18 0.15 0.19 0.18 0.13 -0.18 0.67 0.84
X12 BCH339M 32 0.19 0.17 0.19 0.20 0.17 -0.32 0.50 0.82
X13 BCH369 123 0.18 0.14 0.18 0.18 0.16 -0.21 0.53 0.74
X14 BIOC3321 53 0.22 0.26 0.18 0.21 0.27 -0.25 0.86 1.11
X15 BIOC431 110 0.18 0.16 0.19 0.18 0.17 -0.19 0.57 0.76
PLC by Sex
group1 n mean sd median trimmed mad min max range
X11 Female 242 0.19 0.17 0.18 0.18 0.17 -0.25 0.80 1.05
X12 Male 129 0.19 0.18 0.19 0.19 0.17 -0.32 0.86 1.17
PLC by Race
group1 n mean sd median trimmed mad min max range
X11 Non-white 213 0.18 0.17 0.18 0.18 0.17 -0.32 0.86 1.17
X12 White 158 0.20 0.17 0.19 0.19 0.16 -0.19 0.69 0.88
markerIntegers = as.integer(as.factor(allBiochem$Institution))
plot(allBiochem$PLC,allBiochem$NS,pch=allBiochem$clusterLetter,main = "Oxygen_Binding - High(H), Intermediate(I), Low(L) performers",ylab="NS",xlab="PLC",col=markerIntegers)
legend("topleft", legend=unique(allBiochem$Institution), col=unique(markerIntegers), lty=1:1, cex=0.8)

paste("Institution with max PLC is ", allBiochem[which(allBiochem$PLC == max(allBiochem$PLC)),]$Institution)

[1] “Institution with max PLC is UMR”

calcStats(allBiochem)
Results for course: BIOC431

High Performers Intermediate Performers Low Performers
BIOC431 Total N= 110 18 % 50 % 32 %
Sex: males N= 41 ; females N= 69 male female male female male female
20 % 17 % 46 % 52 % 34 % 30 %
Race: White N= 84 ; Non-white N= 26 white non-white white non-white white non-white
19 % 15 % 48 % 58 % 33 % 27 %
Results for course: BCH339F

High Performers Intermediate Performers Low Performers
BCH339F Total N= 53 25 % 47 % 28 %
Sex: males N= 19 ; females N= 34 male female male female male female
16 % 29 % 53 % 44 % 32 % 26 %
Race: White N= 14 ; Non-white N= 39 white non-white white non-white white non-white
21 % 26 % 43 % 49 % 36 % 26 %
Results for course: BCH339M

High Performers Intermediate Performers Low Performers
BCH339M Total N= 32 19 % 50 % 31 %
Sex: males N= 11 ; females N= 21 male female male female male female
27 % 14 % 45 % 52 % 27 % 33 %
Race: White N= 8 ; Non-white N= 24 white non-white white non-white white non-white
25 % 17 % 50 % 50 % 25 % 33 %
Results for course: BCH369

High Performers Intermediate Performers Low Performers
BCH369 Total N= 123 15 % 52 % 33 %
Sex: males N= 42 ; females N= 81 male female male female male female
14 % 15 % 50 % 53 % 36 % 32 %
Race: White N= 23 ; Non-white N= 100 white non-white white non-white white non-white
13 % 15 % 52 % 52 % 35 % 33 %
Results for course: BIOC3321

High Performers Intermediate Performers Low Performers
BIOC3321 Total N= 53 34 % 25 % 42 %
Sex: males N= 16 ; females N= 37 male female male female male female
44 % 30 % 31 % 22 % 25 % 49 %
Race: White N= 29 ; Non-white N= 24 white non-white white non-white white non-white
34 % 33 % 34 % 12 % 31 % 54 %

3.5 Survey 5: Protein_Structure

allBiochem = analyzeBiochemClusters(umrs5,otherss5)
buildTables(allBiochem)
PLC by cluster group
group1 n mean sd median trimmed mad min max range
X11 HP 188 0.38 0.12 0.37 0.37 0.11 0.19 0.80 0.62
X12 IP 34 0.19 0.07 0.20 0.20 0.07 0.04 0.29 0.25
X13 LP 163 0.09 0.11 0.11 0.10 0.10 -0.24 0.32 0.56
PLC by institution
group1 n mean sd median trimmed mad min max range
X11 UMR 51 0.26 0.15 0.29 0.27 0.13 -0.13 0.54 0.67
X12 UNL 102 0.32 0.20 0.35 0.32 0.18 -0.12 0.78 0.90
X13 UT 232 0.20 0.16 0.20 0.20 0.14 -0.24 0.80 1.05
PLC by course
group1 n mean sd median trimmed mad min max range
X11 BCH339F 60 0.17 0.08 0.17 0.17 0.08 0.04 0.47 0.44
X12 BCH339M 39 0.29 0.21 0.30 0.29 0.21 -0.20 0.80 1.00
X13 BCH369 133 0.19 0.17 0.20 0.20 0.18 -0.24 0.58 0.83
X14 BIOC3321 51 0.26 0.15 0.29 0.27 0.13 -0.13 0.54 0.67
X15 BIOC431 102 0.32 0.20 0.35 0.32 0.18 -0.12 0.78 0.90
PLC by Sex
group1 n mean sd median trimmed mad min max range
X11 Female 260 0.24 0.17 0.25 0.25 0.15 -0.24 0.78 1.02
X12 Male 124 0.24 0.20 0.23 0.23 0.20 -0.20 0.80 1.00
X13 Prefer not to answer 1 0.29 NA 0.29 0.29 0.00 0.29 0.29 0.00
PLC by Race
group1 n mean sd median trimmed mad min max range
X11 Non-white 218 0.22 0.17 0.22 0.22 0.17 -0.24 0.80 1.05
X12 White 167 0.27 0.18 0.27 0.27 0.18 -0.15 0.76 0.91
markerIntegers = as.integer(as.factor(allBiochem$Institution))
plot(allBiochem$PLC,allBiochem$NS,pch=allBiochem$clusterLetter,main = "Protein_Structure - High(H), Intermediate(I), Low(L) performers",ylab="NS",xlab="PLC",col=markerIntegers)
legend("topleft", legend=unique(allBiochem$Institution), col=unique(markerIntegers), lty=1:1, cex=0.8)

paste("Institution with max PLC is ", allBiochem[which(allBiochem$PLC == max(allBiochem$PLC)),]$Institution)

[1] “Institution with max PLC is UT”

calcStats(allBiochem)
Results for course: BIOC431

High Performers Intermediate Performers Low Performers
BIOC431 Total N= 102 68 % 0.98 % 31 %
Sex: males N= 41 ; females N= 61 male female male female male female
63 % 70 % 2.4 % 0 % 34 % 30 %
Race: White N= 75 ; Non-white N= 27 white non-white white non-white white non-white
69 % 63 % 0 % 3.7 % 31 % 33 %
Results for course: BCH339F

High Performers Intermediate Performers Low Performers
BCH339F Total N= 60 8.3 % 55 % 37 %
Sex: males N= 24 ; females N= 36 male female male female male female
12 % 5.6 % 46 % 61 % 42 % 33 %
Race: White N= 16 ; Non-white N= 44 white non-white white non-white white non-white
12 % 6.8 % 56 % 55 % 31 % 39 %
Results for course: BCH339M

High Performers Intermediate Performers Low Performers
BCH339M Total N= 39 59 % 0 % 41 %
Sex: males N= 13 ; females N= 26 male female male female male female
54 % 62 % 0 % 0 % 46 % 38 %
Race: White N= 10 ; Non-white N= 29 white non-white white non-white white non-white
80 % 52 % 0 % 0 % 20 % 48 %
Results for course: BCH369

High Performers Intermediate Performers Low Performers
BCH369 Total N= 133 44 % 0 % 56 %
Sex: males N= 31 ; females N= 101 male female male female male female
32 % 48 % 0 % 0 % 68 % 52 %
Race: White N= 38 ; Non-white N= 95 white non-white white non-white white non-white
42 % 45 % 0 % 0 % 58 % 55 %
Results for course: BIOC3321

High Performers Intermediate Performers Low Performers
BIOC3321 Total N= 51 63 % 0 % 37 %
Sex: males N= 15 ; females N= 36 male female male female male female
67 % 61 % 0 % 0 % 33 % 39 %
Race: White N= 28 ; Non-white N= 23 white non-white white non-white white non-white
61 % 65 % 0 % 0 % 39 % 35 %

4 Clustering proximity matrices

#reading answers/matrices
# R IS USELESS. I CANNOT REALLY SPEND TIME LEARNING THESE VERY UNNATURAL SYNTAX
#setwd("~/Research/02b Neural Network Research UMR/Data + Analysis/UNL Data/UNL Enzyme substrate /ES_Chemical_Equation_Matrix")
#files <- list.files(pattern = "\\.prx\\.txt$",recursive=FALSE)

#nitems = (11*12)/2 #linearization of matrix n(n+1)/2
#allData = matrix(ncol=nitems+1,nrow=length(files))
#for (i in 1:length(files)){
#  content = readLines( file(files[i],'r') )
#  myList=c()
#  lineIndex = 1
#  for (line in content[8:length(content)]){
#    thisLine = strsplit(line,'\t')
#    thisLine = unlist(thisLine)
#    myList = append(myList,thisLine[lineIndex:11] )
#    lineIndex = lineIndex+1
#  }
#  allData[i,1]=content[4]
#  print(length(unlist(myList)))
#  allData[i,2:nitems+1]= c(unlist(myList))
#  #allData[i,2]= c(toString(unlist(myList)))
#  #allData[i,2]= c(as.numeric(unlist(myList)))
#}

6 Heatmaps