The mathComb
function returns the combination results of
two diagnostic tests with different mathematical operators, distance
measures, standardization, and transform options.
mathComb(
markers = NULL,
status = NULL,
event = NULL,
method = c("add", "multiply", "divide", "subtract", "distance", "baseinexp",
"expinbase"),
distance = c("euclidean", "manhattan", "chebyshev", "kulczynski_d", "lorentzian",
"avg", "taneja", "kumar-johnson"),
standardize = c("none", "min_max_scale", "zScore", "tScore", "scale_mean_to_one",
"scale_sd_to_one"),
transform = c("none", "log", "exp", "sin", "cos"),
show.plot = TRUE,
direction = c("auto", "<", "="">"),
conf.level = 0.95,
cutoff.method = c("CB", "MCT", "MinValueSp", "MinValueSe", "ValueSp", "ValueSe",
"MinValueSpSe", "MaxSp", "MaxSe", "MaxSpSe", "MaxProdSpSe", "ROC01", "SpEqualSe",
"Youden", "MaxEfficiency", "Minimax", "MaxDOR", "MaxKappa", "MinValueNPV",
"MinValuePPV", "ValueNPV", "ValuePPV", "MinValueNPVPPV", "PROC01", "NPVEqualPPV",
"MaxNPVPPV", "MaxSumNPVPPV", "MaxProdNPVPPV", "ValueDLR.Negative",
"ValueDLR.Positive", "MinPvalue", "ObservedPrev", "MeanPrev", "PrevalenceMatching"),
show.result = FALSE,
...
)",>
A list containing the computed combination scores and, optionally, diagnostic performance metrics.
a numeric
data frame that includes two diagnostic tests
results
a factor
vector that includes the actual disease
status of the patients
a character
string that indicates the event in the status
to be considered as positive event
a character
string specifying the method used for
combining the markers. The available methods are:
add
: Combination score obtained by adding markers
multiply
: Combination score obtained by multiplying markers
divide
: Combination score obtained by dividing markers
subtract
: Combination score obtained by subtracting markers
distance
: Combination score obtained with the help of
distance measures.
baseinexp
: Combination score obtained by marker1 power marker2.
expinbase
: Combination score obtained by marker2 power marker1.
a character
string specifying the method used for
combining the markers. The available methods are:
Euclidean (euclidean
):
\(c_i = {\sqrt{(x_{i1}-0)^2+(x_{i2}-0)^2}}\)
Manhattan(manhattan
):
\(c_i = |x_{i1}-0|+|x_{i2}-0|\)
Chebyshev (chebyshev
):
\(c_i = max{|x_{i1}-0|,|x_{i2}-0|}\)
Kulczynski (kulczynski_d
):
\(c_i = \frac{|x_{i1}-0|+|x_{i2}-0|}{min(x_{i1},x_{i2})}\)
Lorentzian (lorentzian
):
\(c_i = (ln(1+|x_{i1}-0|))+ (ln(1+|x_{i2}-0|))\)
Taneja (taneja
):
\(c_i = z_1\times\Biggl(log\frac{z_1}{\sqrt{(x_{i1}\times \epsilon )}}\Biggl)+z_2\times\Biggl(log\frac{z_2}{\sqrt{(x_{i2}\times\epsilon)}}\Biggl)\)
Kumar-Johnson (kumar-johnson
):
\(c_i = {\frac{(x_{i1}-0)^2}{2(x_{i1}\times\epsilon)}}+{\frac{(x_{i2}-0)^2}{2(x_{i2}\times\epsilon)}}, \epsilon = 0.00001\)
Avg (avg
):
$$(L_1, L_n) = \frac{|x_{i1}-0|+|x_{i2}-0| + max{(x_{i1}-0),(x_{i2}-0)}}{2}$$
a character
string indicating the name of the
standardization method. The default option is no standardization applied.
Available options are:
Z-score (zScore)
: This method scales the data to have a mean
of 0 and a standard deviation of 1. It subtracts the mean and divides by the standard
deviation for each feature. Mathematically,
$$ Z-score = \frac{x - (\overline x)}{sd(x)}$$
where \(x\) is the value of a marker, \(\overline{x}\) is the mean of the marker and \(sd(x)\) is the standard deviation of the marker.
T-score (tScore)
: T-score is commonly used
in data analysis to transform raw scores into a standardized form.
The standard formula for converting a raw score \(x\) into a T-score is:
$$T-score = \Biggl(\frac{x - (\overline x)}{sd(x)}\times 10 \Biggl) +50$$
where \(x\) is the value of a marker, \(\overline{x}\) is the mean of the marker
and \(sd(x)\) is the standard deviation of the marker.
min_max_scale (min_max_scale)
: This method transforms data to
a specific scale, between 0 and 1. The formula for this method is:
$$min_max_scale = \frac{x - min(x)}{max(x) - min(x)}$$
scale_mean_to_one (scale_mean_to_one)
: This method scales
the arithmetic mean to 1. The formula for this method is:
$$scale_mean_to_one = \frac{x}{\overline{x}}$$
where \(x\) is the value of a marker and \(\overline{x}\) is the mean of the marker.
scale_sd_to_one (scale_sd_to_one)
: This method, which allows for
comparison of individual data points in relation to the overall spread of
the data, scales the standard deviation to 1. The formula for this method is:
$$scale_sd_to_one = \frac{x}{sd(x)}$$
where \(x\) is the value of a marker and \(sd(x)\) is the standard deviation of the marker.
A character
string specifying the mathematical
transformation method.
Available options: "log"
, "exp"
, "sin"
, "cos"
.
log
: Applies logarithm transform to markers before calculating
combination score
exp
: Applies exponential transform to markers before
calculating combination score
sin
: Applies sinus trigonometric transform to markers before
calculatin combination score
cos
: Applies cosinus trigonometric transform to markers before
calculating combination score
a logical
. If TRUE, a ROC curve is
plotted. Default is TRUE
a character
string determines in which direction the
comparison will be made. ">": if the predictor values for the control group
are higher than the values of the case group (controls > cases).
"<": if the predictor values for the control group are lower or equal than
the values of the case group (controls < cases).
a numeric
values determines the confidence interval
for the roc curve(0.95, default).
a character
string determines the cutoff method
for the roc curve.
A logical
value indicating whether the results
should be printed to the console.
further arguments. Currently has no effect on the results.
Serra Ilayda Yerlitas, Serra Bersan Gengec, Necla Kochan, Gozde Erturk Zararsiz, Selcuk Korkmaz, Gokmen Zararsiz
data(laparotomy)
markers <- laparotomy[, -1]
status <- factor(laparotomy$group, levels = c("not_needed", "needed"))
event <- "needed"
direction <- "<"
cutoff.method <- "Youden"
score1 <- mathComb(
markers = markers, status = status, event = event,
method = "distance", distance = "avg", direction = direction, show.plot = FALSE,
standardize = "none", cutoff.method = cutoff.method
)
score2 <- mathComb(
markers = markers, status = status, event = event,
method = "baseinexp", transform = "exp", direction = direction,
cutoff.method = cutoff.method
)
score3 <- mathComb(
markers = markers, status = status, event = event,
method = "subtract", direction = "auto", cutoff.method = "MinValueSp", transform = "sin"
)
Run the code above in your browser using DataLab