Author: Shixiang Wang SYSUCC
Date: 2023-05-08

# ezcox: Easy Group Cox Analysis and Visualization

#### Shixiang Wang SYSUCC

#### 2023-05-08

    library(ezcox)

    library(survival)

    lung$ph.ecog <- factor(lung$ph.ecog)

    ezcox_group(lung, grp_var = "sex", covariate = "ph.ecog")
    #> => Processing variable 1
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> => Processing variable 2
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> covariates=NULL but drop_controls=TRUE, detecting controls...
    #> No. Skipping...
    #> Done.
    #> Returns a list containing data and ggplot.
    #> $data
    #> $stats
    #> # A tibble: 6 × 13
    #>   Group Variable is_control contras…¹ ref_l…² n_con…³ n_ref   beta    HR lower…⁴
    #>   <chr> <chr>    <lgl>      <chr>     <chr>     <dbl> <dbl>  <dbl> <dbl>   <dbl>
    #> 1 1     ph.ecog  FALSE      1         0            71    36  0.364  1.44   0.907
    #> 2 1     ph.ecog  FALSE      2         0            29    36  0.819  2.27   1.34
    #> 3 1     ph.ecog  FALSE      3         0             1    36  1.9    6.66   0.877
    #> 4 2     ph.ecog  FALSE      1         0            42    27  0.416  1.52   0.711
    #> 5 2     ph.ecog  FALSE      2         0            21    27  1.22   3.38   1.48
    #> 6 2     ph.ecog  FALSE      3         0             0    27 NA     NA     NA
    #> # … with 3 more variables: upper_95 <dbl>, p.value <dbl>, global.pval <dbl>,
    #> #   and abbreviated variable names ¹​contrast_level, ²​ref_level, ³​n_contrast,
    #> #   ⁴​lower_95
    #>
    #> $models
    #> # A tibble: 2 × 6
    #>   Group Variable control model_file                               model   status
    #>   <chr> <chr>    <chr>   <chr>                                    <list>  <lgl>
    #> 1 1     ph.ecog  <NA>    /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #> 2 2     ph.ecog  <NA>    /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #>
    #> attr(,"class")
    #> [1] "ezcox"
    #>
    #> $plot

    ezcox_group(lung, grp_var = "sex", covariate = "ph.ecog", controls = "age")
    #> => Processing variable 1
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> => Processing variable 2
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> covariates=NULL but drop_controls=TRUE, detecting controls...
    #> Yes. Setting variables to keep...
    #> Done.
    #> Returns a list containing data and ggplot.
    #> $data
    #> $stats
    #> # A tibble: 8 × 13
    #>   Group Variable is_control contr…¹ ref_l…² n_con…³ n_ref    beta     HR lower…⁴
    #>   <chr> <chr>    <lgl>      <chr>   <chr>     <dbl> <dbl>   <dbl>  <dbl>   <dbl>
    #> 1 1     ph.ecog  FALSE      1       0            71    36  0.353   1.42    0.897
    #> 2 1     ph.ecog  FALSE      2       0            29    36  0.809   2.24    1.32
    #> 3 1     ph.ecog  FALSE      3       0             1    36  1.77    5.86    0.767
    #> 4 1     ph.ecog  TRUE       age     age         138   138  0.0182  1.02    0.996
    #> 5 2     ph.ecog  FALSE      1       0            42    27  0.439   1.55    0.726
    #> 6 2     ph.ecog  FALSE      2       0            21    27  1.41    4.09    1.62
    #> 7 2     ph.ecog  FALSE      3       0             0    27 NA      NA      NA
    #> 8 2     ph.ecog  TRUE       age     age          90    90 -0.0153  0.985   0.952
    #> # … with 3 more variables: upper_95 <dbl>, p.value <dbl>, global.pval <dbl>,
    #> #   and abbreviated variable names ¹​contrast_level, ²​ref_level, ³​n_contrast,
    #> #   ⁴​lower_95
    #>
    #> $models
    #> # A tibble: 2 × 6
    #>   Group Variable control model_file                               model   status
    #>   <chr> <chr>    <chr>   <chr>                                    <list>  <lgl>
    #> 1 1     ph.ecog  age     /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #> 2 2     ph.ecog  age     /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #>
    #> attr(,"class")
    #> [1] "ezcox"
    #>
    #> $plot

    ezcox_group(lung, grp_var = "sex", covariate = "ph.ecog", controls = "age", add_all = TRUE)
    #> => Processing variable 1
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> => Processing variable 2
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> => Processing variable ALL
    #> ==> Building Surv object...
    #> ==> Building Cox model...
    #> ==> Done.
    #> covariates=NULL but drop_controls=TRUE, detecting controls...
    #> Yes. Setting variables to keep...
    #> Done.
    #> Returns a list containing data and ggplot.
    #> $data
    #> $stats
    #> # A tibble: 12 × 13
    #>    Group Variable is_cont…¹ contr…² ref_l…³ n_con…⁴ n_ref    beta     HR lower…⁵
    #>    <chr> <chr>    <lgl>     <chr>   <chr>     <dbl> <dbl>   <dbl>  <dbl>   <dbl>
    #>  1 1     ph.ecog  FALSE     1       0            71    36  0.353   1.42    0.897
    #>  2 1     ph.ecog  FALSE     2       0            29    36  0.809   2.24    1.32
    #>  3 1     ph.ecog  FALSE     3       0             1    36  1.77    5.86    0.767
    #>  4 1     ph.ecog  TRUE      age     age         138   138  0.0182  1.02    0.996
    #>  5 2     ph.ecog  FALSE     1       0            42    27  0.439   1.55    0.726
    #>  6 2     ph.ecog  FALSE     2       0            21    27  1.41    4.09    1.62
    #>  7 2     ph.ecog  FALSE     3       0             0    27 NA      NA      NA
    #>  8 2     ph.ecog  TRUE      age     age          90    90 -0.0153  0.985   0.952
    #>  9 ALL   ph.ecog  FALSE     1       0           113    63  0.359   1.43    0.969
    #> 10 ALL   ph.ecog  FALSE     2       0            50    63  0.857   2.36    1.5
    #> 11 ALL   ph.ecog  FALSE     3       0             1    63  2.11    8.23    1.09
    #> 12 ALL   ph.ecog  TRUE      age     age         228   228  0.0108  1.01    0.992
    #> # … with 3 more variables: upper_95 <dbl>, p.value <dbl>, global.pval <dbl>,
    #> #   and abbreviated variable names ¹​is_control, ²​contrast_level, ³​ref_level,
    #> #   ⁴​n_contrast, ⁵​lower_95
    #>
    #> $models
    #> # A tibble: 3 × 6
    #>   Group Variable control model_file                               model   status
    #>   <chr> <chr>    <chr>   <chr>                                    <list>  <lgl>
    #> 1 1     ph.ecog  age     /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #> 2 2     ph.ecog  age     /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #> 3 ALL   ph.ecog  age     /var/folders/bj/nw1w4g1j37ddpgb6zmh3sfh… <coxph> TRUE
    #>
    #> attr(,"class")
    #> [1] "ezcox"
    #>
    #> $plot