FitCbmRoc.Rd
Fit the CBM-predicted ROC curve for specified modality and reader
FitCbmRoc(dataset, trt = 1, rdr = 1)
A list with the following elements:
The mean of the visible diseased distribution (the non-diseased) has zero mean
The proportion of diseased cases where the disease is visible
The cutoffs, zetas or thresholds
The AUC of the fitted ROC curve
The standard deviation of AUC
The initial value of negative LL
The final value of negative LL
The chisquare goodness of fit results
The covariance matrix of the parameters
A ggplot2 object containing the fitted
operating characteristic along with the empirical operating points.
Use print()
to display the object
In CBM ratings from diseased cases are sampled from a mixture distribution
with two components: (1) distributed normal with mean \(mu\) and unit
variance with integrated area \(alpha\), and (2) from a unit-normal
distribution with integrated area \(1-alpha\). Ratings for non-diseased
cases are sampled from a unit-normal distribution. The
ChisqrFitStats
consists of a list containing the chi-square value,
the p-value and the degrees of freedom.
This algorithm is very robust, especially compared to the binormal model.
Dorfman DD, Berbaum KS (2000) A contaminated binormal model for ROC data: Part II. A formal model, Acad Radiol, 7:6, 427–437.
# \donttest{
## CPU time 8.7 sec on Ubuntu (#13)
## Test with included ROC data
retFit <- FitCbmRoc(dataset02);## print(retFit$fittedPlot)
## Test with included degenerate ROC data (yes! CBM can fit such data)
retFit <- FitCbmRoc(datasetDegenerate);## print(retFit$fittedPlot)
## Test with single interior point data
fp <- c(rep(1,7), rep(2, 3))
tp <- c(rep(1,5), rep(2, 5))
dataset <- Df2RJafrocDataset(fp, tp)
retFit <- FitCbmRoc(dataset);## print(retFit$fittedPlot)
## Test with two interior data points
fp <- c(rep(1,7), rep(2, 5), rep(3, 3))
tp <- c(rep(1,3), rep(2, 5), rep(3, 7))
dataset <- Df2RJafrocDataset(fp, tp)
retFit <- FitCbmRoc(dataset);
## print(retFit$fittedPlot)
## Test with included ROC data (some bins have zero counts)
retFit <- FitCbmRoc(dataset02, 2, 1);## print(retFit$fittedPlot)
## Test with TONY data for which chisqr can be calculated
ds <- DfFroc2Roc(dataset01)
retFit <- FitCbmRoc(ds, 2, 3);## print(retFit$fittedPlot)
retFit$ChisqrFitStats
#> $chisq
#> [1] 1.449787
#>
#> $pVal
#> [1] 0.4843762
#>
#> $df
#> [1] 2
#>
# }