Commit Graph

55 Commits

Author SHA1 Message Date
RunasSudo 82f4a54421
turnbull: Add test case 2023-12-27 19:43:22 +11:00
RunasSudo d690da72e3
turnbull: Fix typo
Copy paste error in likelihood-ratio CIs resulting in lower confidence limit being reported as upper confidence limit
2023-12-26 23:45:28 +11:00
RunasSudo 162e415e07
turnbull: Clarify likelihood-ratio CI multithreading code
Remove unnecessary use of RwLock and use map-reduce instead
2023-12-26 23:41:12 +11:00
RunasSudo 204571d6cb
turnbull: Use smarter initial guesses for likelihood-ratio confidence intervals
When the survival probability at a point is the same as the previous point, the confidence interval should be similar
So re-use the final bracketing interval as the initial guess to save time in the root-finding

150% speedup!
2023-12-26 23:33:58 +11:00
RunasSudo b569956de7
turnbull: Update documentation to discuss Anderson–Björck algorithm 2023-12-26 21:43:43 +11:00
RunasSudo eada2cac7d
turnbull: Use Anderson–Björck method for likelihood-ratio confidence intervals
7.1% speedup compared with Illinois method
36% speedup compared with interval bisection
2023-12-26 19:28:01 +11:00
RunasSudo 759c2c4778
turnbull: Use Illinois method rather than interval bisection for likelihood-ratio confidence intervals
27% speedup
NB: Regula falsi alone without Illinois adjustment was slower than interval bisection
2023-12-26 19:18:38 +11:00
RunasSudo 760e3bbb0e
turnbull: Refactor root-finding code 2023-12-26 18:29:24 +11:00
RunasSudo 307aff6f14
turnbull: Disregard ICM step when computing likelihood-ratio confidence intervals
ICM step performance is heavily degraded when constraints are required
It is much faster to rely on the EM step alone
1275% speedup!
2023-12-25 22:25:50 +11:00
RunasSudo c9a8b5b8a5
turnbull: Terminate search for likelihood-ratio confidence intervals based on precision
81% speedup
Also resolves issue where confidence interval search would occasionally never terminate
2023-12-25 20:08:40 +11:00
RunasSudo c67965478d
turnbull: Gracefully handle the case where ICM does not increase the log-likelihood 2023-12-24 22:43:10 +11:00
RunasSudo 606c1636e0
turnbull: Fix issue with likelihood ratio-based confidence intervals
Previous logic resulted in EM-ICM algorithm terminating too early when constrained, resulting in imprecise confidence intervals
2023-12-24 22:17:32 +11:00
RunasSudo 434b432cf7
turnbull: Allow skipping computation of standard errors 2023-11-11 22:06:52 +11:00
RunasSudo 793e6309cf
turnbull: Add TODO 2023-11-11 22:06:44 +11:00
RunasSudo 8914cf3507
turnbull: Custom CSV implementation
Avoid unnecessary String allocation
13% speedup
2023-11-11 00:25:19 +11:00
RunasSudo b691c5a8d7
turnbull: Parallelise recoding times as indexes
11% speedup
2023-11-09 23:39:32 +11:00
RunasSudo b23ff26eac
turnbull: Implement CIs by likelihood ratio test 2023-10-29 17:09:49 +11:00
RunasSudo 993e4ba3e2
turnbull: Handle situation where EM algorithm yields exact solution 2023-10-29 13:53:20 +11:00
RunasSudo c87f42a042
turnbull: Rename other references from s to p post change to EM-ICM 2023-10-29 12:45:59 +11:00
RunasSudo f4d436e608
turnbull: Update documentation to reflect EM-ICM algorithm 2023-10-29 00:40:41 +11:00
RunasSudo 2880fe866d
Merge branch 'turnbull-emicm'
Change to EM-ICM algorithm to fit Turnbull estimator

Much more efficient - 19.7x speedup compared with old algorithm!
2023-10-29 00:01:35 +11:00
RunasSudo e726fad99b
turnbull: Improve efficiency of ICM step as suggested by Anderson-Bergman 2023-10-28 23:47:00 +11:00
RunasSudo 85e3ee0dcd
turnbull: Improve efficiency of EM step as suggested by Anderson-Bergman 2023-10-28 23:28:42 +11:00
RunasSudo 37c904bf34
turnbull: Refactor for profiling 2023-10-28 23:16:14 +11:00
RunasSudo 81b0b3f9b5
turnbull: Pre-compute survival probabilities 2023-10-28 23:08:03 +11:00
RunasSudo 250cfd8798
turnbull: Initial implementation of EM-ICM algorithm 2023-10-28 22:48:59 +11:00
RunasSudo 79c53895b0
turnbull: Change convergence tolerance to based on log-likelihood 2023-10-28 01:01:54 +11:00
RunasSudo 0e39402d3d
turnbull: Compute and display log-likelihood 2023-10-28 00:49:44 +11:00
RunasSudo 6fd0980277
turnbull: Parallelise compute_pi
37% speedup
2023-10-27 23:28:01 +11:00
RunasSudo 2c54c2be02
turnbull: Parallelise get_sum_fail_prob
37% speeedup
2023-10-27 23:11:29 +11:00
RunasSudo 18a0679476
turnbull: Use Vec<f64> throughout for better performance
Further 15% speedup
2023-10-22 19:09:01 +11:00
RunasSudo 8205e4acbc
turnbull: Improve performance of compute_pi
Faster to repeatedly index Vec than DVector, so work directly with Vec
80% speedup!
2023-10-22 18:56:27 +11:00
RunasSudo 22a2deca89
turnbull: Further refactoring for profiling 2023-10-22 18:41:40 +11:00
RunasSudo f043f7c67d
turnbull: Introduce analytical solution to computing Hessian
Makes runtime of computing Hessian negligible!
2023-10-20 20:47:49 +11:00
RunasSudo 0a8c77fa2c
turnbull: Refactor to aid profiling 2023-10-20 20:16:19 +11:00
RunasSudo dd24de5813
turnbull: Allow dropping columns/rows of Hessian corresponding to intervals with zero failure probability 2023-10-20 20:15:56 +11:00
RunasSudo 072d453d11
Add supplemental documentation for turnbull 2023-10-14 06:36:14 +11:00
RunasSudo fb4ca07131
Add test for turnbull 2023-10-14 06:20:37 +11:00
RunasSudo 67ce046522
Implement turnbull 2023-10-14 06:20:15 +11:00
RunasSudo 6c5ab0dd60
Transpose data_time_indexes in memory to avoid unnecessary matrix transposition 2023-05-01 00:13:32 +10:00
RunasSudo 1c08116f10
Avoid unnecessary Vec reallocations when computing time_points 2023-04-30 15:59:42 +10:00
RunasSudo 8aad020521
Fix help text references to E-M algorithm 2023-04-30 15:46:13 +10:00
RunasSudo 14c1944f92
Improve performance
Avoid unnecessary zeroing of input data matrices
2023-04-30 15:45:55 +10:00
RunasSudo 5876f724ad
Update intcox documentation 2023-04-29 19:08:12 +10:00
RunasSudo a1bb1568ad
Tidy update_beta 2023-04-29 18:29:33 +10:00
RunasSudo a58a52f682
Improve performance
Mostly, use BLAS functions to reduce unnecessary allocations for intermediate steps
2023-04-29 17:39:25 +10:00
RunasSudo cdc59da178
Change to ICM/Newton-Raphson algorithm 2023-04-29 00:37:30 +10:00
RunasSudo 1497e2d5cb
Add --ll_tolerance parameter for intcox 2023-04-23 18:36:28 +10:00
RunasSudo d0d92f2a78
Add supplemental documentation about intcox technical details 2023-04-23 15:54:23 +10:00
RunasSudo 45585a2b38
Add comments to M step 2023-04-22 23:57:17 +10:00