R에 있는 gtsummary package를 사용해서 AUC 출력이 가능한가요?

Asked 6 months ago, Updated 6 months ago, 110 views

R에 있는 pROC 패키지의 auc 기능을 쓰는데요.

gtsummary package를 사용해서 결과를 표에 넣을 수 있나요?

r gtsummary

2022-05-15 21:01

2 Answers

gt::gt를 사용하여 데이터 프레임을 테이블로 변환할 수 있으므로 pROC의 aSAH 데이터 세트를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

library(pROC)
library(gt)
library(dplyr)

aSAH %>% 
    filter(gender == "Female") %>%
    roc(outcome, s100b) %>%
  {data.frame(
    predictor = as.character(.$call$predictor),
    "Area under curve" = auc(.), 
    "Confidence interval" =
        paste(as.character(round(ci.auc(b), 2))[c(1, 3)], collapse = " - "),
    check.names = FALSE)} %>%
  gt()


2022-05-15 21:04

AUC를 추가하는 몇 가지 방법이 있는데요.

아래는 broom::glance()의 glance 통계와 함께 추가하는 예제입니다.

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.6.0'

mod <- glm(response ~ age + trt, trial, family = binomial)

glance_with_auc <- function(x, ...) {
  df_glance <- broom::glance(x)
  
  # add AUC
  df_glance %>%
    dplyr::mutate(
      AUC = with(broom::augment(x), pROC::roc(response, .fitted))$auc %>% as.numeric()
    )
}
glance_with_auc(mod)
#> Setting levels: control = 0, case = 1
#> Setting direction: controls < cases
#> # A tibble: 1 × 9
#>   null.deviance df.null logLik   AIC   BIC deviance df.residual  nobs   AUC
#>           <dbl>   <int>  <dbl> <dbl> <dbl>    <dbl>       <int> <int> <dbl>
#> 1          229.     182  -113.  232.  241.     226.         180   183 0.576

tbl_regression(mod, exponentiate = TRUE) %>%
  add_glance_table(include = c(nobs, AIC, AUC), glance_fun = glance_with_auc) %>%
  as_kable() # convert to kable to display on SO
#> Setting levels: control = 0, case = 1
#> Setting direction: controls < cases


2022-05-15 21:05

If you have any answers or tips


© 2022 pinfo. All rights reserved.