Learn R Programming

BayesianFROC (version 1.0.0)

plot_FPF_TPF_via_dataframe_with_split_factor: Scatter Plot of FPFs and TPFs via Splitting Factor

Description

Make a factor vector by which we plot FPF and TPF.

Usage

plot_FPF_TPF_via_dataframe_with_split_factor(
  dataList.MRMC,
  ModifiedPoisson = FALSE,
  colored_by_modality = TRUE,
  numbered_by_modality = TRUE,
  cex = 1.3
)

Arguments

dataList.MRMC

A list, indicating FROC data of MRMC. See also dataList which is a variable of the function fit_Bayesian_FROC().

ModifiedPoisson

Logical, that is TRUE or FALSE.

If ModifiedPoisson = TRUE, then Poisson rate of false alarm is calculated per lesion, and a model is fitted so that the FROC curve is an expected curve of points consisting of the pairs of TPF per lesion and FPF per lesion.

Similarly,

If ModifiedPoisson = TRUE, then Poisson rate of false alarm is calculated per image, and a model is fitted so that the FROC curve is an expected curve of points consisting of the pair of TPF per lesion and FPF per image.

For more details, see the author's paper in which I explained per image and per lesion. (for details of models, see vignettes , now, it is omiited from this package, because the size of vignettes are large.)

If ModifiedPoisson = TRUE, then the False Positive Fraction (FPF) is defined as follows (\(F_c\) denotes the number of false alarms with confidence level \(c\) )

$$ \frac{F_1+F_2+F_3+F_4+F_5}{N_L}, $$

$$ \frac{F_2+F_3+F_4+F_5}{N_L}, $$

$$ \frac{F_3+F_4+F_5}{N_L}, $$

$$ \frac{F_4+F_5}{N_L}, $$

$$ \frac{F_5}{N_L}, $$

where \(N_L\) is a number of lesions (signal). To emphasize its denominator \(N_L\), we also call it the False Positive Fraction (FPF) per lesion.

On the other hand,

if ModifiedPoisson = FALSE (Default), then False Positive Fraction (FPF) is given by

$$ \frac{F_1+F_2+F_3+F_4+F_5}{N_I}, $$

$$ \frac{F_2+F_3+F_4+F_5}{N_I}, $$

$$ \frac{F_3+F_4+F_5}{N_I}, $$

$$ \frac{F_4+F_5}{N_I}, $$

$$ \frac{F_5}{N_I}, $$

where \(N_I\) is the number of images (trial). To emphasize its denominator \(N_I\), we also call it the False Positive Fraction (FPF) per image.

The model is fitted so that the estimated FROC curve can be ragraded as the expected pairs of FPF per image and TPF per lesion (ModifiedPoisson = FALSE )

or as the expected pairs of FPF per image and TPF per lesion (ModifiedPoisson = TRUE)

If ModifiedPoisson = TRUE, then FROC curve means the expected pair of FPF per lesion and TPF.

On the other hand, if ModifiedPoisson = FALSE, then FROC curve means the expected pair of FPF per image and TPF.

So,data of FPF and TPF are changed thus, a fitted model is also changed whether ModifiedPoisson = TRUE or FALSE. In traditional FROC analysis, it uses only per images (trial). Since we can divide one image into two images or more images, number of trial is not important. And more important is per signal. So, the author also developed FROC theory to consider FROC analysis under per signal. One can see that the FROC curve is rigid with respect to change of a number of images, so, it does not matter whether ModifiedPoisson = TRUE or FALSE. This rigidity of curves means that the number of images is redundant parameter for the FROC trial and thus the author try to exclude it.

Revised 2019 Dec 8 Revised 2019 Nov 25 Revised 2019 August 28

colored_by_modality

A logical, if TRUE, then the color in the scatter plot means modality ID. If not, then the each color in the scatter plot indicates reader ID.

numbered_by_modality

A logical, if TRUE, then the number in the scatter plot means modality ID. If not, then the each number in the scatter plot indicates reader ID.

cex

A positive real number, specifying the size of dots in the resulting plot.

Value

A dataframe, which is added TPF and FPF, etc into dataList.MRMC.

Added Vectors as Contents of the Data-frame

CFP

A vector of Cumulative False Positive

CTP

A vector of Cumulative True Positive

TPF

A vector of True Positive Fraction

FPF

A vector of False Positive Fraction per image or per lesion according to the logical variable ModifiedPoisson

factor

What this means is trivial.

Vectors as Contents of the Data-frame dataList.MRMC

c

A vector of positive integers, representing the confidence level. This vector must be made by rep(rep(C:1), M*Q)

m

A vector of positive integers, representing the modality ID vector.

q

A vector of positive integers, representing the reader ID vector.

h

A vector of non-negative integers, representing the number of hits.

f

A vector of non-negative integers, representing the number of false alarm.

Examples

Run this code
# NOT RUN {
#========================================================================================
#                               The 1st example
#========================================================================================


v  <- v_truth_creator_for_many_readers_MRMC_data(M=1,Q=37)
m  <- mu_truth_creator_for_many_readers_MRMC_data(M=1,Q=37)
d  <- create_dataList_MRMC(mu.truth = m,v.truth = v)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality    = TRUE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality    = TRUE,
  numbered_by_modality  = FALSE)


plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality  = FALSE)

#========================================================================================
#                               The 2-nd example
#========================================================================================
#


v  <- v_truth_creator_for_many_readers_MRMC_data(M=2,Q=37)
m  <- mu_truth_creator_for_many_readers_MRMC_data(M=2,Q=37)
d  <- create_dataList_MRMC(mu.truth = m,v.truth = v)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality    = TRUE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality    = TRUE,
  numbered_by_modality  = FALSE)


plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality  = FALSE)



#========================================================================================
#                               The 3rd example
#========================================================================================




v  <- v_truth_creator_for_many_readers_MRMC_data(M=3,Q=7)
m  <- mu_truth_creator_for_many_readers_MRMC_data(M=3,Q=7)
d  <- create_dataList_MRMC(mu.truth = m,v.truth = v)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality    = TRUE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality   = TRUE)

plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = TRUE,
  numbered_by_modality  = FALSE)


plot_FPF_TPF_via_dataframe_with_split_factor(d,
  colored_by_modality   = FALSE,
  numbered_by_modality  = FALSE)
#========================================================================================
#                               The 4th example
#========================================================================================




plot_FPF_TPF_via_dataframe_with_split_factor( dataList.MRMC = dd,
                                              colored_by_modality  = TRUE,
                                              numbered_by_modality = TRUE)



#========================================================================================
#                               The 5th example
#========================================================================================

# }
# NOT RUN {
a <- plot_FPF_TPF_via_dataframe_with_split_factor(dd)

p <- ggplot2::ggplot(a, ggplot2::aes(FPF, TPF,
                            group = factor(factor),
                            colour = factor(m)) ) +
   ggplot2::geom_line(size = 1.4)
print(p)





#========================================================================================
#                               The 6th example
#========================================================================================

a <- plot_FPF_TPF_via_dataframe_with_split_factor(dd,cex = 1.8)


#========================================================================================
#                               The 7th example
#========================================================================================


# Plot empirical FROC curve whose modality is specified as following manner

a <- plot_FPF_TPF_via_dataframe_with_split_factor(dd)
aa <- a[a$m == c(2,3), ]

p <- ggplot2::ggplot(aa, ggplot2::aes(FPF, TPF,
                            group = factor(factor),
                            colour = factor(m)) ) +
   ggplot2::geom_line(size = 1.4)
print(p)



# Plot empirical FROC curve whose modality is specified as following manner

a <- plot_FPF_TPF_via_dataframe_with_split_factor(dd)
aa <- a[a$m %in%  c(4,3), ]

p <- ggplot2::ggplot(aa, ggplot2::aes(FPF, TPF,
                            group = factor(factor),
                            colour = factor(m)) ) +
   ggplot2::geom_line(size = 1.4)
print(p)


# Plot empirical FROC curve whose modality is specified as following manner

a <- plot_FPF_TPF_via_dataframe_with_split_factor(dd)
aa <- a[a$m %in% c(3,4), ]

p <- ggplot2::ggplot(aa, ggplot2::aes(FPF, TPF,
                            group = factor(factor),
                            colour = factor(m)) ) +
   ggplot2::geom_line(size = 1.4)
print(p)


   #     Close_all_graphic_devices()
# }
# NOT RUN {
#dontrun


# }

Run the code above in your browser using DataLab