## S3 method for class 'factor'
fdr(actual, predicted, micro = NULL, na.rm = TRUE, ...)
## S3 method for class 'factor'
weighted.fdr(actual, predicted, w, micro = NULL, na.rm = TRUE, ...)
## S3 method for class 'cmatrix'
fdr(x, micro = NULL, na.rm = TRUE, ...)
fdr(...)
weighted.fdr(...)
false discovery rate
fdr.factor | R Documentation |
Description
The fdr()
-function computes the false discovery rate (FDR), the proportion of false positives among the predicted positives, between two vectors of predicted and observed factor()
values. The weighted.fdr()
function computes the weighted false discovery rate.
Usage
Arguments
actual
|
A vector of |
predicted
|
A vector of |
micro
|
A |
na.rm
|
A |
…
|
Arguments passed into other methods |
w
|
A |
x
|
A confusion matrix created |
Value
If micro
is NULL (the default), a named <numeric>
-vector of length k
If micro
is TRUE or FALSE, a <numeric>
-vector of length 1
Calculation
The metric is calculated for each class \(k\) as follows,
\[ \frac{\#FP_k}{\#TP_k+\#FP_k} \]
Where \(\#TP_k\) and \(\#FP_k\) is the number of true psotives and false positives, respectively, for each class \(k\).
Examples
# 1) recode Iris
# to binary classification
# problem
$species_num <- as.numeric(
iris$Species == "virginica"
iris
)
# 2) fit the logistic
# regression
<- glm(
model formula = species_num ~ Sepal.Length + Sepal.Width,
data = iris,
family = binomial(
link = "logit"
)
)
# 3) generate predicted
# classes
<- factor(
predicted as.numeric(
predict(model, type = "response") >` 0.5
),
levels = c(1,0),
labels = c("Virginica", "Others")
)
# 3.1) generate actual
# classes
actual <- factor(
x = iris$species_num,
levels = c(1,0),
labels = c("Virginica", "Others")
)
# 4) evaluate class-wise performance
# using False Discovery Rate
# 4.1) unweighted False Discovery Rate
fdr(
actual = actual,
predicted = predicted
)
# 4.2) weighted False Discovery Rate
weighted.fdr(
actual = actual,
predicted = predicted,
w = iris$Petal.Length/mean(iris$Petal.Length)
)
# 5) evaluate overall performance
# using micro-averaged False Discovery Rate
cat(
"Micro-averaged False Discovery Rate", fdr(
actual = actual,
predicted = predicted,
micro = TRUE
),
"Micro-averaged False Discovery Rate (weighted)", weighted.fdr(
actual = actual,
predicted = predicted,
w = iris$Petal.Length/mean(iris$Petal.Length),
micro = TRUE
),
sep = "\n"
)