You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://app.codecov.io/gh/MSDLLCpapers/dynamicpv)
22
22
<!-- badges: end -->
23
23
24
24
The goal of *dynamicpv* is to evaluate present values and cost-effectiveness with dynamic pricing and uptake.
25
25
26
-
Through the [dynpv()](https://msdllcpapers.github.io/dynacem/reference/dynpv.html) function, the package provides calculations of the present values of costs, life years, QALYs or other payoffs allowing for dynamic uptake (also known as multiple cohorts) and dynamic pricing (also known as life-cycle). The starting point is a conventional cohort cost-effectiveness model, such as one computed using the [heemod](https://cran.r-project.org/package=heemod) package.
26
+
Through the [dynpv()](https://msdllcpapers.github.io/dynamicpv/reference/dynpv.html) function, the package provides calculations of the present values of costs, life years, QALYs or other payoffs allowing for dynamic uptake (also known as multiple cohorts) and dynamic pricing (also known as life-cycle). The starting point is a conventional cohort cost-effectiveness model, such as one computed using the [heemod](https://cran.r-project.org/package=heemod) package.
27
27
28
28
## Installation
29
29
@@ -34,15 +34,15 @@ You can install the development version of *dynamicpv* from [GitHub](https://git
34
34
# Install devtools package if not already installed
35
35
install.packages("devtools")
36
36
37
-
# Install dynamicpv using pak, from MSD's dynacem repository
38
-
pak::pak("MSDLLCpapers/dynacem")
37
+
# Install dynamicpv using pak from MSD repository
38
+
pak::pak("MSDLLCpapers/dynamicpv")
39
39
```
40
40
41
41
Note that the above does not install vignettes. Vignettes may be viewed on the [package website](https://msdllcpapers.github.io/dynacem) or by instead running the following.
You should then load the package, alongside some other packages used here.
@@ -63,11 +63,11 @@ library(tidyr)
63
63
64
64
There are four vignettes provided.
65
65
66
-
1. The [Dynamic Pricing](https://msdllcpapers.github.io/dynacem/articles/dynamic-pricing.html) vignette (`vignette("dynamic-pricing")`) describes how present values may be calculated in the package from a payoff vector, allowing for the prices of the resources costed to be dynamic.
66
+
1. The [Dynamic Pricing](https://msdllcpapers.github.io/dynamicpv/articles/dynamic-pricing.html) vignette (`vignette("dynamic-pricing")`) describes how present values may be calculated in the package from a payoff vector, allowing for the prices of the resources costed to be dynamic.
67
67
68
-
2. The [Dynamic Uptake](https://msdllcpapers.github.io/dynacem/articles/dynamic-uptake.html) vignette (`vignette("dynamic-uptake")`) explores further how present values can be derived allowing for dynamic uptake. This is in contrast to the non-dynamic approach of calculating a present value for a single cohort of patients. This is analogous to the use by general insurance actuaries of run-off triangles.
68
+
2. The [Dynamic Uptake](https://msdllcpapers.github.io/dynamicpv/articles/dynamic-uptake.html) vignette (`vignette("dynamic-uptake")`) explores further how present values can be derived allowing for dynamic uptake. This is in contrast to the non-dynamic approach of calculating a present value for a single cohort of patients. This is analogous to the use by general insurance actuaries of run-off triangles.
69
69
70
-
3. The [Cost-Effectiveness Applications](https://msdllcpapers.github.io/dynacem/articles/cost-effectiveness-applications.html) (`vignette(cost-effectiveness-applications")`) vignette describes how, given a static cost-effectiveness model (single cohort, prices constant in real terms), Incremental Cost-Effectiveness Ratios may be calculated that allow for dynamic pricing and/or dynamic uptake. This is illustrated by taking an example three-state partitioned survival model of a new intervention for an oncology indication compared to standard of care, with stated assumptions for how pricing and uptake may be dynamic. Nominal and Real ICERs are plotted over time, illustrating the impact of the loss of exclusivity points for each intervention.
70
+
3. The [Cost-Effectiveness Applications](https://msdllcpapers.github.io/dynamicpv/articles/cost-effectiveness-applications.html) (`vignette(cost-effectiveness-applications")`) vignette describes how, given a static cost-effectiveness model (single cohort, prices constant in real terms), Incremental Cost-Effectiveness Ratios may be calculated that allow for dynamic pricing and/or dynamic uptake. This is illustrated by taking an example three-state partitioned survival model of a new intervention for an oncology indication compared to standard of care, with stated assumptions for how pricing and uptake may be dynamic. Nominal and Real ICERs are plotted over time, illustrating the impact of the loss of exclusivity points for each intervention.
71
71
72
-
4. The [Budget Impact Applications](https://msdllcpapers.github.io/dynacem/articles/budget-impact-applications.html) (`vignette("budget-impact-applications")`) vignette describes how, given a static cost-effectiveness model (single cohort, prices constant in real terms) and dynamic uptake, a budget impact can be readily calculated. The calculations are repeated with the dynamic pricing assumptions to illustrate how easily this can be done, and examine the differences between a budget impact assessment with and without dynamic pricing.
72
+
4. The [Budget Impact Applications](https://msdllcpapers.github.io/dynamicpv/articles/budget-impact-applications.html) (`vignette("budget-impact-applications")`) vignette describes how, given a static cost-effectiveness model (single cohort, prices constant in real terms) and dynamic uptake, a budget impact can be readily calculated. The calculations are repeated with the dynamic pricing assumptions to illustrate how easily this can be done, and examine the differences between a budget impact assessment with and without dynamic pricing.
Copy file name to clipboardExpand all lines: vignettes/cost-effectiveness-applications.Rmd
+36-12Lines changed: 36 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -425,56 +425,61 @@ head(hemout_new)
425
425
With non-dynamic uptake, we use `uptakes`=`uptake_single`=1. Drug acquisition costs are constant in real terms (`prices=prices_static`) and are discounted at the risk-free real rate (`discrate=disc_cycle`). Other costs rise in line with general price inflation (`prices=prices_oth`) and are discounted at nominal discount rates (`discrate=nomdisc_cycle`). QALYs are not affected by price inflation (`prices=prices_static`) and are discounted at the risk-free real rate (`discrate=disc_cycle`).
426
426
427
427
```{r scen1}
428
-
# SOC
428
+
# SOC, costs other than drug acquisition
429
429
s1_soc_othcost <- dynamicpv::dynpv(
430
430
uptakes = uptake_single,
431
431
payoffs = hemout_soc$cost_nondaq_rup,
432
432
prices = prices_oth,
433
433
discrate = nomdisc_cycle
434
434
)
435
435
436
+
# SOC, drug acquisition costs
436
437
s1_soc_daqcost <- dynamicpv::dynpv(
437
438
uptakes = uptake_single,
438
439
payoffs = hemout_soc$cost_daq_soc_rup,
439
440
prices = prices_static,
440
441
discrate = disc_cycle
441
442
)
442
443
444
+
# SOC, total costs
443
445
s1_soc_cost <- s1_soc_daqcost + s1_soc_othcost
444
446
447
+
# SOC, QALYs
445
448
s1_soc_qaly <- dynamicpv::dynpv(
446
449
uptakes = uptake_single,
447
450
payoffs = hemout_soc$qaly_rup,
448
451
prices = prices_static,
449
452
discrate = disc_cycle
450
453
)
451
454
452
-
# New intervention
453
-
455
+
# New intervention, costs other than drug acquisition
@@ -487,31 +492,38 @@ These results show that the new intervention is associated with $`r s1_icost` in
487
492
The costs of drug acquisition in each arm differ in Scenario 2 through applying the relevant dynamic price index (`prices_dyn_soc` and `prices_dyn_new`), with discounting at nominal rates (`discrate = nomdisc_cycle`). Otherwise costs and QALYs are unchanged from Scenario 1.
488
493
489
494
```{r calc_scen2}
490
-
# SOC
495
+
# SOC, costs other than drug acquisition are unchanged
491
496
s2_soc_othcost <- s1_soc_othcost
492
497
498
+
# SoC, drug acquisition costs
493
499
s2_soc_daqcost <- dynamicpv::dynpv(
494
500
uptakes = uptake_single,
495
501
payoffs = hemout_soc$cost_daq_soc_rup,
496
502
prices = prices_dyn_soc,
497
503
discrate = nomdisc_cycle
498
504
)
499
505
506
+
# SoC, total costs
500
507
s2_soc_cost <- s2_soc_daqcost + s2_soc_othcost
501
-
s2_soc_qaly <- s1_soc_qaly
502
508
503
-
# New intervention
509
+
# SoC, QALYs are unchanged
510
+
s2_soc_qaly <- s1_soc_qaly
504
511
512
+
# New intervention, costs other than drug acquisition are unchanged
505
513
s2_new_othcost <- s1_new_othcost
506
514
515
+
# New intervention, drug acquisition costs
507
516
s2_new_daqcost <- dynamicpv::dynpv(
508
517
uptakes = uptake_single,
509
518
payoffs = hemout_new$cost_daq_new_rup,
510
519
prices = prices_dyn_new,
511
520
discrate = nomdisc_cycle
512
521
)
513
522
523
+
# New intervention, total costs
514
524
s2_new_cost <- s2_new_daqcost + s2_new_othcost
525
+
526
+
# New intervention, QALYs are unchanged
515
527
s2_new_qaly <- s1_new_qaly
516
528
517
529
# Incrementals
@@ -527,47 +539,53 @@ Under scenario 2, the new intervention has an incremental cost-effectiveness of
527
539
The calculation for Scenario 3 is the same as for Scenario 1 except for dynamic uptake, which is handled by setting `uptakes = uptake_multi`.
528
540
529
541
```{r calc_scen3}
530
-
# SOC
542
+
# SOC, costs other than drug acquisition
531
543
s3_soc_othcost <- dynamicpv::dynpv(
532
544
uptakes = uptake_multi,
533
545
payoffs = hemout_soc$cost_nondaq_rup,
534
546
prices = prices_oth,
535
547
discrate = nomdisc_cycle
536
548
)
537
549
550
+
# SoC, drug acquisition costs
538
551
s3_soc_daqcost <- dynamicpv::dynpv(
539
552
uptakes = uptake_multi,
540
553
payoffs = hemout_soc$cost_daq_soc_rup,
541
554
prices = prices_static,
542
555
discrate = disc_cycle
543
556
)
544
557
558
+
# SoC, total costs
545
559
s3_soc_cost <- s3_soc_daqcost + s3_soc_othcost
546
560
561
+
# SoC, QALYs
547
562
s3_soc_qaly <- dynamicpv::dynpv(
548
563
uptakes = uptake_multi,
549
564
payoffs = hemout_soc$qaly_rup,
550
565
prices = prices_static,
551
566
discrate = disc_cycle
552
567
)
553
568
554
-
# New intervention
569
+
# New intervention, costs other than drug acquisition
555
570
s3_new_othcost <- dynamicpv::dynpv(
556
571
uptakes = uptake_multi,
557
572
payoffs = hemout_new$cost_nondaq_rup,
558
573
prices = prices_oth,
559
574
discrate = nomdisc_cycle
560
575
)
561
576
577
+
# New intervention, drug acquisition costs
562
578
s3_new_daqcost <- dynamicpv::dynpv(
563
579
uptakes = uptake_multi,
564
580
payoffs = hemout_new$cost_daq_new_rup,
565
581
prices = prices_static,
566
582
discrate = disc_cycle
567
583
)
568
584
585
+
# New intervention, total costs
569
586
s3_new_cost <- s3_new_daqcost + s3_new_othcost
570
587
588
+
# New intervention, QALYs
571
589
s3_new_qaly <- dynamicpv::dynpv(
572
590
uptakes = uptake_multi,
573
591
payoffs = hemout_new$qaly_rup,
@@ -588,32 +606,38 @@ Under scenario 3, the new intervention has an incremental cost-effectiveness of
588
606
The costs of drug acquisition in each arm differ in Scenario 4 from Scenario 3 through applying the relevant dynamic price index (`prices_dyn_soc` and `prices_dyn_new`). Otherwise costs and QALYs are unchanged from Scenario 3.
589
607
590
608
```{r calc_scen4}
591
-
# SOC
609
+
# SOC, costs other than drug acquisition are unchanged
592
610
s4_soc_othcost <- s3_soc_othcost
593
611
612
+
# SoC, drug acquisition costs
594
613
s4_soc_daqcost <- dynamicpv::dynpv(
595
614
uptakes = uptake_multi,
596
615
payoffs = hemout_soc$cost_daq_soc_rup,
597
616
prices = prices_dyn_soc,
598
617
discrate = nomdisc_cycle
599
618
)
600
619
620
+
# SoC, total costs
601
621
s4_soc_cost <- s4_soc_daqcost + s4_soc_othcost
602
622
623
+
# SoC, QALYs are unchanged
603
624
s4_soc_qaly <- s3_soc_qaly
604
625
605
-
# New intervention
606
-
626
+
# New intervention, costs other than drug acquisition are unchanged
0 commit comments