{"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/the-no-u-turn-sampler-adaptively-setting-path","title":"The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo","arxiv_id":"1111.4246","date":"2011-11-18","proceeding":null,"authors":["Matthew D. Hoffman","Andrew Gelman"],"abstract":"Hamiltonian Monte Carlo (HMC) is a Markov chain Monte Carlo (MCMC) algorithm\nthat avoids the random walk behavior and sensitivity to correlated parameters\nthat plague many MCMC methods by taking a series of steps informed by\nfirst-order gradient information. These features allow it to converge to\nhigh-dimensional target distributions much more quickly than simpler methods\nsuch as random walk Metropolis or Gibbs sampling. However, HMC's performance is\nhighly sensitive to two user-specified parameters: a step size {\\epsilon} and a\ndesired number of steps L. In particular, if L is too small then the algorithm\nexhibits undesirable random walk behavior, while if L is too large the\nalgorithm wastes computation. We introduce the No-U-Turn Sampler (NUTS), an\nextension to HMC that eliminates the need to set a number of steps L. NUTS uses\na recursive algorithm to build a set of likely candidate points that spans a\nwide swath of the target distribution, stopping automatically when it starts to\ndouble back and retrace its steps. Empirically, NUTS perform at least as\nefficiently as and sometimes more efficiently than a well tuned standard HMC\nmethod, without requiring user intervention or costly tuning runs. We also\nderive a method for adapting the step size parameter {\\epsilon} on the fly\nbased on primal-dual averaging. NUTS can thus be used with no hand-tuning at\nall. NUTS is also suitable for applications such as BUGS-style automatic\ninference engines that require efficient \"turnkey\" sampling algorithms.","url_abs":"http://arxiv.org/abs/1111.4246v1","url_pdf":"http://arxiv.org/pdf/1111.4246v1.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":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/4ment/phylostan","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/ColCarroll/minimc","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/JohannesBuchner/PinNUTS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/Matematija/continuous-vmc","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/al-jshen/d2b","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/al-jshen/gmestan-examples","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/lukuiR/Stan","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"the-no-u-turn-sampler-adaptively-setting-path","repo_url":"https://github.com/mfouesneau/NUTS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1111.4246","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1111.4246"}},"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/al-jshen/gmestan-examples","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ColCarroll/minimc","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Matematija/continuous-vmc","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/al-jshen/d2b","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mfouesneau/NUTS","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/JohannesBuchner/PinNUTS","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/4ment/phylostan","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lukuiR/Stan","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":2,"ran_fixture":2,"ran_honours":1,"ran_violates":1,"unverified":3},"by_repo_kind":{"listed":{"samples":9,"ran":6,"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":0,"samples":[{"code_sha256_prefix":"20075d35f2319a01","entry":"find_reasonable_epsilon","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"nuts/nuts.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/nuts/nuts.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"20075d35f2319a01"}},{"code_sha256_prefix":"537a746770a10e4a","entry":"grad_logLikelihood","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"examples/imf_examples.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/examples/imf_examples.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"537a746770a10e4a"}},{"code_sha256_prefix":"7475a1db9181c908","entry":"leapfrog","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"nuts/nuts.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/nuts/nuts.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7475a1db9181c908"}},{"code_sha256_prefix":"18842e42f9d6dd71","entry":"logLikelihood","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"examples/imf_examples.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/examples/imf_examples.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"18842e42f9d6dd71"}},{"code_sha256_prefix":"cb1a1453761fca1d","entry":"random_PowerLaw","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"examples/imf_examples.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/examples/imf_examples.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cb1a1453761fca1d"}},{"code_sha256_prefix":"e6fec7e2a2392138","entry":"stop_criterion","repo":"mfouesneau/NUTS","repo_kind":"listed","path":"nuts/nuts.py","file_url":"https://github.com/mfouesneau/NUTS/blob/HEAD/nuts/nuts.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6fec7e2a2392138"}},{"code_sha256_prefix":"4d864798cca4b23b","entry":"build_tree","repo":"JohannesBuchner/PinNUTS","repo_kind":"listed","path":"pinnuts/pinnuts.py","file_url":"https://github.com/JohannesBuchner/PinNUTS/blob/HEAD/pinnuts/pinnuts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4d864798cca4b23b"}},{"code_sha256_prefix":"4f8a7d049558a7a8","entry":"pinnuts","repo":"JohannesBuchner/PinNUTS","repo_kind":"listed","path":"pinnuts/pinnuts.py","file_url":"https://github.com/JohannesBuchner/PinNUTS/blob/HEAD/pinnuts/pinnuts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4f8a7d049558a7a8"}},{"code_sha256_prefix":"86a695959d00fddb","entry":"tree_sample","repo":"JohannesBuchner/PinNUTS","repo_kind":"listed","path":"pinnuts/pinnuts.py","file_url":"https://github.com/JohannesBuchner/PinNUTS/blob/HEAD/pinnuts/pinnuts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"86a695959d00fddb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}