File: genrocdata.R

package info (click to toggle)
insighttoolkit 3.20.1%2Bgit20120521-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 80,652 kB
  • sloc: cpp: 458,133; ansic: 196,223; fortran: 28,000; python: 3,839; tcl: 1,811; sh: 1,184; java: 583; makefile: 430; csh: 220; perl: 193; xml: 20
file content (30 lines) | stat: -rw-r--r-- 1,236 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
genrocdata <- function(inputFile, classLabels)
  {
    noRuns = 100 ;
    data = read.table(inputFile, header=T) ;
    colBegin = which(colnames(data) == classLabels[1]) ;
    colEnd = colBegin + length(classLabels) - 1 ;
    sensitivity <- array(dim=c(noRuns, length(classLabels))) ;
    specificity <- array(dim=c(noRuns, length(classLabels))) ;
    for ( i in 1:noRuns )
      {
        classificationMatrix = as.matrix(data[(3*i - 2):(3*i), colBegin:colEnd]) ;
        for ( j in 1:nrow(classificationMatrix) )
          {
            truePositive = classificationMatrix[j,j] ;
            falsePositive = sum(classificationMatrix[j,]) - truePositive ;
            falseNegative = sum(classificationMatrix[,j]) - truePositive ;
            trueNegative = sum(classificationMatrix) - (truePositive + falsePositive + falseNegative) ;
            sensitivity[i, j] = truePositive / ( truePositive + falseNegative) ;
            specificity[i, j] = trueNegative / ( falsePositive + trueNegative) ;
          }
      }
    ret = data.frame(sens=sensitivity, spec=specificity) ;
    fileName = strsplit(inputFile, "\\.dat") ;
    output = paste(fileName[[1]], ".roc.dat", sep="") ;
    write.table(ret, output, row.names=F) ;
  }