Comparison of the accuracy of two binary diagnostic tests in a “paired” study design, i.e. when each test is applied to each subject in the study.
CRAN
You can install the current stable version from CRAN with:
install.packages("DTComPair")
GitHub
You can install the current development version from GitHub with:
if (!require("remotes")) {install.packages("remotes")}
remotes::install_github("chstock/DTComPair")
Diagnostic accuracy measures that can be computed and compared are sensitivity, specificity, positive and negative predictive values, and positive and negative diagnostic likelihood ratios.
Determine the accuracy of one diagnostic test
library(DTComPair)
# Loading required package: PropCIs
data(Paired1) # Hypothetical study data
a1 <- tab.1test(d=d, y=y1, data=Paired1)
print(a1)
# Binary diagnostic test 'y1'
#
# Diseased Non-diseased Total
# Test pos. 397 84 481
# Test neg. 54 177 231
# Total 451 261 712
a1 |> acc.1test(method.ci = waldci) # default Wald interval
# Diagnostic accuracy of test 'y1'
#
# (Estimates, standard errors and 95%-confidence intervals)
#
# Est. SE Lower CL Upper CL
# Sensitivity 0.8802661 0.01528718 0.8503038 0.9102284
# Specificity 0.6781609 0.02891782 0.6214830 0.7348388
# PPV 0.8253638 0.01731081 0.7914353 0.8592924
# NPV 0.7662338 0.02784617 0.7116563 0.8208113
#
# Est. SE (log) Lower CL Upper CL
# PDLR 2.7351124 0.0915147 2.2860079 3.2724472
# NDLR 0.1765568 0.1346088 0.1356142 0.2298601
a1 |> acc.1test(method.ci = exactci) # Wilson score interval
# Diagnostic accuracy of test 'y1'
#
# (Estimates, standard errors and 95%-confidence intervals)
#
# Est. SE Lower CL Upper CL
# Sensitivity 0.8802661 0.01528718 0.8503038 0.9102284
# Specificity 0.6781609 0.02891782 0.6214830 0.7348388
# PPV 0.8253638 0.01731081 0.7914353 0.8592924
# NPV 0.7662338 0.02784617 0.7116563 0.8208113
#
# Est. SE (log) Lower CL Upper CL
# PDLR 2.7351124 0.0915147 2.2860079 3.2724472
# NDLR 0.1765568 0.1346088 0.1356142 0.2298601
Compare the accuracy of two diagnostic tests
Compute accuracy measures
b1 <- tab.paired(d=d, y1=y1, y2=y2, data=Paired1)
print(b1)
# Two binary diagnostic tests (paired design)
#
# Test1: 'y1'
# Test2: 'y2'
#
# Diseased:
# Test1 pos. Test1 neg. Total
# Test2 pos. 319 22 341
# Test2 neg. 78 32 110
# Total 397 54 451
#
# Non-diseased:
# Test1 pos. Test1 neg. Total
# Test2 pos. 31 22 53
# Test2 neg. 53 155 208
# Total 84 177 261
b1 |> acc.paired(method.ci = scoreci)
# Diagnostic accuracy of test 'y1'
#
# (Estimates, standard errors and 95%-confidence intervals)
#
# Est. SE Lower CL Upper CL
# Sensitivity 0.8802661 0.01528718 0.8503038 0.9102284
# Specificity 0.6781609 0.02891782 0.6214830 0.7348388
# PPV 0.8253638 0.01731081 0.7914353 0.8592924
# NPV 0.7662338 0.02784617 0.7116563 0.8208113
#
# Est. SE (log) Lower CL Upper CL
# PDLR 2.7351124 0.0915147 2.2860079 3.2724472
# NDLR 0.1765568 0.1346088 0.1356142 0.2298601
#
# ----------------------------------------------------------
# Diagnostic accuracy of test 'y2'
#
# (Estimates, standard errors and 95%-confidence intervals)
#
# Est. SE Lower CL Upper CL
# Sensitivity 0.7560976 0.02022128 0.7164646 0.7957305
# Specificity 0.7969349 0.02490054 0.7481307 0.8457390
# PPV 0.8654822 0.01718980 0.8317908 0.8991736
# NPV 0.6540881 0.02667395 0.6018081 0.7063680
#
# Est. SE (log) Lower CL Upper CL
# PDLR 3.7234238 0.1255060 2.9114648 4.7618247
# NDLR 0.3060507 0.0885996 0.2572629 0.3640906
Compare predictive values
Test based on weighted generalized score statistic:
pv.wgs(b1)
# $ppv
# test1 test2 diff test.statistic p.value
# 0.82536383 0.86548223 0.04011841 5.46588745 0.01939120
#
# $npv
# test1 test2 diff test.statistic p.value
# 7.662338e-01 6.540881e-01 -1.121457e-01 1.653540e+01 4.775012e-05
#
# $method
# [1] "weighted generalized score statistic (wgs)"
Estimation and test of relative predictive values:
pv.rpv(b1)
# $ppv
# test1 test2 rppv se.log.rppv lcl.rppv
# 0.82536383 0.86548223 1.04860694 0.01991247 1.00847050
# ucl.rppv test.statistic p.value
# 1.09034078 2.38355929 0.01714612
#
# $npv
# test1 test2 rnpv se.log.rnpv lcl.rnpv
# 7.662338e-01 6.540881e-01 8.536403e-01 3.783679e-02 7.926258e-01
# ucl.rnpv test.statistic p.value
# 9.193516e-01 -4.182314e+00 2.885568e-05
#
# $Sigma
# log.rppv log.rnpv
# log.rppv 0.0003965065 0.0004024578
# log.rnpv 0.0004024578 0.0014316223
#
# $method
# [1] "relative predictive values (rpv)"
#
# $alpha
# [1] 0.05
DTComPair
citation("DTComPair")
# To cite DTComPair in publications use:
#
# Stock C, Hielscher T, Discacciati A (2024). DTComPair: comparison of
# binary diagnostic tests in a paired study design. R package, version
# 1.2.4. URL: https://CRAN.R-project.org/package=DTComPair.
#
# A BibTeX entry for LaTeX users is
#
# @Misc{,
# title = {{DTComPair}: comparison of binary diagnostic tests in a paired study design},
# author = {Christian Stock and Thomas Hielscher and Andrea Discacciati},
# year = {2024},
# note = {{R} package, version 1.2.4. {URL}: {https://CRAN.R-project.org/package=DTComPair}.},
# encoding = {UTF-8},
# }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.