{
  "_id": "6ac0660a91601a2ad2996a44",
  "Package": "ungroup",
  "Type": "Package",
  "Title": "Penalized Composite Link Model for Efficient Estimation of\nSmooth Distributions from Coarsely Binned Data",
  "Version": "1.6.3",
  "Authors@R": "c(\nperson(\"Marius D.\", \"Pascariu\", role = c(\"aut\", \"cre\"), email = \"rpascariu@outlook.com\", comment = c(ORCID = \"0000-0002-2568-6489\")),\nperson(\"Silvia\", \"Rizzi\", role = \"aut\", email = \"srizzi@health.sdu.dk\"),\nperson(\"Jonas\", \"Schoeley\", role = \"aut\", comment = c(ORCID = \"0000-0002-3340-8518\")),\nperson(\"Maciej J.\", \"Danko\", role = \"aut\", email = \"Danko@demogr.mpg.de\", comment = c(ORCID = \"0000-0002-7924-9022\"))\n)",
  "Description": "Versatile method for ungrouping histograms (binned count\ndata) assuming that counts are Poisson distributed and that the\nunderlying sequence on a fine grid to be estimated is smooth.\nThe method is based on the composite link model and estimation\nis achieved by maximizing a penalized likelihood. Smooth\ndetailed sequences of counts and rates are so estimated from\nthe binned counts. Ungrouping binned data can be desirable for\nmany reasons: Bins can be too coarse to allow for accurate\nanalysis; comparisons can be hindered when different grouping\napproaches are used in different histograms; and the last\ninterval is often wide and open-ended and, thus, covers a lot\nof information in the tail area. Age-at-death distributions\ngrouped in age classes and abridged life tables are examples of\nbinned data. Because of modest assumptions, the approach is\nsuitable for many demographic and epidemiological applications.\nFor a detailed description of the method and applications see\nRizzi et al. (2015) <doi:10.1093/aje/kwv020>.",
  "License": "MIT + file LICENSE",
  "LazyData": "TRUE",
  "RdMacros": "Rdpack",
  "URL": "https://github.com/mpascariu/ungroup",
  "BugReports": "https://github.com/mpascariu/ungroup/issues",
  "VignetteBuilder": "knitr",
  "Encoding": "UTF-8",
  "Config/roxygen2/version": "8.1.0",
  "Repository": "https://mpascariu.r-universe.dev",
  "Date/Publication": "2026-10-02 23:06:39 UTC",
  "RemoteUrl": "https://github.com/mpascariu/ungroup",
  "RemoteRef": "HEAD",
  "RemoteSha": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-10-03 02:13:01 UTC",
    "User": "root"
  },
  "Author": "Marius D. Pascariu [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-2568-6489>),\nSilvia Rizzi [aut],\nJonas Schoeley [aut] (ORCID: <https://orcid.org/0000-0002-3340-8518>),\nMaciej J. Danko [aut] (ORCID: <https://orcid.org/0000-0002-7924-9022>)",
  "Maintainer": "Marius D. Pascariu <rpascariu@outlook.com>",
  "_user": "mpascariu",
  "_type": "src",
  "_file": "ungroup_1.6.3.tar.gz",
  "_fileid": "https://r2.ropensci.org/4fe0e9831704760790ae6521772e0be821d7e630146385ac1ccf22b85459cf78",
  "_filesize": 1552181,
  "_sha256": "4fe0e9831704760790ae6521772e0be821d7e630146385ac1ccf22b85459cf78",
  "_expires": "2027-01-11T02:18:48.000Z",
  "_created": "2026-10-03T02:13:01.000Z",
  "_published": "2026-10-03T02:18:50.367Z",
  "_jobs": [
    {
      "job": 111105262987,
      "time": 126,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11262160352"
    },
    {
      "job": 111105262992,
      "time": 155,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11261945776"
    },
    {
      "job": 111105263042,
      "time": 126,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11261512000"
    },
    {
      "job": 111105263022,
      "time": 129,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11261945727"
    },
    {
      "job": 111105262996,
      "time": 133,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11262170297"
    },
    {
      "job": 111105263000,
      "time": 224,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11261861517"
    },
    {
      "job": 111105263048,
      "time": 156,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11262340185"
    },
    {
      "job": 111105263033,
      "time": 229,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11261537083"
    },
    {
      "job": 111104467416,
      "time": 256,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11261354465"
    },
    {
      "job": 111105262971,
      "time": 108,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11262310096"
    },
    {
      "job": 111105263016,
      "time": 293,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11261447470"
    },
    {
      "job": 111105263060,
      "time": 157,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11261731844"
    },
    {
      "job": 111105262997,
      "time": 118,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11262165321"
    },
    {
      "job": 111105263081,
      "time": 213,
      "config": "windows-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11262230390"
    },
    {
      "job": 111105263027,
      "time": 144,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11261279673"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113",
  "_status": "success",
  "_upstream": "https://github.com/mpascariu/ungroup",
  "_commit": {
    "id": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
    "author": "Marius D Pascariu <rpascariu@outlook.com>",
    "committer": "Marius D Pascariu <rpascariu@outlook.com>",
    "message": "v1.6.3 - \"quiet ledger\" - fix observed-surface plot, drop dead code\n\nThe observed surface of a pclm2D fit refused to draw whenever the exposures\nhad been ungrouped first, which is a documented, supported input.\n\nplot.pclm2D\n- type = \"observed\" divides the counts by the offset to draw rates. The\n  guard meant to check that the two shared a grid was written as\n  all(dim(Y) != dim(Ex)), where Y is the plot axis vector whose dim() is\n  always NULL. Y != dim(Ex) is therefore all(logical(0)) == TRUE, ok was\n  always TRUE, and input$offset reached the division unresolved. With an\n  ungrouped offset, which has one row per fine cell instead of one per input\n  bin, the division aborted in Ops.data.frame with \"'/' only defined for\n  equally-sized data frames\".\n- The guard itself goes back to the 2018 rgl code, which compared dim(y) with\n  dim(Ex) and drew when they matched. The rgl purge in 3e339b2 swapped y for\n  the axis vector and inverted both branches, so the warning it guarded became\n  unreachable and the crash it prevented became reachable.\n- Reduce a fine-grid offset to the input bins with findInterval over the bin\n  locations before dividing. Verified against the model's own composition\n  matrix: findInterval(output$location, input$location) reproduces\n  apply(build_C_matrix(...)$CA, 2, which.max) exactly.\n- Delete the ok flag, the dead warning and the else return(NULL) that no\n  longer has a branch to serve. Drop the unused object alias.\n\nDead code\n- pclm.input.check: drop the is.array(y) guard. pclm() runs as.numeric(y)\n  first and pclm2D() runs as.data.frame(y) first, so the test cannot be TRUE\n  at that point.\n- pclm.input.check: drop the opt.method check. control.pclm() runs match.arg\n  on the same argument before pclm.input.check ever sees it.\n- pclm_loop: drop the second ldlt.info() check after solve(). Eigen sets\n  info() in compute() alone, and _solve_impl is const and never writes\n  m_info, so a successful factorization already covers the solve.\n\nTests\n- New",
    "time": 1790982399
  },
  "_maintainer": {
    "name": "Marius D. Pascariu",
    "email": "rpascariu@outlook.com",
    "login": "mpascariu",
    "description": "R&D actuary. Statistical demographer. Data scientist. Interested in mortality modelling and forecasting & finance.",
    "uuid": 6264977,
    "orcid": "0000-0002-2568-6489"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.4",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "RcppEigen",
      "version": ">= 0.3.4.0.2",
      "role": "LinkingTo"
    },
    {
      "package": "pbapply",
      "version": ">= 1.7-4",
      "role": "Imports"
    },
    {
      "package": "Rcpp",
      "version": ">= 1.1.1",
      "role": "Imports"
    },
    {
      "package": "Rdpack",
      "version": ">= 2.6.6",
      "role": "Imports"
    },
    {
      "package": "Matrix",
      "version": ">= 1.7-5",
      "role": "Imports"
    },
    {
      "package": "MortalityLaws",
      "version": ">= 2.1.3",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "version": ">= 1.51",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "version": ">= 2.31",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.3.2",
      "role": "Suggests"
    }
  ],
  "_owner": "mpascariu",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-18",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 6
    }
  ],
  "_tags": [],
  "_topics": [
    "distributions",
    "glm",
    "smoothing",
    "ungrouping",
    "cpp"
  ],
  "_stars": 14,
  "_contributors": [
    {
      "user": "mpascariu",
      "count": 25,
      "uuid": 6264977
    },
    {
      "user": "andreaskiermeier",
      "count": 1,
      "uuid": 10529851
    },
    {
      "user": "eddelbuettel",
      "count": 1,
      "uuid": 673121
    },
    {
      "user": "timriffe",
      "count": 1,
      "uuid": 904603
    }
  ],
  "_userbio": {
    "uuid": 6264977,
    "type": "user",
    "name": "Marius D. Pascariu",
    "followers": 95,
    "description": "R&D actuary. Statistical demographer. Data scientist. Interested in mortality modelling and forecasting & finance."
  },
  "_downloads": {
    "count": 610,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ungroup"
  },
  "_devurl": "https://github.com/mpascariu/ungroup",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/ungroup.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/mpascariu/ungroup",
  "_realowner": "mpascariu",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2018-09-03"
    },
    {
      "version": "1.1.0",
      "date": "2018-09-30"
    },
    {
      "version": "1.1.1",
      "date": "2018-10-15"
    },
    {
      "version": "1.1.5",
      "date": "2019-12-11"
    },
    {
      "version": "1.3.0",
      "date": "2021-01-10"
    },
    {
      "version": "1.4.2",
      "date": "2021-06-28"
    },
    {
      "version": "1.4.4",
      "date": "2024-01-31"
    }
  ],
  "_exports": [
    "control.pclm",
    "control.pclm2D",
    "pclm",
    "pclm2D",
    "suggest.valid.out.step"
  ],
  "_datasets": [
    {
      "name": "ungroup.data",
      "title": "Test Dataset in the Package",
      "object": "ungroup.data",
      "class": [
        "ungroup.data"
      ],
      "fields": [],
      "table": true,
      "tojson": false
    }
  ],
  "_help": [
    {
      "page": "control.pclm",
      "title": "Auxiliary for Controlling 'pclm' Fitting",
      "topics": [
        "control.pclm"
      ]
    },
    {
      "page": "control.pclm2D",
      "title": "Auxiliary for Controlling 'pclm2D' Fitting",
      "topics": [
        "control.pclm2D"
      ]
    },
    {
      "page": "pclm",
      "title": "Univariate Penalized Composite Link Model (PCLM)",
      "topics": [
        "pclm"
      ]
    },
    {
      "page": "pclm2D",
      "title": "Two-Dimensional Penalized Composite Link Model (PCLM-2D)",
      "topics": [
        "pclm2D"
      ]
    },
    {
      "page": "plot.pclm",
      "title": "Generic Plot for pclm Class",
      "topics": [
        "plot.pclm"
      ]
    },
    {
      "page": "plot.pclm2D",
      "title": "Generic Plot for pclm2D Class",
      "topics": [
        "plot.pclm2D"
      ]
    },
    {
      "page": "residuals.pclm",
      "title": "Extract PCLM Deviance Residuals",
      "topics": [
        "residuals.pclm"
      ]
    },
    {
      "page": "residuals.pclm2D",
      "title": "Extract PCLM-2D Deviance Residuals",
      "topics": [
        "residuals.pclm2D"
      ]
    },
    {
      "page": "ungroup",
      "title": "ungroup: Penalized Composite Link Model for Efficient Estimation of Smooth Distributions from Coarsely Binned Data",
      "topics": [
        "ungroup-package",
        "ungroup"
      ]
    },
    {
      "page": "ungroup.data",
      "title": "Test Dataset in the Package",
      "topics": [
        "ungroup.data"
      ]
    }
  ],
  "_pkglogo": "https://github.com/mpascariu/ungroup/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/mpascariu/ungroup/raw/HEAD/README.md",
  "_rundeps": [
    "lattice",
    "Matrix",
    "pbapply",
    "rbibutils",
    "Rcpp",
    "RcppEigen",
    "Rdpack"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "Intro.Rmd",
      "filename": "Intro.html",
      "title": "Introduction to ungroup",
      "author": "Marius D. Pascariu, Maciej J. Dańko, Jonas Schöley and Silvia Rizzi",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem",
        "The model in one page",
        "Quick start",
        "What comes back",
        "The width of the last interval",
        "Choosing the resolution of the output",
        "What a penalty buys",
        "The smoothing parameter",
        "Estimating rates, not counts",
        "Small counts and zeros",
        "Reading the intervals",
        "Missing data and an open interval that moves",
        "Two dimensions",
        "Cost",
        "How to get it wrong",
        "Where to go next",
        "References"
      ],
      "created": "2018-08-11 10:47:23",
      "modified": "2026-10-02 19:52:34",
      "commits": 5
    }
  ],
  "_score": 5.623249290397901,
  "_indexed": true,
  "_nocasepkg": "ungroup",
  "_universes": [
    "mpascariu"
  ],
  "_previous": "1.6.1",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:03.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/3c2de22923a936e491d83aae7510cf36589afa3eeb5aeef4357689a2176bb45d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:17.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/ca703c4a114dfefe0acf585abf2094324279bcd834882f9ba944ba63f083d2e3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:06.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/e3c64cb77448eeb9b5ab34aaa5f8c8f37eb47dcd83e9f4f12508f05e30a0a036",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:11.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/0a8e1746d0377625194552862e12cc223715be3c31e712667379a809e22c07f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:06.000Z",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/cfd5ce0fc09be96642c4b149bc4357e8d43b5dae50b0cba478e355ed03399066",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:55.000Z",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/bf5a8a18e4a817cccd2fa2f2c435b136ac7eb463c239bcc8f767e3e1c068d635",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:16.000Z",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/0c3afdd20871232610a9f15a16a3284fedb0d7a94fae6e6d705d0c42f6e94516",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:53.000Z",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/6535820bbb94505548e0b15470da5ecb9be9972f036119e1e026bd6270802e30",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.6.3",
      "date": "2026-10-03T02:15:15.000Z",
      "arch": "emscripten",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/c8b5b05c488ac30acbd13e578212d255fc3de18a78af3a774d4d568267783c1a",
      "status": "success",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.6.3",
      "date": "2026-10-03T02:17:25.000Z",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/88fd6782d3c0cffe35026bde7bd493cc7db6b90525359b6622606eff4d3ab211",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.6.3",
      "date": "2026-10-03T02:14:22.000Z",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/2a2c771e873a97c41af7aadb6c6a1e0d1befdff71a0130876a9230f46d754edd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.6.3",
      "date": "2026-10-03T02:14:38.000Z",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/3103bd73db9194896a4be6e24bf29b08b4603fd00f2b52cd34c0868ef8dffc14",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.6.3",
      "date": "2026-10-03T02:16:12.000Z",
      "arch": "aarch64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/77226b4efdc66757e86e3cd6b78777f407fb80e2142ea241175027125fa1f254",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.6.3",
      "date": "2026-10-03T02:14:47.000Z",
      "arch": "x86_64",
      "commit": "9daa5b0b60a9ecad40b3c56a1891c2372e5a9b20",
      "fileid": "https://r2.ropensci.org/8632d4e0ed2263d8687fc2de9628bfc010ef6e19b81cd980e61f6b5318af79a7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/mpascariu/actions/runs/37088769113"
    }
  ]
}