{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/an-introduction-to-deep-survival-analysis","title":"An Introduction to Deep Survival Analysis Models for Predicting Time-to-Event Outcomes","arxiv_id":"2410.01086","date":"2024-10-01","proceeding":null,"authors":["George H. Chen"],"abstract":"Many applications involve reasoning about time durations before a critical event happens--also called time-to-event outcomes. When will a customer cancel a subscription, a coma patient wake up, or a convicted criminal reoffend? Time-to-event outcomes have been studied extensively within the field of survival analysis primarily by the statistical, medical, and reliability engineering communities, with textbooks already available in the 1970s and '80s. This monograph aims to provide a reasonably self-contained modern introduction to survival analysis. We focus on predicting time-to-event outcomes at the individual data point level with the help of neural networks. Our goal is to provide the reader with a working understanding of precisely what the basic time-to-event prediction problem is, how it differs from standard regression and classification, and how key \"design patterns\" have been used time after time to derive new time-to-event prediction models, from classical methods like the Cox proportional hazards model to modern deep learning approaches such as deep kernel Kaplan-Meier estimators and neural ordinary differential equation models. We further delve into two extensions of the basic time-to-event prediction setup: predicting which of several critical events will happen first along with the time until this earliest event happens (the competing risks setting), and predicting time-to-event outcomes given a time series that grows in length over time (the dynamic setting). We conclude with a discussion of a variety of topics such as fairness, causal reasoning, interpretability, and statistical guarantees. Our monograph comes with an accompanying code repository that implements every model and evaluation metric that we cover in detail.","url_abs":"https://arxiv.org/abs/2410.01086v1","url_pdf":"https://arxiv.org/pdf/2410.01086v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"an-introduction-to-deep-survival-analysis","repo_url":"https://github.com/georgehc/survival-intro","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"an-introduction-to-deep-survival-analysis","repo_url":"https://github.com/georgehc/survival-kernets","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"fairness","task_name":"Fairness"},{"task_slug":"survival-analysis","task_name":"Survival Analysis"},{"task_slug":"time-to-event-prediction","task_name":"Time-to-Event Prediction"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2410.01086","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.01086"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/georgehc/survival-kernets","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/georgehc/survival-intro","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_draft_wrong":2,"ran":14,"ran_honours":4,"unverified":4},"by_repo_kind":{"official":{"samples":24,"ran":20,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":24,"samples":[{"code_sha256_prefix":"8c6b999f5a291101","entry":"to_np","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/utils.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/utils.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c6b999f5a291101"}},{"code_sha256_prefix":"52d5f198b90bb262","entry":"create_nn","repo":"georgehc/survival-intro","repo_kind":"official","path":"ddh/ddh_torch.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/ddh/ddh_torch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"52d5f198b90bb262"}},{"code_sha256_prefix":"7bfce1592a02f7e9","entry":"detach","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/trainers.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/trainers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7bfce1592a02f7e9"}},{"code_sha256_prefix":"b1d4aaf3b715111b","entry":"fit_spline","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/models/cmhe/cmhe_utilities.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/models/cmhe/cmhe_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b1d4aaf3b715111b"}},{"code_sha256_prefix":"8a71ec1e151548d6","entry":"func","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/utils.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8a71ec1e151548d6"}},{"code_sha256_prefix":"1da6236015a64aa4","entry":"increase_censoring","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/datasets.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1da6236015a64aa4"}},{"code_sha256_prefix":"7ff6e606bed62ed3","entry":"interp_x","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/utils.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7ff6e606bed62ed3"}},{"code_sha256_prefix":"d6a878606f6a3f6f","entry":"longitudinal_loss","repo":"georgehc/survival-intro","repo_kind":"official","path":"ddh/losses.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/ddh/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d6a878606f6a3f6f"}},{"code_sha256_prefix":"567c99195b85caf2","entry":"make_net","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/models.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"567c99195b85caf2"}},{"code_sha256_prefix":"f723cd6ace3ba402","entry":"make_sequential","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/models.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f723cd6ace3ba402"}},{"code_sha256_prefix":"bc29d076eaa13d90","entry":"my_collate_fn","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/data.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/data.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"bc29d076eaa13d90"}},{"code_sha256_prefix":"69bfc00eeb85b25c","entry":"negative_log_likelihood","repo":"georgehc/survival-intro","repo_kind":"official","path":"ddh/losses.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/ddh/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"69bfc00eeb85b25c"}},{"code_sha256_prefix":"d87ff0ee47cb77cd","entry":"one_hot","repo":"georgehc/survival-intro","repo_kind":"official","path":"survival_kernets/models.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/survival_kernets/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d87ff0ee47cb77cd"}},{"code_sha256_prefix":"102f1425a4917f1d","entry":"partial_ll_loss","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/models/cmhe/cmhe_utilities.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/models/cmhe/cmhe_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"102f1425a4917f1d"}},{"code_sha256_prefix":"27e716aceab3fcaa","entry":"randargmax","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/models/cmhe/cmhe_utilities.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/models/cmhe/cmhe_utilities.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"27e716aceab3fcaa"}},{"code_sha256_prefix":"2380394e460c5784","entry":"sample_category","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/generate_config.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/generate_config.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2380394e460c5784"}},{"code_sha256_prefix":"1104ebe17294a696","entry":"sample_value","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/generate_config.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/generate_config.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1104ebe17294a696"}},{"code_sha256_prefix":"6cc8b743622a8f3c","entry":"sample_variable","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/generate_config.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/generate_config.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6cc8b743622a8f3c"}},{"code_sha256_prefix":"aa4a7d9530f13f53","entry":"squared_pairwise_distances","repo":"georgehc/survival-kernets","repo_kind":"official","path":"neural_kernel_survival.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/neural_kernel_survival.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"aa4a7d9530f13f53"}},{"code_sha256_prefix":"b5d35227baebad44","entry":"symmetric_squared_pairwise_distances","repo":"georgehc/survival-intro","repo_kind":"official","path":"survival_kernets/models.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/survival_kernets/models.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b5d35227baebad44"}},{"code_sha256_prefix":"b6d48c9705133e88","entry":"load_dataset","repo":"georgehc/survival-intro","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b6d48c9705133e88"}},{"code_sha256_prefix":"d709035f8bc4eade","entry":"load_dataset","repo":"georgehc/survival-kernets","repo_kind":"official","path":"auton_survival/datasets.py","file_url":"https://github.com/georgehc/survival-kernets/blob/HEAD/auton_survival/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d709035f8bc4eade"}},{"code_sha256_prefix":"ca173721c4603ffb","entry":"make_layer","repo":"georgehc/survival-intro","repo_kind":"official","path":"SODEN/models.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/SODEN/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ca173721c4603ffb"}},{"code_sha256_prefix":"4a96f84d0275b9e5","entry":"ranking_loss","repo":"georgehc/survival-intro","repo_kind":"official","path":"ddh/losses.py","file_url":"https://github.com/georgehc/survival-intro/blob/HEAD/ddh/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"4a96f84d0275b9e5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}