Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Easy way to to plot subgroups individually? #109

Open
rafanmir opened this issue Sep 14, 2023 · 1 comment
Open

Easy way to to plot subgroups individually? #109

rafanmir opened this issue Sep 14, 2023 · 1 comment

Comments

@rafanmir
Copy link

When we have subgroups in our models, is there an easy way to plot the subgroups as individual plots, instead of panels in the same plot?
I tried to use dplyr's filter to a cea object and I get the error message: no applicable method for 'filter' applied to an object of class "cea". I know I can filter the dataset before using the cea function and plot the individual groups but it'd be easier if we could do this on a cea object. Thanks

@dincerti
Copy link
Member

dincerti commented Nov 10, 2023

You can access any of the outputs like a normal list. For instance, to subset the NMB to the second subgroup

n_samples <- 30
sim <- data.table(
  sample = rep(seq(n_samples), 4),
  c = c(
    rlnorm(n_samples, 5, .1), 
    rlnorm(n_samples, 5, .1), 
    rlnorm(n_samples, 11, .1), 
    rlnorm(n_samples, 11, .1)
  ),
  e = c(
    rnorm(n_samples, 8, .2), 
    rnorm(n_samples, 8.5, .1), 
    rnorm(n_samples, 11, .6), 
    rnorm(n_samples, 11.5, .6)
  ),
  strategy_id = rep(1:2, each = n_samples * 2),
  grp_id = rep(rep(1:2, each = n_samples), 2)
)

# Cost-effectiveness analysis
cea_out <- cea(
  sim, 
  k = seq(0, 200000, 500), 
  sample = "sample", 
  strategy = "strategy_id", grp = "grp_id", 
  e = "e", 
  c = "c"
)

cea_out$evpi[grp_id == 2]
     grp_id      k best       enmbci       enmbpi          evpi
  1:      2      0    1    -152.6449    -152.6449  2.842171e-14
  2:      2    500    1    4085.0383    4085.0383  0.000000e+00
  3:      2   1000    1    8322.7216    8322.7216 -1.818989e-12
  4:      2   1500    1   12560.4048   12560.4048  0.000000e+00
  5:      2   2000    1   16798.0880   16798.0880  0.000000e+00
 ---                                                           
397:      2 198000    2 2191845.5819 2191845.5819 -4.656613e-10
398:      2 198500    2 2197534.7203 2197534.7203  0.000000e+00
399:      2 199000    2 2203223.8588 2203223.8588  4.656613e-10
400:      2 199500    2 2208912.9972 2208912.9972 -4.656613e-10
401:      2 200000    2 2214602.1356 2214602.1356  4.656613e-10

The output is a data.table. If you want to use dplyr, then convert the data.table to a tibble. You can then use your preferred package to make a plot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants