plot_FPF_TPF_via_dataframe_with_split_factor: Scatter Plot of FPFs and TPFs via Splitting Factor

Description Usage Arguments Value Examples

View source: R/DrawCurves.R

Description

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

Usage

1
2
3
4
5
6
7
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

  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
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#========================================================================================
#                               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()

## End(Not run)#dontrun

BayesianFROC documentation built on Jan. 23, 2022, 9:06 a.m.