### Set c as a confusion matrix, previously calculated and stored ### (this confusion matrix has rows as predictions and columns as actuals): c = as.matrix(as.data.frame.matrix(confusion_RF$table)) ### Initialize length 16 MCC vector: MCC = vector(mode = "numeric", length = 16) ### For each location: for(k in 1:16){ A = as.double(c[k,k]) ### A = #(true positives) B = as.double(sum(c[k,]) - c[k,k]) ### B = #(false positives) C = as.double(sum(c[,k]) - c[k,k]) ### C = #(false negatives) D = as.double(sum(c) - A - B - C) ### D = #(true negatives) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ ### if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} ### MCC value by formula rm(A,B,C,D) } ### Rounding, setting as column vector: MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) ### Set appropriate column name: colnames(MCC) = "MCC" ### Save results to machine (to be appended to pre-existing statistics by class table): write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/RF_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_ada$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/ada_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_ada_cv$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/ada_cv_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_bagging$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/bagging_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_bagging_cv$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/bagging_cv_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_samme$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/samme_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_svms$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/svms_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC) c = as.matrix(as.data.frame.matrix(confusion_CDA$table)) MCC = vector(mode = "numeric", length = 16) for(k in 1:16){ A = as.double(c[k,k]) B = as.double(sum(c[k,]) - c[k,k]) C = as.double(sum(c[,k]) - c[k,k]) D = as.double(sum(c) - A - B - C) if((((A + B)*(A + C)*(D + B)*(D + C))^.5) == 0){ # if denominator is zero, arbitrarily set as one - MCC will come out to be zero MCC[k] = (A*D) - (B*C) } else{MCC[k] = ((A*D) - (B*C))/(((A + B)*(A + C)*(D + B)*(D + C))^.5)} rm(A,B,C,D) } MCC = round(matrix(MCC, nrow = 16, ncol = 1), digits = 2) colnames(MCC) = "MCC" write.table(MCC, file = "C:/Users/jdmunyon/Desktop/Dropbox/Senior_Project/data_and_code/results/50_50/CDA_MCCs.csv", sep = ",", row.names = FALSE, col.names = TRUE) rm(c, MCC)