Function for computation of the trinormal ROC surface.

rocsurf.trin(x, y, z, p = 300, plot = TRUE, saveVUS = FALSE)

Arguments

x, y, z

Vectors containing the data of the three classes "healthy", "intermediate" and "diseased".

p

An integer for the precision of the surface. p gives the number of gridpoints per axis.

plot

logical. If TRUE (default), the VUS is plotted using surface3d from the package rgl.

saveVUS

A logical whether to save a PNG of the VUS in your current working directory (default is FALSE).

Value

A list with the following components:

t1, t2

The vectors \(t_-=F_-^{(c_-)}\) and \(t_+=F_+^{(c_+)}\)

zVUS

The matix containing the surface values.

x, y, z

The original data.

Details

This function takes three-class ROC data and computes the three dimentional surface using the R-package rgl. The ROC surface is defined as

$$z = ROCs(t_-,t_+) = F_0(c_+) - F_0(c_-)=F_0(G_+^{-1}(t_+) ) -F_0(F_-^{-1}(t_-) ),$$

where \(c_-, c_+\) are the two cut-off points and \(F_-, F_0, F_+\) the cdf of the three classes with \(G = 1-F\).

References

Xiong, C., G. Van Belle, et al. (2006). Measuring and estimating diagnostic accuracy when there are three ordinal diagnostic groups. Statistics in Medicine 25(7), 1251–1273.

Examples

data(cancer)
x1 <- with(cancer, cancer[trueClass=="healthy", 8])
y1 <- with(cancer, cancer[trueClass=="intermediate", 8])
z1 <- with(cancer, cancer[trueClass=="diseased", 8])

rocsurf.trin(x1, y1, z1)