{
  "_id": "6a1f1db5b401979e7341fc37",
  "Package": "compositional.mle",
  "Type": "Package",
  "Title": "Compositional Maximum Likelihood Estimation",
  "Version": "2.0.0",
  "Authors@R": "person(\"Alexander\", \"Towell\", , \"queelius@gmail.com\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0001-6443-9897\"))",
  "Description": "Provides composable optimization strategies for maximum\nlikelihood estimation (MLE). Solvers are first-class functions\nthat combine via sequential chaining, parallel racing, and\nrandom restarts. Implements gradient ascent, Newton-Raphson,\nquasi-Newton (BFGS), and derivative-free methods with support\nfor constrained optimization and tracing. Returns 'mle' objects\ncompatible with 'algebraic.mle' for downstream analysis.\nMethods based on Nocedal J, Wright SJ (2006) \"Numerical\nOptimization\" <doi:10.1007/978-0-387-40065-5>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "ByteCompile": "true",
  "URL": "https://github.com/queelius/compositional.mle,\nhttps://queelius.github.io/compositional.mle/",
  "BugReports": "https://github.com/queelius/compositional.mle/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "RoxygenNote": "7.3.3",
  "Repository": "https://queelius.r-universe.dev",
  "Date/Publication": "2026-03-17 17:10:20 UTC",
  "RemoteUrl": "https://github.com/queelius/compositional.mle",
  "RemoteRef": "HEAD",
  "RemoteSha": "8f5fa087a6d45d5855c411571136b537c334e089",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-16 08:37:46 UTC",
    "User": "root"
  },
  "Author": "Alexander Towell [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-6443-9897>)",
  "Maintainer": "Alexander Towell <queelius@gmail.com>",
  "MD5sum": "b9c83b80063a17f62a0e70ee03edc94f",
  "_user": "queelius",
  "_type": "src",
  "_file": "compositional.mle_2.0.0.tar.gz",
  "_fileid": "39ca5e14082b0732f2777a071adbb4e0ab261a10a5632f08a38704d84dd68289",
  "_filesize": 1009415,
  "_sha256": "39ca5e14082b0732f2777a071adbb4e0ab261a10a5632f08a38704d84dd68289",
  "_created": "2026-05-16T08:37:46.000Z",
  "_published": "2026-06-02T18:15:17.166Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79140805833,
      "time": 130,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7032019367"
    },
    {
      "job": 79140806399,
      "time": 127,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032018997"
    },
    {
      "job": 79140805642,
      "time": 99,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7032015859"
    },
    {
      "job": 79140805538,
      "time": 117,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032017812"
    },
    {
      "job": 79140805523,
      "time": 192,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032005392"
    },
    {
      "job": 79140804949,
      "time": 107,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7366157295"
    },
    {
      "job": 79140805849,
      "time": 87,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7032014684"
    },
    {
      "job": 79140806522,
      "time": 80,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7032014017"
    },
    {
      "job": 79140805656,
      "time": 86,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7032014478"
    }
  ],
  "_buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/queelius/compositional.mle",
  "_commit": {
    "id": "8f5fa087a6d45d5855c411571136b537c334e089",
    "author": "Alex Towell <lex@metafunctor.com>",
    "committer": "Alex Towell <lex@metafunctor.com>",
    "message": "chore: update cran-comments for coordinated submission\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n",
    "time": 1773767420
  },
  "_maintainer": {
    "name": "Alexander Towell",
    "email": "queelius@gmail.com",
    "login": "queelius",
    "orcid": "0000-0001-6443-9897",
    "twitter": "@queelius",
    "uuid": 1896674
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "algebraic.mle",
      "version": ">= 2.0.0",
      "role": "Depends"
    },
    {
      "package": "MASS",
      "role": "Imports"
    },
    {
      "package": "numDeriv",
      "role": "Imports"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "tibble",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "cli",
      "role": "Suggests"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "hypothesize",
      "role": "Suggests"
    },
    {
      "package": "likelihood.model",
      "role": "Suggests"
    }
  ],
  "_owner": "queelius",
  "_selfowned": true,
  "_usedby": 1,
  "_updates": [
    {
      "week": "2025-40",
      "n": 1
    },
    {
      "week": "2025-48",
      "n": 1
    },
    {
      "week": "2025-49",
      "n": 2
    },
    {
      "week": "2025-50",
      "n": 1
    },
    {
      "week": "2025-51",
      "n": 5
    },
    {
      "week": "2026-03",
      "n": 5
    },
    {
      "week": "2026-05",
      "n": 6
    },
    {
      "week": "2026-06",
      "n": 8
    },
    {
      "week": "2026-11",
      "n": 1
    },
    {
      "week": "2026-12",
      "n": 4
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-11-25"
    },
    {
      "name": "v0.2.0",
      "date": "2025-12-18"
    },
    {
      "name": "v1.0.1",
      "date": "2026-02-05"
    },
    {
      "name": "v1.0.2",
      "date": "2026-02-05"
    }
  ],
  "_topics": [
    "composable",
    "dsl",
    "estimation",
    "maximum-likelihood",
    "mle",
    "mle-estimation",
    "numerical-methods",
    "optimization",
    "statistics"
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "queelius",
      "count": 49,
      "uuid": 1896674
    }
  ],
  "_userbio": {
    "uuid": 1896674,
    "type": "user",
    "name": "Alex Towell",
    "description": "Alexander Towell (Alex Towell). Reliability theory, encrypted search, algebraic structures. Building personal data tools."
  },
  "_downloads": {
    "count": 485,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/compositional.mle"
  },
  "_devurl": "https://github.com/queelius/compositional.mle",
  "_pkgdown": "https://queelius.github.io/compositional.mle/",
  "_searchresults": 9,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/compositional.mle.html",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/queelius/compositional.mle",
  "_realowner": "queelius",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.2",
      "date": "2026-02-16"
    },
    {
      "version": "2.0.0",
      "date": "2026-03-19"
    }
  ],
  "_exports": [
    "%>>%",
    "%|%",
    "bfgs",
    "chain",
    "clear_cache",
    "compose",
    "compose_transforms",
    "coordinate_ascent",
    "fisher_scoring",
    "get_fisher",
    "get_score",
    "gradient_ascent",
    "grid_search",
    "is_converged",
    "is_mle_constraint",
    "is_mle_problem",
    "is_solver_result",
    "is_tracing",
    "lbfgsb",
    "mle_constraint",
    "mle_problem",
    "mle_trace",
    "nelder_mead",
    "newton_raphson",
    "normal_sampler",
    "num_iterations",
    "optimization_path",
    "penalty_elastic_net",
    "penalty_l1",
    "penalty_l2",
    "race",
    "random_search",
    "sim_anneal",
    "uniform_sampler",
    "unless_converged",
    "with_penalty",
    "with_restarts",
    "with_subsampling"
  ],
  "_help": [
    {
      "page": "grapes-greater-than-greater-than-grapes",
      "title": "Sequential Solver Composition",
      "topics": [
        "%>>%"
      ]
    },
    {
      "page": "bfgs",
      "title": "BFGS Solver",
      "topics": [
        "bfgs"
      ]
    },
    {
      "page": "chain",
      "title": "Chain Solvers with Early Stopping",
      "topics": [
        "chain"
      ]
    },
    {
      "page": "clear_cache",
      "title": "Clear derivative cache",
      "topics": [
        "clear_cache"
      ]
    },
    {
      "page": "compose_transforms",
      "title": "Compose Multiple Function Transformations",
      "topics": [
        "compose_transforms"
      ]
    },
    {
      "page": "coordinate_ascent",
      "title": "Coordinate Ascent Solver",
      "topics": [
        "coordinate_ascent"
      ]
    },
    {
      "page": "fisher_scoring",
      "title": "Fisher Scoring Solver",
      "topics": [
        "fisher_scoring"
      ]
    },
    {
      "page": "get_fisher",
      "title": "Get Fisher information function from problem",
      "topics": [
        "get_fisher"
      ]
    },
    {
      "page": "get_score",
      "title": "Get score function from problem",
      "topics": [
        "get_score"
      ]
    },
    {
      "page": "gradient_ascent",
      "title": "Gradient Ascent Solver",
      "topics": [
        "gradient_ascent"
      ]
    },
    {
      "page": "grid_search",
      "title": "Grid Search Solver",
      "topics": [
        "grid_search"
      ]
    },
    {
      "page": "is_converged",
      "title": "Check if solver converged",
      "topics": [
        "is_converged"
      ]
    },
    {
      "page": "is_mle_constraint",
      "title": "Check if object is an mle_constraint",
      "topics": [
        "is_mle_constraint"
      ]
    },
    {
      "page": "is_mle_problem",
      "title": "Check if object is an mle_problem",
      "topics": [
        "is_mle_problem"
      ]
    },
    {
      "page": "is_solver_result",
      "title": "Check if object is a solver result",
      "topics": [
        "is_solver_result"
      ]
    },
    {
      "page": "is_tracing",
      "title": "Check if tracing is enabled",
      "topics": [
        "is_tracing"
      ]
    },
    {
      "page": "lbfgsb",
      "title": "L-BFGS-B Solver (Box Constrained)",
      "topics": [
        "lbfgsb"
      ]
    },
    {
      "page": "mle_constraint",
      "title": "Create domain constraint specification",
      "topics": [
        "mle_constraint"
      ]
    },
    {
      "page": "mle_problem",
      "title": "Create an MLE Problem Specification",
      "topics": [
        "mle_problem",
        "mle_problem.default",
        "mle_problem.likelihood_model",
        "print.mle_problem"
      ]
    },
    {
      "page": "mle_trace",
      "title": "Create a Trace Configuration",
      "topics": [
        "mle_trace",
        "print.mle_trace"
      ]
    },
    {
      "page": "nelder_mead",
      "title": "Nelder-Mead Solver (Derivative-Free)",
      "topics": [
        "nelder_mead"
      ]
    },
    {
      "page": "newton_raphson",
      "title": "Newton-Raphson Solver",
      "topics": [
        "newton_raphson"
      ]
    },
    {
      "page": "normal_sampler",
      "title": "Normal Sampler Factory",
      "topics": [
        "normal_sampler"
      ]
    },
    {
      "page": "num_iterations",
      "title": "Get number of iterations",
      "topics": [
        "num_iterations"
      ]
    },
    {
      "page": "optimization_path",
      "title": "Extract Optimization Path as Data Frame",
      "topics": [
        "optimization_path"
      ]
    },
    {
      "page": "penalty_elastic_net",
      "title": "Elastic net penalty (combination of L1 and L2)",
      "topics": [
        "penalty_elastic_net"
      ]
    },
    {
      "page": "penalty_l1",
      "title": "L1 penalty function (LASSO)",
      "topics": [
        "penalty_l1"
      ]
    },
    {
      "page": "penalty_l2",
      "title": "L2 penalty function (Ridge)",
      "topics": [
        "penalty_l2"
      ]
    },
    {
      "page": "plot.mle_trace_data",
      "title": "Plot Trace Data Directly",
      "topics": [
        "plot.mle_trace_data"
      ]
    },
    {
      "page": "plot.solver_result",
      "title": "Plot Optimization Convergence",
      "topics": [
        "plot.solver_result"
      ]
    },
    {
      "page": "print.mle_trace_data",
      "title": "Print MLE Trace Data",
      "topics": [
        "print.mle_trace_data"
      ]
    },
    {
      "page": "race",
      "title": "Race Multiple Solvers",
      "topics": [
        "race"
      ]
    },
    {
      "page": "race_operator",
      "title": "Parallel Solver Racing (Operator)",
      "topics": [
        "%|%",
        "race_operator"
      ]
    },
    {
      "page": "random_search",
      "title": "Random Search Solver",
      "topics": [
        "random_search"
      ]
    },
    {
      "page": "sim_anneal",
      "title": "Simulated Annealing Solver",
      "topics": [
        "sim_anneal"
      ]
    },
    {
      "page": "uniform_sampler",
      "title": "Uniform Sampler Factory",
      "topics": [
        "uniform_sampler"
      ]
    },
    {
      "page": "unless_converged",
      "title": "Conditional Refinement",
      "topics": [
        "unless_converged"
      ]
    },
    {
      "page": "update.mle_problem",
      "title": "Update an mle_problem",
      "topics": [
        "update.mle_problem"
      ]
    },
    {
      "page": "with_penalty",
      "title": "Add penalty term to log-likelihood",
      "topics": [
        "with_penalty"
      ]
    },
    {
      "page": "with_restarts",
      "title": "Multiple Random Restarts",
      "topics": [
        "with_restarts"
      ]
    },
    {
      "page": "with_subsampling",
      "title": "Create stochastic log-likelihood with subsampling",
      "topics": [
        "with_subsampling"
      ]
    }
  ],
  "_readme": "https://github.com/queelius/compositional.mle/raw/HEAD/README.md",
  "_rundeps": [
    "algebraic.dist",
    "algebraic.mle",
    "boot",
    "MASS",
    "mvtnorm",
    "numDeriv",
    "R6"
  ],
  "_vignettes": [
    {
      "source": "case-studies.Rmd",
      "filename": "case-studies.html",
      "title": "Case Studies: MLE for Common Distributions",
      "author": "Alexander Towell",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Case Study 1: Exponential Distribution",
        "Case Study 2: Gamma Distribution",
        "Composing Solvers: Grid Search + Gradient Ascent",
        "Case Study 3: Beta Distribution",
        "Case Study 4: Weibull Distribution",
        "Case Study 5: Mixture of Normals",
        "Summary"
      ],
      "created": "2025-12-02 06:46:27",
      "modified": "2025-12-18 04:49:00",
      "commits": 2
    },
    {
      "source": "strategy-design.Rmd",
      "filename": "strategy-design.html",
      "title": "Designing Optimization Strategies",
      "author": "Alexander Towell",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "The Problem: Why Composition?",
        "Single Solver: Often Fails",
        "Strategy 1: Coarse-to-Fine",
        "Strategy 2: Multiple Restarts",
        "Strategy 3: Racing Solvers",
        "Strategy 4: Global + Local",
        "Diagnosing Convergence",
        "Extracting Trace Data",
        "Benchmarking Strategies",
        "Best Practices",
        "1. Start Simple, Add Complexity",
        "2. Use Domain Knowledge for Initialization",
        "3. Match Solver to Problem",
        "4. Monitor Convergence",
        "Summary"
      ],
      "created": "2026-01-15 12:27:29",
      "modified": "2026-03-16 09:01:34",
      "commits": 2
    },
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with compositional.mle",
      "author": "Alexander Towell",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Installation",
        "Quick Start: Normal Distribution MLE",
        "The Problem-Solver Separation",
        "Composing Solvers",
        "Sequential Chaining (%>>%)",
        "Three-Stage Refinement",
        "Parallel Racing (%|%)",
        "Random Restarts",
        "Conditional Refinement",
        "Available Solvers",
        "Constraints",
        "Function Transformers",
        "Stochastic Gradient (Mini-batching)",
        "Regularization",
        "Tracing Optimization",
        "API Summary"
      ],
      "created": "2025-11-25 04:32:37",
      "modified": "2026-03-16 09:01:34",
      "commits": 3
    },
    {
      "source": "mle-ecosystem.Rmd",
      "filename": "mle-ecosystem.html",
      "title": "The MLE Ecosystem",
      "author": "Alexander Towell",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Composing Solvers",
        "The mle Result Object",
        "Combining Independent MLEs",
        "Hypothesis Testing with hypothesize",
        "Creating tests from MLE results",
        "Combining independent tests",
        "The testing interface",
        "Automatic Differentiation",
        "The likelihood.model Bridge",
        "The Ecosystem at a Glance"
      ],
      "created": "2026-02-01 22:34:30",
      "modified": "2026-03-16 09:01:34",
      "commits": 3
    },
    {
      "source": "theory-and-intuition.Rmd",
      "filename": "theory-and-intuition.html",
      "title": "Theory and Intuition Behind Numerical MLE",
      "author": "Alexander Towell",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What is Maximum Likelihood Estimation?",
        "The Likelihood Function",
        "Why Log-Likelihood?",
        "A Concrete Example",
        "The Score Function",
        "Intuition",
        "Gradient Ascent",
        "Why It Works",
        "The Challenge: Choosing the Step Size",
        "Line Search: Automatic Step Size Selection",
        "The Fisher Information Matrix",
        "Why It Matters",
        "Observed vs Expected Fisher Information",
        "Newton-Raphson",
        "Comparison",
        "Composing Solvers",
        "When to Use Which Method",
        "Constrained Optimization",
        "Projection Method",
        "Regularization and Penalized Likelihood",
        "Penalized Log-Likelihood",
        "Common Penalties",
        "Summary",
        "Further Reading"
      ],
      "created": "2025-12-02 06:46:27",
      "modified": "2026-03-16 09:01:34",
      "commits": 4
    }
  ],
  "_score": 5.8750612633917,
  "_indexed": true,
  "_nocasepkg": "compositional.mle",
  "_universes": [
    "queelius"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:53.000Z",
      "distro": "noble",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "d5fdb81e66e8d82dab056df2562b97dd3d028a692fd53a720a5d650c60cb25db",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:51.000Z",
      "distro": "noble",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "00be2d273883d39a1963e07454216d53b9a98b1f38bab82db4bf1caa60119e10",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:25.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "cdde7458de7162156ce48280170642a96089b4101c9d5e5c911fe8cb2bb7d5cc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:40.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "ebd8083a3ec83c852c691c8a1bbfef4c9431e6e76ddee78b5d60ecdb5a8a17bc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:03.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "d8c6bfeeed926195f3efdc133f50f4a1e681e261b917a91c4b7b69eb15cefc95",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "2.0.0",
      "date": "2026-05-16T08:38:53.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "b79e9bfb4cb407f5ca81b452a9cdad9cd55038ddec89478f501f2af5b6753e98",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "2.0.0",
      "date": "2026-05-16T08:39:01.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "f2da2c669b1c3dff81f3dca02f878879ccf3ddc20e9d44cd8799f985a42d01d5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "2.0.0",
      "date": "2026-06-02T18:14:48.000Z",
      "commit": "8f5fa087a6d45d5855c411571136b537c334e089",
      "fileid": "dd25db0d0f751124de67c8372cb2f37fd0d34f7e3a0ca3435f73473d6e87a7a7",
      "status": "success",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/25957443489"
    }
  ]
}