Learn R Programming

DTComPair

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.

Installation

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")

Scope

Diagnostic accuracy measures that can be computed and compared are sensitivity, specificity, positive and negative predictive values, and positive and negative diagnostic likelihood ratios.

Getting Started

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

Citing 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},
#   }

Copy Link

Version

Install

install.packages('DTComPair')

Monthly Downloads

374

Version

1.2.6

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

September 24th, 2024

Functions in DTComPair (1.2.6)

sesp.exactbinom

Exact Binomial Test for Differences in Sensitivity and Specificity
read.tab.1test

Read in “tab.1test”-Objects
read.tab.paired

Read in “tab.paired”-Objects
sesp.gen.mcnemar

Generalized McNemar's test
sesp.rel

Comparison of the accuracy of two tests using relative sensitivity and specificity
sesp.mcnemar

McNemar Test for Comparison of Sensitivities and Specificities
print.tab.1test

Print “tab.1test”-Object
print.tab.paired

Print “tab.paired”-Object
tpffpf.rel

Comparison of the accuracy of two tests using relative true positive and false positive fraction
Paired1

DTComPair-dataset 1
DLR

Estimating the Capacity for Improvement in Diagnostic Risk Prediction with an additional marker based on the Diagnostic Likelihood Ratio (DLR)
print.acc.1test

Print “acc.1test”-Object
print.acc.paired

Print “acc.paired”-Object
generate.paired

Generate Dataset from “tab.paired”-Object
acc.paired

Accuracy of Two Binary Diagnostic Tests in a Paired Study Design
ellipse.pv.rpv

Elliptical joint confidence region for relative positive and negative predictive value
acc.1test

Accuracy of a Single Binary Diagnostic Test
sesp.diff.ci

Confidence Intervals for Differences in Sensitivity and Specificity
pv.gs

Generalized Score Statistic for Comparison of Predictive Values
represent.long

Long Representation of Results from Two Binary Diagnostic Tests
pv.prev

Compute predictive values for theoretical prevalences
dlr.regtest

Differences in Diagnostic Likelihood Ratios
pv.rpv

Comparison of Predictive Values using Relative Predictive Values
DTComPair-package

Comparison of Binary Diagnostic Tests in a Paired Study Design
pv.wgs

Weighted Generalized Score Statistic for Comparison of Predictive Values
tab.1test

Tabulate Single Binary Diagnostic Test vs. Gold-Standard
tab.paired

Tabulate Results from Two Binary Diagnostic Tests in a Paired Study Design