From 9a2277e4da15df02503dc6e29766893aae79403f Mon Sep 17 00:00:00 2001 From: vincentarelbundock Date: Fri, 19 Jul 2024 13:35:27 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vincenta?= =?UTF-8?q?relbundock/modelsummary@de44f0ab5da29ca9308cd768d3c1db5e4078578?= =?UTF-8?q?9=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CITATION.html | 2 +- LICENSE.html | 2 +- NEWS.html | 3 +- index.html | 2 +- man/coef_rename.html | 94 +- man/config_modelsummary.html | 2 +- man/datasummary.html | 510 +- man/datasummary_balance.html | 196 +- man/datasummary_correlation.html | 372 +- man/datasummary_correlation_format.html | 54 +- man/datasummary_crosstab.html | 470 +- man/datasummary_df.html | 2 +- man/datasummary_skim.html | 2 +- man/dvnames.html | 230 +- man/fmt_decimal.html | 2 +- man/fmt_sci.html | 2 +- man/fmt_significant.html | 2 +- man/fmt_sprintf.html | 2 +- man/fmt_statistic.html | 2 +- man/fmt_term.html | 2 +- man/get_estimates.html | 2 +- man/get_gof.html | 2 +- man/gof_map.html | 2 +- man/modelplot.html | 2 +- man/modelsummary.html | 2 +- man/update_modelsummary.html | 2 +- search.json | 20 +- vignettes/appearance.html | 1098 ++-- vignettes/datasummary.html | 3784 +++++------ vignettes/get_started.html | 648 +- vignettes/modelplot.html | 178 +- vignettes/modelsummary.html | 5706 ++++++++--------- vignettes/modelsummary_extension.html | 430 +- .../id0atob3njs7c9v72zb8nv.png | Bin 0 -> 2207 bytes .../id41xo6tisjd2t69f034ny.png | Bin 0 -> 1656 bytes .../id44mb9paqxhg36affgn68.png | Bin 0 -> 1150 bytes .../id47ivcp3c5xx8y9ktwesq.png | Bin 0 -> 1728 bytes .../id805mlwfyljx28jyh8n8i.png | Bin 0 -> 2316 bytes .../id86ccfnhklc5pxopcp4eb.png | Bin 0 -> 2676 bytes .../iddnm5vbrry77uvo9tz56m.png | Bin 0 -> 2075 bytes .../idee2g5lc5hnr6wqyq16oc.png | Bin 0 -> 1295 bytes .../idescu99f2oe9681zeip36.png | Bin 0 -> 12855 bytes .../idh8ggc2zyo264pjkx5agm.png | Bin 0 -> 2024 bytes .../idiec1csumik1oagz8dvtw.png | Bin 0 -> 1433 bytes .../idlynmca5kv2gs8m9fijc2.png | Bin 0 -> 2344 bytes .../idn63ofeh36s18d9vanqg1.png | Bin 0 -> 1250 bytes .../idr4n02jvqzjp51cpjldvv.png | Bin 0 -> 12872 bytes .../idsipz2sotim0tgfkogzir.png | Bin 0 -> 1917 bytes .../idy8qvzikpdkktzupu3qcm.png | Bin 0 -> 2214 bytes .../idzq0ng05i1wcbupg4s6v0.png | Bin 0 -> 2936 bytes 50 files changed, 6915 insertions(+), 6914 deletions(-) create mode 100644 vignettes/tinytable_assets/id0atob3njs7c9v72zb8nv.png create mode 100644 vignettes/tinytable_assets/id41xo6tisjd2t69f034ny.png create mode 100644 vignettes/tinytable_assets/id44mb9paqxhg36affgn68.png create mode 100644 vignettes/tinytable_assets/id47ivcp3c5xx8y9ktwesq.png create mode 100644 vignettes/tinytable_assets/id805mlwfyljx28jyh8n8i.png create mode 100644 vignettes/tinytable_assets/id86ccfnhklc5pxopcp4eb.png create mode 100644 vignettes/tinytable_assets/iddnm5vbrry77uvo9tz56m.png create mode 100644 vignettes/tinytable_assets/idee2g5lc5hnr6wqyq16oc.png create mode 100644 vignettes/tinytable_assets/idescu99f2oe9681zeip36.png create mode 100644 vignettes/tinytable_assets/idh8ggc2zyo264pjkx5agm.png create mode 100644 vignettes/tinytable_assets/idiec1csumik1oagz8dvtw.png create mode 100644 vignettes/tinytable_assets/idlynmca5kv2gs8m9fijc2.png create mode 100644 vignettes/tinytable_assets/idn63ofeh36s18d9vanqg1.png create mode 100644 vignettes/tinytable_assets/idr4n02jvqzjp51cpjldvv.png create mode 100644 vignettes/tinytable_assets/idsipz2sotim0tgfkogzir.png create mode 100644 vignettes/tinytable_assets/idy8qvzikpdkktzupu3qcm.png create mode 100644 vignettes/tinytable_assets/idzq0ng05i1wcbupg4s6v0.png diff --git a/CITATION.html b/CITATION.html index a0a291b27..deccc3aab 100644 --- a/CITATION.html +++ b/CITATION.html @@ -2,7 +2,7 @@ - + diff --git a/LICENSE.html b/LICENSE.html index 529136add..faec5c696 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -2,7 +2,7 @@ - + diff --git a/NEWS.html b/NEWS.html index 3efbd5072..149c4d94f 100644 --- a/NEWS.html +++ b/NEWS.html @@ -2,7 +2,7 @@ - + @@ -408,6 +408,7 @@

Development

  • get_gof(): logLik column converted to numeric for consistent types. Issue 649 reported on the mice Github.
  • kableExtra update the siunitx commands for d columns.
  • kableExtra escapes footnotes in HTML when output="kableExtra"). Thanks to @dmurdoch and @michaelherndon97 for report #793.
  • +
  • New fmt_equivalence() function to implement the rounding suggestion of Astier & Wolak (2024). Thanks to Nicolas Astier for code prototype.
  • diff --git a/index.html b/index.html index b714e931b..1883cf296 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + diff --git a/man/coef_rename.html b/man/coef_rename.html index 7b413f85f..88bad60b9 100644 --- a/man/coef_rename.html +++ b/man/coef_rename.html @@ -2,7 +2,7 @@ - + @@ -497,12 +497,12 @@

    Examples

    - +
    diff --git a/man/config_modelsummary.html b/man/config_modelsummary.html index f882eeeb4..b1e5dfdb4 100644 --- a/man/config_modelsummary.html +++ b/man/config_modelsummary.html @@ -2,7 +2,7 @@ - + diff --git a/man/datasummary.html b/man/datasummary.html index 195cc7a86..110c211e9 100644 --- a/man/datasummary.html +++ b/man/datasummary.html @@ -2,7 +2,7 @@ - + @@ -700,12 +700,12 @@

    Examples

    -
    +
    @@ -779,12 +779,12 @@

    Examples

    -
    +
    @@ -859,12 +859,12 @@

    Examples

    -
    +
    @@ -953,12 +953,12 @@

    Examples

    -
    +
    @@ -1052,12 +1052,12 @@

    Examples

    -
    +
    @@ -1151,12 +1151,12 @@

    Examples

    -
    +
    @@ -1281,12 +1281,12 @@

    Examples

    -
    +
    @@ -1440,12 +1440,12 @@

    Examples

    -
    +
    @@ -1532,12 +1532,12 @@

    Examples

    -
    +
    @@ -1624,12 +1624,12 @@

    Examples

    -
    +
    @@ -1738,12 +1738,12 @@

    Examples

    -
    +
    diff --git a/man/datasummary_balance.html b/man/datasummary_balance.html index 2a50766ad..da7ef76fb 100644 --- a/man/datasummary_balance.html +++ b/man/datasummary_balance.html @@ -2,7 +2,7 @@ - + @@ -728,12 +728,12 @@

    Examples

    -
    +
    diff --git a/man/datasummary_correlation.html b/man/datasummary_correlation.html index 57a4b431c..34d842353 100644 --- a/man/datasummary_correlation.html +++ b/man/datasummary_correlation.html @@ -2,7 +2,7 @@ - + @@ -716,12 +716,12 @@

    Examples

    -
    +
    @@ -810,12 +810,12 @@

    Examples

    -
    +
    @@ -906,12 +906,12 @@

    Examples

    -
    +
    @@ -1032,12 +1032,12 @@

    Examples

    -
    +
    @@ -1123,12 +1123,12 @@

    Examples

    -
    +
    @@ -1218,12 +1218,12 @@

    Examples

    -
    +
    @@ -1322,12 +1322,12 @@

    Examples

    -
    +
    @@ -1453,12 +1453,12 @@

    Examples

    -
    +
    diff --git a/man/datasummary_correlation_format.html b/man/datasummary_correlation_format.html index 190950f02..715049179 100644 --- a/man/datasummary_correlation_format.html +++ b/man/datasummary_correlation_format.html @@ -2,7 +2,7 @@ - + @@ -529,12 +529,12 @@

    Examples

    -
    +
    diff --git a/man/datasummary_crosstab.html b/man/datasummary_crosstab.html index 6bd9d6982..f5301213c 100644 --- a/man/datasummary_crosstab.html +++ b/man/datasummary_crosstab.html @@ -2,7 +2,7 @@ - + @@ -710,12 +710,12 @@

    Examples

    -
    +
    @@ -902,12 +902,12 @@

    Examples

    -
    +
    @@ -1016,12 +1016,12 @@

    Examples

    -
    +
    @@ -1322,12 +1322,12 @@

    Examples

    -
    +
    diff --git a/man/datasummary_df.html b/man/datasummary_df.html index 8c1aba982..dc683341e 100644 --- a/man/datasummary_df.html +++ b/man/datasummary_df.html @@ -2,7 +2,7 @@ - + diff --git a/man/datasummary_skim.html b/man/datasummary_skim.html index dea40c7cd..d6fd59774 100644 --- a/man/datasummary_skim.html +++ b/man/datasummary_skim.html @@ -2,7 +2,7 @@ - + diff --git a/man/dvnames.html b/man/dvnames.html index 7c45877f9..63163b7a0 100644 --- a/man/dvnames.html +++ b/man/dvnames.html @@ -2,7 +2,7 @@ - + @@ -457,12 +457,12 @@

    Examples

    -
    +
    @@ -645,12 +645,12 @@

    Examples

    -
    +
    diff --git a/man/fmt_decimal.html b/man/fmt_decimal.html index 85949f47a..d897b7c39 100644 --- a/man/fmt_decimal.html +++ b/man/fmt_decimal.html @@ -2,7 +2,7 @@ - + diff --git a/man/fmt_sci.html b/man/fmt_sci.html index 8f8ff0aa4..cbad7c8e4 100644 --- a/man/fmt_sci.html +++ b/man/fmt_sci.html @@ -2,7 +2,7 @@ - + diff --git a/man/fmt_significant.html b/man/fmt_significant.html index 050f85bbb..56a0fb4a5 100644 --- a/man/fmt_significant.html +++ b/man/fmt_significant.html @@ -2,7 +2,7 @@ - + diff --git a/man/fmt_sprintf.html b/man/fmt_sprintf.html index 25b5a893e..f06413fb7 100644 --- a/man/fmt_sprintf.html +++ b/man/fmt_sprintf.html @@ -2,7 +2,7 @@ - + diff --git a/man/fmt_statistic.html b/man/fmt_statistic.html index 984877f0e..20902a498 100644 --- a/man/fmt_statistic.html +++ b/man/fmt_statistic.html @@ -2,7 +2,7 @@ - + diff --git a/man/fmt_term.html b/man/fmt_term.html index 6dc2b0a0f..ab982e5a0 100644 --- a/man/fmt_term.html +++ b/man/fmt_term.html @@ -2,7 +2,7 @@ - + diff --git a/man/get_estimates.html b/man/get_estimates.html index e8d7c9cf5..93410028d 100644 --- a/man/get_estimates.html +++ b/man/get_estimates.html @@ -2,7 +2,7 @@ - + diff --git a/man/get_gof.html b/man/get_gof.html index a2a5b6ac9..2135d1705 100644 --- a/man/get_gof.html +++ b/man/get_gof.html @@ -2,7 +2,7 @@ - + diff --git a/man/gof_map.html b/man/gof_map.html index a153cb2aa..78f18ac77 100644 --- a/man/gof_map.html +++ b/man/gof_map.html @@ -2,7 +2,7 @@ - + diff --git a/man/modelplot.html b/man/modelplot.html index f2e73416c..5872f13fa 100644 --- a/man/modelplot.html +++ b/man/modelplot.html @@ -2,7 +2,7 @@ - + diff --git a/man/modelsummary.html b/man/modelsummary.html index 60763e2c0..59351ff28 100644 --- a/man/modelsummary.html +++ b/man/modelsummary.html @@ -2,7 +2,7 @@ - + diff --git a/man/update_modelsummary.html b/man/update_modelsummary.html index 96487c7b6..90cd04c71 100644 --- a/man/update_modelsummary.html +++ b/man/update_modelsummary.html @@ -2,7 +2,7 @@ - + diff --git a/search.json b/search.json index d596160c9..d6fa757be 100644 --- a/search.json +++ b/search.json @@ -182,7 +182,7 @@ "href": "vignettes/modelsummary.html#quarto", "title": "Model Summaries", "section": "Quarto", - "text": "Quarto\nQuarto is an open source publishing system built on top of Pandoc. It was designed as a “successor” to Rmarkdown, and includes useful features for technical writing, such as built-in support for cross-references. modelsummary works automatically with Quarto. This is a minimal document with cross-references which should render automatically to PDF, HTML, and more:\n---\nformat: pdf\ntitle: Example\n---\n\n@tbl-mtcars shows that cars with high horse power get low miles per gallon.\n\n::: {#tbl-mtcars .cell tbl-cap='Horse Powers vs. Miles per Gallon'}\n\n```{.r .cell-code}\nlibrary(modelsummary)\nmod <- lm(mpg ~ hp, mtcars)\nmodelsummary(mod)\n```\n\n::: {.cell-output-display}\n\n```{=html}\n<!-- preamble start -->\n\n <script>\n function styleCell_ccqpj7jtjjtw6q3mf0kg(i, j, css_id) {\n var table = document.getElementById(\"tinytable_ccqpj7jtjjtw6q3mf0kg\");\n table.rows[i].cells[j].classList.add(css_id);\n }\n function insertSpanRow(i, colspan, content) {\n var table = document.getElementById('tinytable_ccqpj7jtjjtw6q3mf0kg');\n var newRow = table.insertRow(i);\n var newCell = newRow.insertCell(0);\n newCell.setAttribute(\"colspan\", colspan);\n // newCell.innerText = content;\n // this may be unsafe, but innerText does not interpret <br>\n newCell.innerHTML = content;\n }\n function spanCell_ccqpj7jtjjtw6q3mf0kg(i, j, rowspan, colspan) {\n var table = document.getElementById(\"tinytable_ccqpj7jtjjtw6q3mf0kg\");\n const targetRow = table.rows[i];\n const targetCell = targetRow.cells[j];\n for (let r = 0; r < rowspan; r++) {\n // Only start deleting cells to the right for the first row (r == 0)\n if (r === 0) {\n // Delete cells to the right of the target cell in the first row\n for (let c = colspan - 1; c > 0; c--) {\n if (table.rows[i + r].cells[j + c]) {\n table.rows[i + r].deleteCell(j + c);\n }\n }\n }\n // For rows below the first, delete starting from the target column\n if (r > 0) {\n for (let c = colspan - 1; c >= 0; c--) {\n if (table.rows[i + r] && table.rows[i + r].cells[j]) {\n table.rows[i + r].deleteCell(j);\n }\n }\n }\n }\n // Set rowspan and colspan of the target cell\n targetCell.rowSpan = rowspan;\n targetCell.colSpan = colspan;\n }\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(0, 0, 'tinytable_css_idbk2lr698dma833mbtjlr') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(0, 1, 'tinytable_css_ide2hb7eqvjmp0gl8jf2b8') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(1, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(1, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(2, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(2, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(3, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(3, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(4, 0, 'tinytable_css_idyn2fjkpeq5clphfoeuek') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(4, 1, 'tinytable_css_idohgr84d42w5t4nnbacnh') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(5, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(5, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(6, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(6, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(7, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(7, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(8, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(8, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(9, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(9, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(10, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(10, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(11, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(11, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(12, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') })\nwindow.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(12, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') })\n </script>\n\n <style>\n .table td.tinytable_css_idbk2lr698dma833mbtjlr, .table th.tinytable_css_idbk2lr698dma833mbtjlr { text-align: left; border-bottom: solid 0.1em #d3d8dc; }\n .table td.tinytable_css_ide2hb7eqvjmp0gl8jf2b8, .table th.tinytable_css_ide2hb7eqvjmp0gl8jf2b8 { text-align: center; border-bottom: solid 0.1em #d3d8dc; }\n .table td.tinytable_css_idtxmaqgb6affpa171oq29, .table th.tinytable_css_idtxmaqgb6affpa171oq29 { text-align: left; }\n .table td.tinytable_css_idjlr0be5wtojhiv7hdq7v, .table th.tinytable_css_idjlr0be5wtojhiv7hdq7v { text-align: center; }\n .table td.tinytable_css_idyn2fjkpeq5clphfoeuek, .table th.tinytable_css_idyn2fjkpeq5clphfoeuek { border-bottom: solid 0.05em black; text-align: left; }\n .table td.tinytable_css_idohgr84d42w5t4nnbacnh, .table th.tinytable_css_idohgr84d42w5t4nnbacnh { border-bottom: solid 0.05em black; text-align: center; }\n </style>\n <div class=\"container\">\n <table class=\"table table-borderless\" id=\"tinytable_ccqpj7jtjjtw6q3mf0kg\" style=\"width: auto; margin-left: auto; margin-right: auto;\" data-quarto-disable-processing='true'>\n <thead>\n \n <tr>\n <th scope=\"col\"> </th>\n <th scope=\"col\">(1)</th>\n </tr>\n </thead>\n \n <tbody>\n <tr>\n <td>(Intercept)</td>\n <td>30.099 </td>\n </tr>\n <tr>\n <td> </td>\n <td>(1.634)</td>\n </tr>\n <tr>\n <td>hp </td>\n <td>-0.068 </td>\n </tr>\n <tr>\n <td> </td>\n <td>(0.010)</td>\n </tr>\n <tr>\n <td>Num.Obs. </td>\n <td>32 </td>\n </tr>\n <tr>\n <td>R2 </td>\n <td>0.602 </td>\n </tr>\n <tr>\n <td>R2 Adj. </td>\n <td>0.589 </td>\n </tr>\n <tr>\n <td>AIC </td>\n <td>181.2 </td>\n </tr>\n <tr>\n <td>BIC </td>\n <td>185.6 </td>\n </tr>\n <tr>\n <td>Log.Lik. </td>\n <td>-87.619</td>\n </tr>\n <tr>\n <td>F </td>\n <td>45.460 </td>\n </tr>\n <tr>\n <td>RMSE </td>\n <td>3.74 </td>\n </tr>\n </tbody>\n </table>\n </div>\n<!-- hack to avoid NA insertion in last line -->\n```\n\n:::\n:::", + "text": "Quarto\nQuarto is an open source publishing system built on top of Pandoc. It was designed as a “successor” to Rmarkdown, and includes useful features for technical writing, such as built-in support for cross-references. modelsummary works automatically with Quarto. This is a minimal document with cross-references which should render automatically to PDF, HTML, and more:\n---\nformat: pdf\ntitle: Example\n---\n\n@tbl-mtcars shows that cars with high horse power get low miles per gallon.\n\n::: {#tbl-mtcars .cell tbl-cap='Horse Powers vs. Miles per Gallon'}\n\n```{.r .cell-code}\nlibrary(modelsummary)\nmod <- lm(mpg ~ hp, mtcars)\nmodelsummary(mod)\n```\n\n::: {.cell-output-display}\n\n```{=html}\n<!-- preamble start -->\n\n <script>\n function styleCell_bceeh0xhoo6wn7qpcayo(i, j, css_id) {\n var table = document.getElementById(\"tinytable_bceeh0xhoo6wn7qpcayo\");\n table.rows[i].cells[j].classList.add(css_id);\n }\n function insertSpanRow(i, colspan, content) {\n var table = document.getElementById('tinytable_bceeh0xhoo6wn7qpcayo');\n var newRow = table.insertRow(i);\n var newCell = newRow.insertCell(0);\n newCell.setAttribute(\"colspan\", colspan);\n // newCell.innerText = content;\n // this may be unsafe, but innerText does not interpret <br>\n newCell.innerHTML = content;\n }\n function spanCell_bceeh0xhoo6wn7qpcayo(i, j, rowspan, colspan) {\n var table = document.getElementById(\"tinytable_bceeh0xhoo6wn7qpcayo\");\n const targetRow = table.rows[i];\n const targetCell = targetRow.cells[j];\n for (let r = 0; r < rowspan; r++) {\n // Only start deleting cells to the right for the first row (r == 0)\n if (r === 0) {\n // Delete cells to the right of the target cell in the first row\n for (let c = colspan - 1; c > 0; c--) {\n if (table.rows[i + r].cells[j + c]) {\n table.rows[i + r].deleteCell(j + c);\n }\n }\n }\n // For rows below the first, delete starting from the target column\n if (r > 0) {\n for (let c = colspan - 1; c >= 0; c--) {\n if (table.rows[i + r] && table.rows[i + r].cells[j]) {\n table.rows[i + r].deleteCell(j);\n }\n }\n }\n }\n // Set rowspan and colspan of the target cell\n targetCell.rowSpan = rowspan;\n targetCell.colSpan = colspan;\n }\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(0, 0, 'tinytable_css_idm4pjcu55h75dnod0m69r') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(0, 1, 'tinytable_css_idb3trqmovcxe7vbruc98m') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(1, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(1, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(2, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(2, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(3, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(3, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(4, 0, 'tinytable_css_idy84xnhg5uv8mnadb39uc') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(4, 1, 'tinytable_css_idzh2i9ipitnyvizvphgbg') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(5, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(5, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(6, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(6, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(7, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(7, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(8, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(8, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(9, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(9, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(10, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(10, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(11, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(11, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(12, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') })\nwindow.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(12, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') })\n </script>\n\n <style>\n .table td.tinytable_css_idm4pjcu55h75dnod0m69r, .table th.tinytable_css_idm4pjcu55h75dnod0m69r { text-align: left; border-bottom: solid 0.1em #d3d8dc; }\n .table td.tinytable_css_idb3trqmovcxe7vbruc98m, .table th.tinytable_css_idb3trqmovcxe7vbruc98m { text-align: center; border-bottom: solid 0.1em #d3d8dc; }\n .table td.tinytable_css_idvzhdpbkmne7e9hzcdvbw, .table th.tinytable_css_idvzhdpbkmne7e9hzcdvbw { text-align: left; }\n .table td.tinytable_css_idcbiclc5aej35vhz6aj2p, .table th.tinytable_css_idcbiclc5aej35vhz6aj2p { text-align: center; }\n .table td.tinytable_css_idy84xnhg5uv8mnadb39uc, .table th.tinytable_css_idy84xnhg5uv8mnadb39uc { border-bottom: solid 0.05em black; text-align: left; }\n .table td.tinytable_css_idzh2i9ipitnyvizvphgbg, .table th.tinytable_css_idzh2i9ipitnyvizvphgbg { border-bottom: solid 0.05em black; text-align: center; }\n </style>\n <div class=\"container\">\n <table class=\"table table-borderless\" id=\"tinytable_bceeh0xhoo6wn7qpcayo\" style=\"width: auto; margin-left: auto; margin-right: auto;\" data-quarto-disable-processing='true'>\n <thead>\n \n <tr>\n <th scope=\"col\"> </th>\n <th scope=\"col\">(1)</th>\n </tr>\n </thead>\n \n <tbody>\n <tr>\n <td>(Intercept)</td>\n <td>30.099 </td>\n </tr>\n <tr>\n <td> </td>\n <td>(1.634)</td>\n </tr>\n <tr>\n <td>hp </td>\n <td>-0.068 </td>\n </tr>\n <tr>\n <td> </td>\n <td>(0.010)</td>\n </tr>\n <tr>\n <td>Num.Obs. </td>\n <td>32 </td>\n </tr>\n <tr>\n <td>R2 </td>\n <td>0.602 </td>\n </tr>\n <tr>\n <td>R2 Adj. </td>\n <td>0.589 </td>\n </tr>\n <tr>\n <td>AIC </td>\n <td>181.2 </td>\n </tr>\n <tr>\n <td>BIC </td>\n <td>185.6 </td>\n </tr>\n <tr>\n <td>Log.Lik. </td>\n <td>-87.619</td>\n </tr>\n <tr>\n <td>F </td>\n <td>45.460 </td>\n </tr>\n <tr>\n <td>RMSE </td>\n <td>3.74 </td>\n </tr>\n </tbody>\n </table>\n </div>\n<!-- hack to avoid NA insertion in last line -->\n```\n\n:::\n:::", "crumbs": [ "Get started", "Model Summaries" @@ -226,7 +226,7 @@ "href": "vignettes/modelsummary.html#bootstrap", "title": "Model Summaries", "section": "Bootstrap", - "text": "Bootstrap\nUsers often want to use estimates or standard errors that have been obtained using a custom strategy. To achieve this in an automated and replicable way, it can be useful to use the tidy_custom strategy described above in the “Cutomizing Existing Models” section.\nFor example, we can use the modelr package to draw 500 resamples of a dataset, and compute bootstrap standard errors by taking the standard deviation of estimates computed in all of those resampled datasets. To do this, we defined tidy_custom.lm function that will automatically bootstrap any lm model supplied to modelsummary, and replace the values in the table automatically.\nNote that the tidy_custom_lm returns a data.frame with 3 columns: term, estimate, and std.error:\n\nlibrary(\"broom\")\nlibrary(\"tidyverse\")\nlibrary(\"modelr\")\n\ntidy_custom.lm <- function(x, ...) {\n # extract data from the model\n model.frame(x) %>%\n # draw 500 bootstrap resamples\n modelr::bootstrap(n = 500) %>%\n # estimate the model 500 times\n mutate(results = map(strap, ~ update(x, data = .))) %>%\n # extract results using `broom::tidy`\n mutate(results = map(results, tidy)) %>%\n # unnest and summarize\n unnest(results) %>%\n group_by(term) %>%\n summarize(std.error = sd(estimate),\n estimate = mean(estimate))\n}\n\nmod = list(\n lm(hp ~ mpg, mtcars) ,\n lm(hp ~ mpg + drat, mtcars))\n\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n (2)\n \n \n \n \n \n (Intercept)\n 329.629 \n 281.754 \n \n \n \n (31.734)\n (44.405)\n \n \n mpg \n -9.141 \n -10.030 \n \n \n \n (1.517) \n (2.397) \n \n \n drat \n \n 18.194 \n \n \n \n \n (21.243)\n \n \n Num.Obs. \n 32 \n 32 \n \n \n R2 \n 0.602 \n 0.614 \n \n \n R2 Adj. \n 0.589 \n 0.588 \n \n \n AIC \n 336.9 \n 337.9 \n \n \n BIC \n 341.3 \n 343.7 \n \n \n Log.Lik. \n -165.428\n -164.940\n \n \n F \n 45.460 \n 23.100 \n \n \n RMSE \n 42.55 \n 41.91", + "text": "Bootstrap\nUsers often want to use estimates or standard errors that have been obtained using a custom strategy. To achieve this in an automated and replicable way, it can be useful to use the tidy_custom strategy described above in the “Cutomizing Existing Models” section.\nFor example, we can use the modelr package to draw 500 resamples of a dataset, and compute bootstrap standard errors by taking the standard deviation of estimates computed in all of those resampled datasets. To do this, we defined tidy_custom.lm function that will automatically bootstrap any lm model supplied to modelsummary, and replace the values in the table automatically.\nNote that the tidy_custom_lm returns a data.frame with 3 columns: term, estimate, and std.error:\n\nlibrary(\"broom\")\nlibrary(\"tidyverse\")\nlibrary(\"modelr\")\n\ntidy_custom.lm <- function(x, ...) {\n # extract data from the model\n model.frame(x) %>%\n # draw 500 bootstrap resamples\n modelr::bootstrap(n = 500) %>%\n # estimate the model 500 times\n mutate(results = map(strap, ~ update(x, data = .))) %>%\n # extract results using `broom::tidy`\n mutate(results = map(results, tidy)) %>%\n # unnest and summarize\n unnest(results) %>%\n group_by(term) %>%\n summarize(std.error = sd(estimate),\n estimate = mean(estimate))\n}\n\nmod = list(\n lm(hp ~ mpg, mtcars) ,\n lm(hp ~ mpg + drat, mtcars))\n\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n (2)\n \n \n \n \n \n (Intercept)\n 327.338 \n 282.369 \n \n \n \n (30.525)\n (42.589)\n \n \n mpg \n -9.014 \n -10.392 \n \n \n \n (1.373) \n (2.320) \n \n \n drat \n \n 20.169 \n \n \n \n \n (20.388)\n \n \n Num.Obs. \n 32 \n 32 \n \n \n R2 \n 0.602 \n 0.614 \n \n \n R2 Adj. \n 0.589 \n 0.588 \n \n \n AIC \n 336.9 \n 337.9 \n \n \n BIC \n 341.3 \n 343.7 \n \n \n Log.Lik. \n -165.428\n -164.940\n \n \n F \n 45.460 \n 23.100 \n \n \n RMSE \n 42.55 \n 41.91", "crumbs": [ "Get started", "Model Summaries" @@ -237,7 +237,7 @@ "href": "vignettes/modelsummary.html#fixest-fixed-effects-and-instrumental-variable-regression", "title": "Model Summaries", "section": "fixest: Fixed effects and instrumental variable regression", - "text": "fixest: Fixed effects and instrumental variable regression\nOne common use-case for glance_custom is to include additional goodness-of-fit statistics. For example, in an instrumental variable estimation computed by the fixest package, we may want to include an IV-Wald statistic for the first-stage regression of each endogenous regressor:\n\nlibrary(fixest)\nlibrary(tidyverse)\n\n# create a toy dataset\nbase <- iris\nnames(base) <- c(\"y\", \"x1\", \"x_endo_1\", \"x_inst_1\", \"fe\")\nbase$x_inst_2 <- 0.2 * base$y + 0.2 * base$x_endo_1 + rnorm(150, sd = 0.5)\nbase$x_endo_2 <- 0.2 * base$y - 0.2 * base$x_inst_1 + rnorm(150, sd = 0.5)\n\n# estimate an instrumental variable model\nmod <- feols(y ~ x1 | fe | x_endo_1 + x_endo_2 ~ x_inst_1 + x_inst_2, base)\n\n# custom extractor function returns a one-row data.frame (or tibble)\nglance_custom.fixest <- function(x) {\n tibble(\n \"Wald (x_endo_1)\" = fitstat(x, \"ivwald\")[[1]]$stat,\n \"Wald (x_endo_2)\" = fitstat(x, \"ivwald\")[[2]]$stat\n )\n}\n\n# draw table\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n fit_x_endo_1 \n 0.954 \n \n \n \n (0.249) \n \n \n fit_x_endo_2 \n 1.017 \n \n \n \n (0.535) \n \n \n x1 \n 0.262 \n \n \n \n (0.139) \n \n \n Num.Obs. \n 150 \n \n \n R2 \n 0.515 \n \n \n R2 Adj. \n 0.498 \n \n \n R2 Within \n -0.272 \n \n \n R2 Within Adj. \n -0.298 \n \n \n AIC \n 271.5 \n \n \n BIC \n 289.6 \n \n \n RMSE \n 0.57 \n \n \n Std.Errors \n by: fe \n \n \n FE: fe \n X \n \n \n Wald (x_endo_1)\n 7.39454878040966\n \n \n Wald (x_endo_2)\n 130.490652898872\n \n \n \n \n\n\n\n\nrm(\"glance_custom.fixest\")", + "text": "fixest: Fixed effects and instrumental variable regression\nOne common use-case for glance_custom is to include additional goodness-of-fit statistics. For example, in an instrumental variable estimation computed by the fixest package, we may want to include an IV-Wald statistic for the first-stage regression of each endogenous regressor:\n\nlibrary(fixest)\nlibrary(tidyverse)\n\n# create a toy dataset\nbase <- iris\nnames(base) <- c(\"y\", \"x1\", \"x_endo_1\", \"x_inst_1\", \"fe\")\nbase$x_inst_2 <- 0.2 * base$y + 0.2 * base$x_endo_1 + rnorm(150, sd = 0.5)\nbase$x_endo_2 <- 0.2 * base$y - 0.2 * base$x_inst_1 + rnorm(150, sd = 0.5)\n\n# estimate an instrumental variable model\nmod <- feols(y ~ x1 | fe | x_endo_1 + x_endo_2 ~ x_inst_1 + x_inst_2, base)\n\n# custom extractor function returns a one-row data.frame (or tibble)\nglance_custom.fixest <- function(x) {\n tibble(\n \"Wald (x_endo_1)\" = fitstat(x, \"ivwald\")[[1]]$stat,\n \"Wald (x_endo_2)\" = fitstat(x, \"ivwald\")[[2]]$stat\n )\n}\n\n# draw table\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n fit_x_endo_1 \n 1.314 \n \n \n \n (2.168) \n \n \n fit_x_endo_2 \n 10.306 \n \n \n \n (33.151) \n \n \n x1 \n -3.233 \n \n \n \n (12.535) \n \n \n Num.Obs. \n 150 \n \n \n R2 \n -34.259 \n \n \n R2 Adj. \n -35.483 \n \n \n R2 Within \n -91.471 \n \n \n R2 Within Adj. \n -93.397 \n \n \n AIC \n 914.5 \n \n \n BIC \n 932.5 \n \n \n RMSE \n 4.90 \n \n \n Std.Errors \n by: fe \n \n \n FE: fe \n X \n \n \n Wald (x_endo_1)\n 7.87840897441216 \n \n \n Wald (x_endo_2)\n 0.0766937977205889\n \n \n \n \n\n\n\n\nrm(\"glance_custom.fixest\")", "crumbs": [ "Get started", "Model Summaries" @@ -248,7 +248,7 @@ "href": "vignettes/modelsummary.html#multiple-imputation", "title": "Model Summaries", "section": "Multiple imputation", - "text": "Multiple imputation\nmodelsummary can pool and display analyses on several datasets imputed using the mice or Amelia packages. This code illustrates how:\n\nlibrary(mice)\n\nWarning in check_dep_version(): ABI version mismatch: \nlme4 was built with Matrix ABI version 2\nCurrent Matrix ABI version is 1\nPlease re-install lme4 from source or restore original 'Matrix' package\n\nlibrary(Amelia)\n\n# Download data from `Rdatasets`\nurl <- 'https://vincentarelbundock.github.io/Rdatasets/csv/HistData/Guerry.csv'\ndat <- read.csv(url)[, c('Clergy', 'Commerce', 'Literacy')]\n\n# Insert missing values\ndat$Clergy[sample(1:nrow(dat), 10)] <- NA\ndat$Commerce[sample(1:nrow(dat), 10)] <- NA\ndat$Literacy[sample(1:nrow(dat), 10)] <- NA\n\n# Impute with `mice` and `Amelia`\ndat_mice <- mice(dat, m = 5, printFlag = FALSE)\ndat_amelia <- amelia(dat, m = 5, p2s = 0)$imputations\n\n# Estimate models\nmod <- list()\nmod[['Listwise deletion']] <- lm(Clergy ~ Literacy + Commerce, dat)\nmod[['Mice']] <- with(dat_mice, lm(Clergy ~ Literacy + Commerce)) \nmod[['Amelia']] <- lapply(dat_amelia, function(x) lm(Clergy ~ Literacy + Commerce, x))\n\n# Pool results\nmod[['Mice']] <- mice::pool(mod[['Mice']])\nmod[['Amelia']] <- mice::pool(mod[['Amelia']])\n\n# Summarize\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n Listwise deletion\n Mice\n Amelia\n \n \n \n \n \n (Intercept)\n 82.087 \n 81.052 \n 83.319 \n \n \n \n (14.094)\n (16.423)\n (15.538)\n \n \n Literacy \n -0.517 \n -0.523 \n -0.583 \n \n \n \n (0.222) \n (0.278) \n (0.227) \n \n \n Commerce \n -0.332 \n -0.379 \n -0.375 \n \n \n \n (0.153) \n (0.164) \n (0.171) \n \n \n Num.Obs. \n 58 \n 86 \n 86 \n \n \n Num.Imp. \n \n 5 \n 5 \n \n \n R2 \n 0.101 \n 0.106 \n 0.112 \n \n \n R2 Adj. \n 0.068 \n 0.083 \n 0.089 \n \n \n AIC \n 528.2 \n \n \n \n \n BIC \n 536.5 \n \n \n \n \n Log.Lik. \n -260.116\n \n \n \n \n RMSE \n 21.45", + "text": "Multiple imputation\nmodelsummary can pool and display analyses on several datasets imputed using the mice or Amelia packages. This code illustrates how:\n\nlibrary(mice)\n\nWarning in check_dep_version(): ABI version mismatch: \nlme4 was built with Matrix ABI version 2\nCurrent Matrix ABI version is 1\nPlease re-install lme4 from source or restore original 'Matrix' package\n\nlibrary(Amelia)\n\n# Download data from `Rdatasets`\nurl <- 'https://vincentarelbundock.github.io/Rdatasets/csv/HistData/Guerry.csv'\ndat <- read.csv(url)[, c('Clergy', 'Commerce', 'Literacy')]\n\n# Insert missing values\ndat$Clergy[sample(1:nrow(dat), 10)] <- NA\ndat$Commerce[sample(1:nrow(dat), 10)] <- NA\ndat$Literacy[sample(1:nrow(dat), 10)] <- NA\n\n# Impute with `mice` and `Amelia`\ndat_mice <- mice(dat, m = 5, printFlag = FALSE)\ndat_amelia <- amelia(dat, m = 5, p2s = 0)$imputations\n\n# Estimate models\nmod <- list()\nmod[['Listwise deletion']] <- lm(Clergy ~ Literacy + Commerce, dat)\nmod[['Mice']] <- with(dat_mice, lm(Clergy ~ Literacy + Commerce)) \nmod[['Amelia']] <- lapply(dat_amelia, function(x) lm(Clergy ~ Literacy + Commerce, x))\n\n# Pool results\nmod[['Mice']] <- mice::pool(mod[['Mice']])\nmod[['Amelia']] <- mice::pool(mod[['Amelia']])\n\n# Summarize\nmodelsummary(mod)\n\n\n\n \n\n \n \n \n \n \n \n \n Listwise deletion\n Mice\n Amelia\n \n \n \n \n \n (Intercept)\n 68.918 \n 69.861 \n 65.918 \n \n \n \n (13.811)\n (18.536)\n (14.547)\n \n \n Literacy \n -0.393 \n -0.458 \n -0.417 \n \n \n \n (0.215) \n (0.264) \n (0.238) \n \n \n Commerce \n -0.281 \n -0.197 \n -0.148 \n \n \n \n (0.164) \n (0.229) \n (0.158) \n \n \n Num.Obs. \n 60 \n 86 \n 86 \n \n \n Num.Imp. \n \n 5 \n 5 \n \n \n R2 \n 0.066 \n 0.084 \n 0.070 \n \n \n R2 Adj. \n 0.033 \n \n \n \n \n AIC \n 552.8 \n \n \n \n \n BIC \n 561.2 \n \n \n \n \n Log.Lik. \n -272.407\n \n \n \n \n RMSE \n 22.67", "crumbs": [ "Get started", "Model Summaries" @@ -303,7 +303,7 @@ "href": "vignettes/modelsummary.html#how-can-i-speed-up-modelsummary", "title": "Model Summaries", "section": "How can I speed up modelsummary?", - "text": "How can I speed up modelsummary?\nThe modelsummary function, by itself, is not slow: it should only take a couple seconds to produce a table in any output format. However, sometimes it can be computationally expensive (and long) to extract estimates and to compute goodness-of-fit statistics for your model.\nThe main options to speed up modelsummary are:\n\nSet gof_map=NA to avoid computing expensive goodness-of-fit statistics.\nUse the easystats extractor functions and the metrics argument to avoid computing expensive statistics (see below for an example).\nUse parallel computation if you are summarizing multiple models. See the “Parallel computation” section in the ?modelsummary documentation.\n\nTo diagnose the slowdown and find the bottleneck, you can try to benchmark the various extractor functions:\n\nlibrary(tictoc)\n\ndata(trade)\nmod <- lm(mpg ~ hp + drat, mtcars)\n\ntic(\"tidy\")\nx <- broom::tidy(mod)\ntoc()\n\ntidy: 0.002 sec elapsed\n\ntic(\"glance\")\nx <- broom::glance(mod)\ntoc()\n\nglance: 0.003 sec elapsed\n\ntic(\"parameters\")\nx <- parameters::parameters(mod)\ntoc()\n\nparameters: 0.021 sec elapsed\n\ntic(\"performance\")\nx <- performance::performance(mod)\ntoc()\n\nperformance: 0.012 sec elapsed\n\n\nIn my experience, the main bottleneck tends to be computing goodness-of-fit statistics. The performance extractor allows users to specify a metrics argument to select a subset of GOF to include. Using this can speedup things considerably.\nWe call modelsummary with the metrics argument:\n\nmodelsummary(mod, metrics = \"rmse\")\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n 10.790 \n \n \n \n (5.078)\n \n \n hp \n -0.052 \n \n \n \n (0.009)\n \n \n drat \n 4.698 \n \n \n \n (1.192)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.741 \n \n \n R2 Adj. \n 0.723 \n \n \n AIC \n 169.5 \n \n \n BIC \n 175.4 \n \n \n Log.Lik. \n -80.752\n \n \n F \n 41.522", + "text": "How can I speed up modelsummary?\nThe modelsummary function, by itself, is not slow: it should only take a couple seconds to produce a table in any output format. However, sometimes it can be computationally expensive (and long) to extract estimates and to compute goodness-of-fit statistics for your model.\nThe main options to speed up modelsummary are:\n\nSet gof_map=NA to avoid computing expensive goodness-of-fit statistics.\nUse the easystats extractor functions and the metrics argument to avoid computing expensive statistics (see below for an example).\nUse parallel computation if you are summarizing multiple models. See the “Parallel computation” section in the ?modelsummary documentation.\n\nTo diagnose the slowdown and find the bottleneck, you can try to benchmark the various extractor functions:\n\nlibrary(tictoc)\n\ndata(trade)\nmod <- lm(mpg ~ hp + drat, mtcars)\n\ntic(\"tidy\")\nx <- broom::tidy(mod)\ntoc()\n\ntidy: 0.002 sec elapsed\n\ntic(\"glance\")\nx <- broom::glance(mod)\ntoc()\n\nglance: 0.004 sec elapsed\n\ntic(\"parameters\")\nx <- parameters::parameters(mod)\ntoc()\n\nparameters: 0.021 sec elapsed\n\ntic(\"performance\")\nx <- performance::performance(mod)\ntoc()\n\nperformance: 0.011 sec elapsed\n\n\nIn my experience, the main bottleneck tends to be computing goodness-of-fit statistics. The performance extractor allows users to specify a metrics argument to select a subset of GOF to include. Using this can speedup things considerably.\nWe call modelsummary with the metrics argument:\n\nmodelsummary(mod, metrics = \"rmse\")\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n 10.790 \n \n \n \n (5.078)\n \n \n hp \n -0.052 \n \n \n \n (0.009)\n \n \n drat \n 4.698 \n \n \n \n (1.192)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.741 \n \n \n R2 Adj. \n 0.723 \n \n \n AIC \n 169.5 \n \n \n BIC \n 175.4 \n \n \n Log.Lik. \n -80.752\n \n \n F \n 41.522", "crumbs": [ "Get started", "Model Summaries" @@ -325,7 +325,7 @@ "href": "vignettes/modelsummary.html#bayesian-models", "title": "Model Summaries", "section": "Bayesian models", - "text": "Bayesian models\nMany bayesian models are supported out-of-the-box, including those produced by the rstanarm and brms packages. The statistics available for bayesian models are slightly different than those available for most frequentist models. Users can call get_estimates to see what is available:\n\nlibrary(rstanarm)\n\nThis is rstanarm version 2.32.1\n\n\n- See https://mc-stan.org/rstanarm/articles/priors for changes to default priors!\n\n\n- Default priors may change, so it's safest to specify priors, even if equivalent to the defaults.\n\n\n- For execution on a local, multicore CPU with excess RAM we recommend calling\n\n\n options(mc.cores = parallel::detectCores())\n\n\n\nAttaching package: 'rstanarm'\n\n\nThe following object is masked from 'package:fixest':\n\n se\n\nmod <- stan_glm(am ~ hp + drat, data = mtcars)\n\n\nget_estimates(mod)\n\n term estimate mad conf.level conf.low conf.high prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2049112128 0.594295260 0.95 -3.409440861 -1.032307800 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006352259 0.001085577 0.95 -0.001482977 0.002797352 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7023874378 0.139034208 0.95 0.428481368 0.980565905 normal 0.00000 2.33313429 NA NA NA\n\n\nThis shows that there is no std.error column, but that there is a mad statistic (mean absolute deviation). So we can do:\n\nmodelsummary(mod, statistic = \"mad\")\n\nWarning: \n`modelsummary` uses the `performance` package to extract goodness-of-fit\nstatistics from models of this class. You can specify the statistics you wish\nto compute by supplying a `metrics` argument to `modelsummary`, which will then\npush it forward to `performance`. Acceptable values are: \"all\", \"common\",\n\"none\", or a character vector of metrics names. For example: `modelsummary(mod,\nmetrics = c(\"RMSE\", \"R2\")` Note that some metrics are computationally\nexpensive. See `?performance::performance` for details.\n This warning appears once per session.\n\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n -2.205 \n \n \n \n (0.594)\n \n \n hp \n 0.001 \n \n \n \n (0.001)\n \n \n drat \n 0.702 \n \n \n \n (0.139)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.499 \n \n \n R2 Adj. \n 0.430 \n \n \n Log.Lik. \n -12.114\n \n \n ELPD \n -15.2 \n \n \n ELPD s.e. \n 3.1 \n \n \n LOOIC \n 30.5 \n \n \n LOOIC s.e. \n 6.3 \n \n \n WAIC \n 30.1 \n \n \n RMSE \n 0.34 \n \n \n \n \n\n\n\nAs noted in the modelsummary() documentation, model results are extracted using the parameters package. Users can pass additional arguments to modelsummary(), which will then push forward those arguments to the parameters::parameters function to change the results. For example, the parameters documentation for bayesian models shows that there is a centrality argument, which allows users to report the mean and standard deviation of the posterior distribution, instead of the median and MAD:\n\nget_estimates(mod, centrality = \"mean\")\n\n term estimate std.dev conf.level conf.low conf.high prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2138487931 0.604083327 0.95 -3.409440861 -1.032307800 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006618756 0.001085012 0.95 -0.001482977 0.002797352 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7015893972 0.141437594 0.95 0.428481368 0.980565905 normal 0.00000 2.33313429 NA NA NA\n\nmodelsummary(mod, statistic = \"std.dev\", centrality = \"mean\")\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n -2.214 \n \n \n \n (0.604)\n \n \n hp \n 0.001 \n \n \n \n (0.001)\n \n \n drat \n 0.702 \n \n \n \n (0.141)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.499 \n \n \n R2 Adj. \n 0.430 \n \n \n Log.Lik. \n -12.114\n \n \n ELPD \n -15.2 \n \n \n ELPD s.e. \n 3.1 \n \n \n LOOIC \n 30.5 \n \n \n LOOIC s.e. \n 6.3 \n \n \n WAIC \n 30.1 \n \n \n RMSE \n 0.34 \n \n \n \n \n\n\n\nWe can also get additional test statistics using the test argument:\n\nget_estimates(mod, test = c(\"pd\", \"rope\"))\n\n term estimate mad conf.level conf.low conf.high pd rope.percentage prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2049112128 0.594295260 0.95 -3.409440861 -1.032307800 0.99925 0 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006352259 0.001085577 0.95 -0.001482977 0.002797352 0.73100 1 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7023874378 0.139034208 0.95 0.428481368 0.980565905 0.99975 0 normal 0.00000 2.33313429 NA NA NA", + "text": "Bayesian models\nMany bayesian models are supported out-of-the-box, including those produced by the rstanarm and brms packages. The statistics available for bayesian models are slightly different than those available for most frequentist models. Users can call get_estimates to see what is available:\n\nlibrary(rstanarm)\n\nThis is rstanarm version 2.32.1\n\n\n- See https://mc-stan.org/rstanarm/articles/priors for changes to default priors!\n\n\n- Default priors may change, so it's safest to specify priors, even if equivalent to the defaults.\n\n\n- For execution on a local, multicore CPU with excess RAM we recommend calling\n\n\n options(mc.cores = parallel::detectCores())\n\n\n\nAttaching package: 'rstanarm'\n\n\nThe following object is masked from 'package:fixest':\n\n se\n\nmod <- stan_glm(am ~ hp + drat, data = mtcars)\n\n\nget_estimates(mod)\n\n term estimate mad conf.level conf.low conf.high prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2194387470 0.606706338 0.95 -3.373391646 -0.96106383 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006492794 0.001046733 0.95 -0.001535328 0.00290699 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7039353605 0.141406704 0.95 0.403107499 0.97644701 normal 0.00000 2.33313429 NA NA NA\n\n\nThis shows that there is no std.error column, but that there is a mad statistic (mean absolute deviation). So we can do:\n\nmodelsummary(mod, statistic = \"mad\")\n\nWarning: \n`modelsummary` uses the `performance` package to extract goodness-of-fit\nstatistics from models of this class. You can specify the statistics you wish\nto compute by supplying a `metrics` argument to `modelsummary`, which will then\npush it forward to `performance`. Acceptable values are: \"all\", \"common\",\n\"none\", or a character vector of metrics names. For example: `modelsummary(mod,\nmetrics = c(\"RMSE\", \"R2\")` Note that some metrics are computationally\nexpensive. See `?performance::performance` for details.\n This warning appears once per session.\n\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n -2.219 \n \n \n \n (0.607)\n \n \n hp \n 0.001 \n \n \n \n (0.001)\n \n \n drat \n 0.704 \n \n \n \n (0.141)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.499 \n \n \n R2 Adj. \n 0.432 \n \n \n Log.Lik. \n -12.126\n \n \n ELPD \n -15.2 \n \n \n ELPD s.e. \n 3.1 \n \n \n LOOIC \n 30.3 \n \n \n LOOIC s.e. \n 6.2 \n \n \n WAIC \n 30.1 \n \n \n RMSE \n 0.34 \n \n \n \n \n\n\n\nAs noted in the modelsummary() documentation, model results are extracted using the parameters package. Users can pass additional arguments to modelsummary(), which will then push forward those arguments to the parameters::parameters function to change the results. For example, the parameters documentation for bayesian models shows that there is a centrality argument, which allows users to report the mean and standard deviation of the posterior distribution, instead of the median and MAD:\n\nget_estimates(mod, centrality = \"mean\")\n\n term estimate std.dev conf.level conf.low conf.high prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2141627146 0.620093539 0.95 -3.373391646 -0.96106383 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006814916 0.001110768 0.95 -0.001535328 0.00290699 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7005048046 0.144590665 0.95 0.403107499 0.97644701 normal 0.00000 2.33313429 NA NA NA\n\nmodelsummary(mod, statistic = \"std.dev\", centrality = \"mean\")\n\n\n\n \n\n \n \n \n \n \n \n \n (1)\n \n \n \n \n \n (Intercept)\n -2.214 \n \n \n \n (0.620)\n \n \n hp \n 0.001 \n \n \n \n (0.001)\n \n \n drat \n 0.701 \n \n \n \n (0.145)\n \n \n Num.Obs. \n 32 \n \n \n R2 \n 0.499 \n \n \n R2 Adj. \n 0.432 \n \n \n Log.Lik. \n -12.126\n \n \n ELPD \n -15.2 \n \n \n ELPD s.e. \n 3.1 \n \n \n LOOIC \n 30.3 \n \n \n LOOIC s.e. \n 6.2 \n \n \n WAIC \n 30.1 \n \n \n RMSE \n 0.34 \n \n \n \n \n\n\n\nWe can also get additional test statistics using the test argument:\n\nget_estimates(mod, test = c(\"pd\", \"rope\"))\n\n term estimate mad conf.level conf.low conf.high pd rope.percentage prior.distribution prior.location prior.scale group std.error statistic p.value\n1 (Intercept) -2.2194387470 0.606706338 0.95 -3.373391646 -0.96106383 0.99925 0 normal 0.40625 1.24747729 NA NA NA\n2 hp 0.0006492794 0.001046733 0.95 -0.001535328 0.00290699 0.74025 1 normal 0.00000 0.01819465 NA NA NA\n3 drat 0.7039353605 0.141406704 0.95 0.403107499 0.97644701 1.00000 0 normal 0.00000 2.33313429 NA NA NA", "crumbs": [ "Get started", "Model Summaries" @@ -946,7 +946,7 @@ "href": "NEWS.html", "title": "News", "section": "", - "text": "coef_rename() gets a poly=TRUE argument to rename poly(x, 2)-style coefficients. Thanks to @mccarthy-m-g for code contribution #778.\nget_gof(): logLik column converted to numeric for consistent types. Issue 649 reported on the mice Github.\nkableExtra update the siunitx commands for d columns.\nkableExtra escapes footnotes in HTML when output=\"kableExtra\"). Thanks to @dmurdoch and @michaelherndon97 for report #793.\n\n\n\n\n\nDocumentation improvements\nWarning when users use caption instead of title. Inconsistency with respect to tinytable.\nImproved documentation for title argument.\nhtest workaround.\n\nBugs:\n\ndatasummary_correlation() respects the escape argument. Issue #772.\ndatasummary_correlation() supports data.table objects. Issue #771.\n\n\n\n\nNew:\n\nmodelsummary() gets a gof_function argument which accepts functions to extract custom information from models.\nflextable: Support spanning column headers\ndatasummary_correlation() gets a star argument.\ndatasummary_correlation() accepts objects produced by the correlation package.\ndatasummary_balance(): formula can now include variables on the left-hand side to indicate the subset of columns to summarize: datasummary_balance(mpg + hp ~ am, data = mtcars) Thanks to @etiennebacher for feature request #751.\nUnnecessary text printed to screen on some F sta computations is now suppressed.\nUpdate to tinytable 0.3.0\n\nBugs:\n\nescape argument not respected in datasummary_df(). Thanks to @adamaltmejd for report #740\ndatasummary_correlation() supports data.table. Thanks to volatilehead on Twitter for report #737.\nAccepts named estimate argument when using shape and statistics are horizontal. Thanks to @iago-pssjd for report #745.\nLabelled values but no label for variable broke datasummary(). Thanks to @marklhc for report #752.\ncoef_map does not work when there is a group. Thanks to @mccarthy-m-g for report #757.\nkableExtra: fix spanning column headers when using the shape argument.\nMultiple footnotes and line breaks in footnotes are now allowed in tinytable output. Thanks to\n\n\n\n\nMAJOR BREAKING CHANGE: The default output format is now tinytable instead of kableExtra. Learn more about tinytable here:\nhttps://vincentarelbundock.github.io/tinytable/\nTo revert to the previous behavior persistently, users can call:\nlibrary(modelsummary) config_modelsummary(factory_default = “kableExtra”)\nOther breaking changes:\n\nThe statistic_override argument was replaced by vcov over 1 year ago, with appropriate deprecation warnings. It is now fully removed.\nThe group argument was replaced by shape several releases ago. It is now fully removed.\ndatasummary_skim()\n\nhistograms are only available with the tinytable backend. This allows a lot of code simplification and more customization.\nThe order of arguments type and output is switched for consistency with other functions.\nhistogram argument is deprecated.\n\n\nNew features:\n\ndatasummary_skim():\n\nNew type=\"all\" by default to display both numeric and categorical variables in a single table with distinct panels. This feature is only available with the tinytable backend (default).\nby argument allows summarizing numeric variables by group.\nfun_numeric argument accepts a list of functions to control the summary columns.\n\nmodelsummary():\n\nstatistic and estimate can be specified as named vectors to control the names of statistics when displayed in different columns using the shape argument. (Thanks to @mps9506 for bug report #722)\nmodelsummary(panels, shape = \"cbind\") automatically adds column-spanning labels when panels is a named nested list of models.\n\nconfig_modelsummary() gets a startup_message argument to silence the startup message persistently.\nImproved documentation and vignettes, providing clearer instructions and examples.\nUpdated tests and snapshots to ensure reliability and consistency across changes.\n\nBug fixes:\n\nFixed Issue #399: datasummary_balance() siunitx formatting.\nFixed Issue #782: Useless warning in some modelplot() calls. Thanks to @iago-pssjd for the report and @florence-laflamme for the fix.\nAddressed various bugs and made optimizations for better performance and user experience.\n\n\n\n\n\ntinytable supports histograms in datasummary_skim()\nconfig_modelsummary() supports tinytable factory.\n\n\n\n\n\nSupport the tinytable package as an output format (“factory”): https://vincentarelbundock.github.io/tinytable/\nQuarto: md output format is recognized.\noptions(modelsummary_factory_default) is respected, even in qmd->md documents.\n\nBugs:\n\nSome omitted coefficients with I() operator in formulas. Issue #693.\n\n\n\n\nMisc:\n\nDuplicate values in shape groups are removed automatically for cleaner labels.\n“Title” line no longer indented in markdown tables. Thanks to Ryan Briggs for report #671.\n\nBugs:\n\nSmall p values were not displayed properly in HTML output using kableExtra. Issue #669.\n\n\n\n\nNew:\n\nMinimal support for Typst output, with auto-detection in Quarto documents.\nstrip argument in dvnames.\ns.value statistic is now available whenever p.value is available. See Greenland (2019).\ndatasummary_skim() now includes histograms in gt tables.\n\nBugs:\n\nGOF term names get escaped in LaTeX. Thanks to @shreyasgm for reviving Issue #546.\nConflict with furrr generated errors for some models. Thanks to @sammo3182 for Issue #647.\n\n\n\n\nNew:\n\nfmt_sci() can now be used in the fmt argument for rounding with scientific notation.\n\nBugs:\n\nGroup separators respect add_rows with shape=\"rbind\". Thanks to @lrose1 for Report #626.\nBad column with horizontal models in shape and grouped estimates. Thanks to @iago-pssjd for Report #631.\ncoef_rename=TRUE bug with grouped estimates. Thanks to @iago-pssjd for Report #631.\nUpstream issue #881 in parameters meant that vcov was no longer used for confidence intervals.\n\n\n\n\n\nBuilt-in support for markdown tables.\nPackage no longer depends on kableExtra. Recommends an additional install for other formats.\nPersistent configuration of default output format: config_modelsummary(factory_default = \"gt\")\nshape = \"rcollapse\" and shape = \"rbind\"\nglance_custom() can drop GOF by assigning NA: https://stackoverflow.com/questions/75215355/assigning-different-coefficient-names-and-goodness-of-fit-statistics-to-differen\nWhen a statistic is not available, modelsummary prints an empty cell instead of returning an error.\n“\\label{tab:something}” works in title even when escape=TRUE\nMultiple fixest_multi objects supported.\noptions(modelsummary_future = FALSE) disables future parallelism.\n\nBug fixes:\n\nstatistic=NULL is now respected when shape=\"rbind\". Thanks to Panos Mavros for report #620.\nget_estimates() supports vcov string shortcuts and formulas. Thanks to @ethans-carl for report #605.\nQuarto and Rmarkdown documents include situnix in header automatically for decimal alignement with align=\"ddd\"\nescape is now respected by modelsummary with shape=\"rbind\". Thanks to @chickymonkeys for report #622.\n\n\n\n\nBreaking change:\n\nThe default column label style in modelsummary() has changed from “Model 1” to “(1)”. The benefits are: labels are no longer in English by default; use less horizontal space; eliminate the “Model” redundancy. Unfortunately, this could break code in some edge cases where users rely on column names to manipulate tables. The old behavior can be restored by calling: options(modelsummary_model_labels=\"model\")\n\nNew features:\n\nshape=\"rbind\" to stack multiple regression tables and create “panels” with labelled groups of models.\nfmt: new helper functions for different formatting styles\n\nfmt = fmt_decimal(2): decimal digits\nfmt = fmt_decimal(digits = 2, pdigits = 4): decimal digits with p value-specific setting\nfmt = fmt_sprintf(\"%.3f\"): sprintf() decimal\nfmt = fmt_sprintf(\"%.3e\"): sprintf() scientific\nfmt = fmt_significant(3): significant digits\nfmt = fmt_statistic(\"estimate\" = 2, \"std.error\" = 3): statistic-specific formatting\nfmt = fmt_term(\"(Intercept)\" = 2, \"hp\" = 3): term-specific formatting\nfmt = fmt_identity(): raw values\n\nNew styles for default column labels in modelsummary, such as Roman Numerals or letters in parentheses.\n\nSet the style with a global option: options(modelsummary_model_labels = \"roman\")\nSupported styles: “model”, “arabic”, “letters”, “roman”, “(arabic)”, “(letters)”, “(roman)””\n\nmodelplot(draw = FALSE) now returns a p.value column. This allows conditional aesthetics (see the modelplot vignette).\nBetter integration with the marginaleffects package.\n\nBugs:\n\nSome fixest models returns useless “group.x” and “group.y” columns. Isse #591. Thanks to Adam Altmejd for the report.\n\n\n\n\nBreaking change:\n\nWith the shape and output=\"dataframe\" arguments, there always used to be a group column. Now, this column has the same name as the variable in the shape formula (“response”, “component”, etc.).\n\nNew features:\n\nshape can include multiple groups.\ncoef_rename can be an unnamed vector of length equal to the number of terms in the final table, obtained after coef_map and coef_omit are applied and models are merged.\ncoef_omit accepts numeric indices. Positive values: coefficients to omit. Negative values: coefficients to keep.\ndatasummary_skim: Increased maximum number of variables to 250.\nQuarto notebooks compile to Word and Markdown automatically.\n\nBug fixes:\n\nOrder of notes preserved in some output format (Issue #577)\n\n\n\n\nBreaking change:\n\nRequires siunitx version 3.0.25 LaTeX package.\nThe title argument now respects the escape argument for all kableExtra output formats. This can break tables in which users manually escaped titles.\n\nNew features:\n\n“d” is accepted for decimal-alignment in the align argument for all output formats. modelsummary(mod, align = \"ld\")\nNew update_modelsummary() function makes it easy to install the dev versions of modelsummary and its dependencies (mostly useful for Vincent and people who report bugs).\nRounding: display at least one significant digit by default.\nAutomatic renaming of haven labels in modelsummary(), datasummary(), datasummary_skim()\nAllow output = \"filename.csv\"\nAllow output = \"filename.xlsx\"\nadd_columns argument supported in modelsummary()\ndatasummary_balance supports the stars argument.\nAllow stars and confidence intervals with align = \"d\" column.\n\nBug fixes:\n\nIn some locales, the HTML minus sign created problems in the output. We only use it in “known” locales.\nMany minor bug fixes\n\n\n\n\n\nMinor release to fix CRAN failure\n\n\n\n\n\nshape argument accepts interactions with the colon “:” character. This combines two columns into one, which can be useful to display terms and group names in a single column.\nParallelization using parallel::mclapply. See ?modelsummary\nmodelsummary no longer computes confidence intervals when not necessary, which can save some time. Also see: conf_level=NULL\nAdded log likelihood to GOF for lm and glm models.\nRemoved extraneous warnings\nBug fixes\n\n\n\n\nThis first major release accompanies the publication of an article in the Journal of Statistical Software:\nArel-Bundock, Vincent (2022). “modelsummary: Data and Model Summaries in R.” Journal of Statistical Software, 103(1), 1-23. doi:10.18637/jss.v103.i01 https://doi.org/10.18637/jss.v103.i01.’\nIf you like modelsummary, please cite the JSS article and tell your friends about it.\nMinor changes:\n\ngof_map=\"all\" includes all available statistics. gof_map=\"none\" excludes all statistics.\nBug fixes\n\n\n\n\n\nBetter printout for term names in mixed-effects models\n{brms} and {stanreg} models now extracted with diagnostic=NULL and test=NULL by default for speed.\n\n\n\n\nBreaking changes:\n\nmodelsummary_wide is no longer available. Use the shape argument of modelsummary instead.\nmodelsummary now uses the easystats packages (performance and parameters) to extract estimates and goodness-of-fit statistics instead of broom. This can be reverted by setting a global option: options(modelsummary_get=\"broom\"). This change aims to (1) increase consistency across models, (2) improve the developers’ ability to push bug fixes upstream when necessary, and (3) improve support for mixed effects, bayesian, and GAM models. The two main drawbacks are: (a) The set of printed statistics may be slightly different from previous versions of modelsummary (b) The group identifiers used in the shape formula will also be different for certain models (e.g., in nnet::multinom, y.level becomes response).\n\nNew features:\n\nThe shape argument accepts a formula and can reshape information in myriad ways. Deprecates the group argument. Examples:\n\n~ statistic: statistics are shown horizontally in distinct columns.\nmodel ~ term: models in rows and terms in columns.\nterm + y.level + statistic ~ model: grouped coefficients for multivariate outcome in nnet::multinom\ny.level ~ model: partial match is the same as the previous formula\n\nFormat distinct statistics differently by passing a named list to fmt:\n\nmodelsummary(mod, fmt = list(estimate = 2, std.error = 1, rmse = 4))\n\nUse glue to apply functions to numeric values by setting fmt = NULL. Example:\n\nmodelsummary(model, fmt = NULL, estimate = \"{log(estimate)}\")\n\nUpdate for breaking changes after fixest 0.10.4\n\nBug fixes:\n\ngroup_map rename issue\nResidual standard error mistakenly labelled “RMSE” in lm models.\ndatasummary_skim output to jpg should now works\nescape fixes\n\n\n\n\n\nNew exponentiate argument for modelsummary() and modelplot()\ngof_map accepts a vector such as c(\"rmse\", \"nobs\", \"r.squared\")\nDrop rlang dependency\nBug fixes\n\n\n\n\ndatasummary_balance:\n\nAccepts ~ 1 as a formula to summarize all data.\n\nMisc:\n\ndocumentation improvements\nRMSE included by default in models of class lm\n\n\n\n\nmodelsummary:\n\nvcov strings like HC1 and Robust are now case-insensitive\ngof_map now accepts a data.frame or tibble with a fmt list-column which includes functions (see Examples in docs)\nR2 is no longer computed by default for bayesian and mixed effects models. An informative one-time warning is printed about the metrics argument.\n\ndatasummary_skim:\n\nHistograms now work in Jupyter\nBugfix: harmless error message is no longer printed\n\nkableExtra factory:\n\nThe col.names argument can now be passed to kableExtra::kbl through the … ellipsis.\n\nMisc:\n\nMany small improvements to the vignettes and docs\noutput = \"github_document\" is now supported\n\n\n\n\n\nBug fix: siunitx and rounding NA\n\n\n\n\nmodelsummary:\n\nF statistic takes into account vcov argument\nSupport group = group ~ model + term\n\ndatasummary_balance:\n\nWeighted means and standard deviations are now supported. Counts and percentages are not, but raise a warning.\n\nMisc:\n\nBugfix: rounding in LaTeX w/ siunitx and NaN entries.\noutput=‘jupyter’ no longer prints an extraneous TRUE to the notebook\n\n\n\n\nmodelsummary:\n\nImproved vcov argument handling for fixest models (#357 by @grantmcdermott)\nFix display of fixest::i() variables and interactions (#361 by @grantmcdermott)\nConsistent display of clustered SEs (#356, #363 and #366 by @grantmcdermott)\n\ndatasummary_correlation:\n\nadd_rows and add_columns arguments are now available here.\n\nMisc:\n\nGlobal options for output factories are renamed: modelsummary_factory_default, modelsummary_factory_html, etc.\nHot fix for change in R-devel behavior or intersect\n\nBug fixes:\n\ndatasummary_balance: escape variable names when escape=TRUE\nBlogdown LaTeX dependency bug when output is HTML\n\n\n\n\nBreaking change:\n\nSupport for dcolumn for dot-aligned columns is deprecated. Use “d” in the align argument instead.\n\nOther changes:\n\nLaTeX output: Numeric entries are wrapped in the \\num{} function from the siunitx package by default. This produces much nicer formatting. This can be disabled with a global option. See ?modelsummary\nThe align argument accepts a “d” column for dot-alignment using the siunitx LaTeX package: align=\"ldd\".\nHTML tables display proper minus signs.\nNew escape argument in most table-building functions.\nLaTeX output accepts the threeparttable=TRUE argument through ...\nNo more dependency on tidyr\n\nmodelsummary:\n\ngroup: The order of terms in the formula determines the order of rows/columns\n\nmodelsummary_wide:\n\nNote: This function will eventually be deprecated\nBugfix with statistic=NULL.\n\nmodelplot:\n\nPreserves order of models in the user-supplied list\n\ndatasummary_crosstab:\n\nstatistic=NULL produces a very basic crosstab\n\ndatasummary_crosstab:\n\nDefault alignment “lrrrrr” consistent with other datasummary_* functions\n\n\n\n\nmodelsummary:\n\nDisable stars footnote with options(\"modelsummary_stars_note\" = FALSE)\nlongtable=TRUE works for LaTeX output\nInteractions with “:” are no longer converted to “x” when coef_map or coef_rename are used.\ngroup = model ~ term + group is now supported.\n\ndatasummary_skim:\n\ndatasummary_skim(\"categorical\") keeps NA by default. Users can convert variables to factors before calling datasummary_skim to exclude NA.\n\nOther:\n\nImproved warnings for bad calls: modelsummary(model1, model2)\ngt titles use the new caption argument in the gt 0.3.0 function\nBug fix: Overaggressive tests for glue strings prevented functions inside {}\n\n\n\n\nBreaking change:\n\nThe default significance markers stars=TRUE have been updated to be consistent with the default output from base R (e.g., in summary.lm). The new significance thresholds are: “+” p < 0.1, “” p < 0.05, ”” p < 0.01, ”” p < 0.001\n\ndatasummary_crosstab:\n\nNew function to produce cross-tabulations\n\ndatasummary:\n\nN is smart enough to return either the number of elements in a subset or the number of non-missing observations in a variable\n\ndatasummary_balance:\n\nKeeps NAs in factor variables by default. Users can convert their variables with the factor() function to omit NAs automatically.\n\nmodelsummary:\n\nthemes can be set using global options (experimental)\nnew vcov options: “bootstrap”, “HAC”, “NeweyWest”, “Andrews”, “panel-corrected”, “weave”, “outer-product”\nA valid get_gof (glance) is now optional.\n… is pushed through to sandwich, which allows things like: modelsummary(model, vcov = \"bootstrap\", R = 1000, cluster = \"firm\")\n\nOther:\n\nJupyter notebook support via output=\"jupyter\"\nBug fixes\n\n\n\n\nmodelsummary:\n\nnew arguments for modelsummary: group and group_map for grouped parameters (e.g., outcome levels in multinomial logit or components of gamlss model).\ndvnames() makes it easy to get dependent variable column titles (thanks to @NickCH-K)\noutput=\"modelsummary_list\" to save a lightweight list-based representation of the table which can be saved and fed to modelsummary once more to get a full table.\nvcov adds a row to note the type of standard errors.\nmodelsummary accepts a single model with multiple vcovs.\nget_gof forwards … to model_performance\ncoef_map accepts unnamed vectors for easy subsetting\nfixest::fixest_multi support\noptions(modelsummary_get) to set the order of extraction functions to use under the hood (broom vs. easystats vs. all)\nmetrics argument of performance::model_performance is available via modelsummary’s … ellipsis to limit the GOF statistics in Bayesian models.\nusers can omit the stars legend note by using glue strings: estimate=\"{estimate}{stars}\"\noutput=“html” can use gt by setting options(modelsummary_factory_html=\"gt\")\n\ndatasummary_correlation:\n\npasses ... forward\nnew function: datasummary_correlation_format\ndatasummary_correlation’s method argument accepts functions and “pearspear” (thanks to @joachim-gassen)\n\ndatasummary:\n\ndatasummary functions and rounding accept …, big.mark, etc.\n\ndatasummary_skim:\n\nnow works with haven_labeled numeric\nfaster tables with bayesian models.\n\nBug fixes and lints\n\n\n\n\nnew output format: latex_tabular\ntidy_custom allows partial term matches\nmodelsummary(coef_rename) accepts functions\nnew function coef_rename for use in modelsummary(coef_rename=coef_rename)\nmodelplot accepts add_rows to add reference categories\ninformative error message when estimate or statistic is not available\nbug fixes\n\n\n\n\n\nstatistic_override becomes vcov\nvcov accepts shortcuts: “robust”, “stata”, “HC0”, etc.\nvcov accepts formulas for clustered SEs: ~group\nmodelsummary_wide has a new “stacking” argument\nhtml horizontal rule to separate estimates form gof\ngof_map accepts list of lists. only needs 3 columns.\nsupport officedown Rmd\nestimate accepts a vector for per model estimates\noptions(modelsummary_default) can be markdown, html, latex\nbug: passing arguments through …\nbug: stars and rounding\n\n\n\n\n\nglue format for estimate and statistic\neasystats support for model info extraction\ndeprecate statistic_vertical\ndeprecate extract_models. Use modelsummary(output=“dataframe”) instead.\nmodelplot pushes … through to modelsummary(output=“dataframe”)\ndatasummary_skim(type=“dataset”)\ngof_map omits by default\ndatasummary_balance uses row percentages\nstatistic_override does not require a list\nstatistic_override accepts a single model\nN function for well formatted N in datasummary\nBug fixes\n\n\n\n\n\nnew function: modelsummary_wide\ncoef_omit and gof_omit use grepl(perl=TRUE)\nfmt accepts integer, string or function and respects options(OutDec=“,”)\nalign argument for modelsummary\nalign is more liberal to accept dcolumn alignment\nglance_custom methods for lfe and fixest\nbug fixes\n\n\n\n\n\nnew argument: coef_rename\nnew function: datasummary_df\npreserve term order in modelsummary\nrefactor datasummary_balance\ndatasummary_skim uses svg histograms instead of unicode\nremoved 5 dependencies\npass … to kableExtra::kbl for more customization\ntest improvements\ninternal code style\nbug fixes\n\n\n\n\n\nbug fixes\n\n\n\n\n\ndefault HTML output factory is now kableExtra\ninteraction “:” gsubbed by “0d7”\ndependencies: removed 1 depends, 3 imports, and 3 suggests\nword_document knitr works out-of-the-box\nbug fixes\n\n\n\n\n\nglance_custom.fixest ships with modelsummary\n\n\n\n\n\ndatasummary\ndatasummary_skim\ndatasummary_balance\ndatasummary_correlation\nmodelplot\nallow duplicate model names\nbug: can’t use coef_map with multiple statistics (thanks @sbw78)\nbug: wrong number of stars w/ statistic=‘p.value’ (thanks @torfason)\noutput=‘data.frame’. extract is no longer documented.\n\n\n\n\n\nadd_rows now accepts a data.frame with “position” and “section” columns\nadd_rows_location is deprecated\nbug in sanity_output prevented overwriting files\n\n\n\n\n\nhuxtable support\nflextable support\nestimate argument\nfixest tidiers\nwebsite and vignette improvements\ngof_map additions\nglance_custom\ntidy_custom\n\n\n\n\n\nOut-of-the-box Rmarkdown compilation to HTML, PDF, RTF\nkableExtra output format for LaTeX and Markdown\nSupport for threeparttable, colors, and many other LaTeX options\nDeprecated arguments: filename, subtitle\nDeprecated functions: clean_latex, knit_latex\npkgdown website and doc improvements\nmitools tidiers\nNew tests\n\n\n\n\n\nConvenience function to render markdown in row/column labels\nbug: breakage when all GOF were omitted\nClean up manual with @keywords internal\nbug: tidyr import\n\n\n\n\n\ngt is now available on CRAN\nnew latex_env argument for knit_latex and clean_latex\nbug when all gof omitted\nbug in statistic_override with functions\nbug caused by upstream changes in tab_style\nbug caused by upstream changes in filename=‘rtf’\nAllow multiple rows of uncertainty estimates per coefficient\nPreserve add_rows order\nDisplay uncertainty estimates next to the coefficient with statistic_vertical = FALSE\nBetter clean_latex function\nCan display R2 and confidence intervals for mice-imputed lm-models\nInternal functions have @keywords internal to avoid inclusion in docs\nStatistic override accepts pre-formatted character vectors\n\n\n\n\n\nInitial release (gt still needs to be installed from github)", + "text": "coef_rename() gets a poly=TRUE argument to rename poly(x, 2)-style coefficients. Thanks to @mccarthy-m-g for code contribution #778.\nget_gof(): logLik column converted to numeric for consistent types. Issue 649 reported on the mice Github.\nkableExtra update the siunitx commands for d columns.\nkableExtra escapes footnotes in HTML when output=\"kableExtra\"). Thanks to @dmurdoch and @michaelherndon97 for report #793.\nNew fmt_equivalence() function to implement the rounding suggestion of Astier & Wolak (2024). Thanks to Nicolas Astier for code prototype.\n\n\n\n\n\nDocumentation improvements\nWarning when users use caption instead of title. Inconsistency with respect to tinytable.\nImproved documentation for title argument.\nhtest workaround.\n\nBugs:\n\ndatasummary_correlation() respects the escape argument. Issue #772.\ndatasummary_correlation() supports data.table objects. Issue #771.\n\n\n\n\nNew:\n\nmodelsummary() gets a gof_function argument which accepts functions to extract custom information from models.\nflextable: Support spanning column headers\ndatasummary_correlation() gets a star argument.\ndatasummary_correlation() accepts objects produced by the correlation package.\ndatasummary_balance(): formula can now include variables on the left-hand side to indicate the subset of columns to summarize: datasummary_balance(mpg + hp ~ am, data = mtcars) Thanks to @etiennebacher for feature request #751.\nUnnecessary text printed to screen on some F sta computations is now suppressed.\nUpdate to tinytable 0.3.0\n\nBugs:\n\nescape argument not respected in datasummary_df(). Thanks to @adamaltmejd for report #740\ndatasummary_correlation() supports data.table. Thanks to volatilehead on Twitter for report #737.\nAccepts named estimate argument when using shape and statistics are horizontal. Thanks to @iago-pssjd for report #745.\nLabelled values but no label for variable broke datasummary(). Thanks to @marklhc for report #752.\ncoef_map does not work when there is a group. Thanks to @mccarthy-m-g for report #757.\nkableExtra: fix spanning column headers when using the shape argument.\nMultiple footnotes and line breaks in footnotes are now allowed in tinytable output. Thanks to\n\n\n\n\nMAJOR BREAKING CHANGE: The default output format is now tinytable instead of kableExtra. Learn more about tinytable here:\nhttps://vincentarelbundock.github.io/tinytable/\nTo revert to the previous behavior persistently, users can call:\nlibrary(modelsummary) config_modelsummary(factory_default = “kableExtra”)\nOther breaking changes:\n\nThe statistic_override argument was replaced by vcov over 1 year ago, with appropriate deprecation warnings. It is now fully removed.\nThe group argument was replaced by shape several releases ago. It is now fully removed.\ndatasummary_skim()\n\nhistograms are only available with the tinytable backend. This allows a lot of code simplification and more customization.\nThe order of arguments type and output is switched for consistency with other functions.\nhistogram argument is deprecated.\n\n\nNew features:\n\ndatasummary_skim():\n\nNew type=\"all\" by default to display both numeric and categorical variables in a single table with distinct panels. This feature is only available with the tinytable backend (default).\nby argument allows summarizing numeric variables by group.\nfun_numeric argument accepts a list of functions to control the summary columns.\n\nmodelsummary():\n\nstatistic and estimate can be specified as named vectors to control the names of statistics when displayed in different columns using the shape argument. (Thanks to @mps9506 for bug report #722)\nmodelsummary(panels, shape = \"cbind\") automatically adds column-spanning labels when panels is a named nested list of models.\n\nconfig_modelsummary() gets a startup_message argument to silence the startup message persistently.\nImproved documentation and vignettes, providing clearer instructions and examples.\nUpdated tests and snapshots to ensure reliability and consistency across changes.\n\nBug fixes:\n\nFixed Issue #399: datasummary_balance() siunitx formatting.\nFixed Issue #782: Useless warning in some modelplot() calls. Thanks to @iago-pssjd for the report and @florence-laflamme for the fix.\nAddressed various bugs and made optimizations for better performance and user experience.\n\n\n\n\n\ntinytable supports histograms in datasummary_skim()\nconfig_modelsummary() supports tinytable factory.\n\n\n\n\n\nSupport the tinytable package as an output format (“factory”): https://vincentarelbundock.github.io/tinytable/\nQuarto: md output format is recognized.\noptions(modelsummary_factory_default) is respected, even in qmd->md documents.\n\nBugs:\n\nSome omitted coefficients with I() operator in formulas. Issue #693.\n\n\n\n\nMisc:\n\nDuplicate values in shape groups are removed automatically for cleaner labels.\n“Title” line no longer indented in markdown tables. Thanks to Ryan Briggs for report #671.\n\nBugs:\n\nSmall p values were not displayed properly in HTML output using kableExtra. Issue #669.\n\n\n\n\nNew:\n\nMinimal support for Typst output, with auto-detection in Quarto documents.\nstrip argument in dvnames.\ns.value statistic is now available whenever p.value is available. See Greenland (2019).\ndatasummary_skim() now includes histograms in gt tables.\n\nBugs:\n\nGOF term names get escaped in LaTeX. Thanks to @shreyasgm for reviving Issue #546.\nConflict with furrr generated errors for some models. Thanks to @sammo3182 for Issue #647.\n\n\n\n\nNew:\n\nfmt_sci() can now be used in the fmt argument for rounding with scientific notation.\n\nBugs:\n\nGroup separators respect add_rows with shape=\"rbind\". Thanks to @lrose1 for Report #626.\nBad column with horizontal models in shape and grouped estimates. Thanks to @iago-pssjd for Report #631.\ncoef_rename=TRUE bug with grouped estimates. Thanks to @iago-pssjd for Report #631.\nUpstream issue #881 in parameters meant that vcov was no longer used for confidence intervals.\n\n\n\n\n\nBuilt-in support for markdown tables.\nPackage no longer depends on kableExtra. Recommends an additional install for other formats.\nPersistent configuration of default output format: config_modelsummary(factory_default = \"gt\")\nshape = \"rcollapse\" and shape = \"rbind\"\nglance_custom() can drop GOF by assigning NA: https://stackoverflow.com/questions/75215355/assigning-different-coefficient-names-and-goodness-of-fit-statistics-to-differen\nWhen a statistic is not available, modelsummary prints an empty cell instead of returning an error.\n“\\label{tab:something}” works in title even when escape=TRUE\nMultiple fixest_multi objects supported.\noptions(modelsummary_future = FALSE) disables future parallelism.\n\nBug fixes:\n\nstatistic=NULL is now respected when shape=\"rbind\". Thanks to Panos Mavros for report #620.\nget_estimates() supports vcov string shortcuts and formulas. Thanks to @ethans-carl for report #605.\nQuarto and Rmarkdown documents include situnix in header automatically for decimal alignement with align=\"ddd\"\nescape is now respected by modelsummary with shape=\"rbind\". Thanks to @chickymonkeys for report #622.\n\n\n\n\nBreaking change:\n\nThe default column label style in modelsummary() has changed from “Model 1” to “(1)”. The benefits are: labels are no longer in English by default; use less horizontal space; eliminate the “Model” redundancy. Unfortunately, this could break code in some edge cases where users rely on column names to manipulate tables. The old behavior can be restored by calling: options(modelsummary_model_labels=\"model\")\n\nNew features:\n\nshape=\"rbind\" to stack multiple regression tables and create “panels” with labelled groups of models.\nfmt: new helper functions for different formatting styles\n\nfmt = fmt_decimal(2): decimal digits\nfmt = fmt_decimal(digits = 2, pdigits = 4): decimal digits with p value-specific setting\nfmt = fmt_sprintf(\"%.3f\"): sprintf() decimal\nfmt = fmt_sprintf(\"%.3e\"): sprintf() scientific\nfmt = fmt_significant(3): significant digits\nfmt = fmt_statistic(\"estimate\" = 2, \"std.error\" = 3): statistic-specific formatting\nfmt = fmt_term(\"(Intercept)\" = 2, \"hp\" = 3): term-specific formatting\nfmt = fmt_identity(): raw values\n\nNew styles for default column labels in modelsummary, such as Roman Numerals or letters in parentheses.\n\nSet the style with a global option: options(modelsummary_model_labels = \"roman\")\nSupported styles: “model”, “arabic”, “letters”, “roman”, “(arabic)”, “(letters)”, “(roman)””\n\nmodelplot(draw = FALSE) now returns a p.value column. This allows conditional aesthetics (see the modelplot vignette).\nBetter integration with the marginaleffects package.\n\nBugs:\n\nSome fixest models returns useless “group.x” and “group.y” columns. Isse #591. Thanks to Adam Altmejd for the report.\n\n\n\n\nBreaking change:\n\nWith the shape and output=\"dataframe\" arguments, there always used to be a group column. Now, this column has the same name as the variable in the shape formula (“response”, “component”, etc.).\n\nNew features:\n\nshape can include multiple groups.\ncoef_rename can be an unnamed vector of length equal to the number of terms in the final table, obtained after coef_map and coef_omit are applied and models are merged.\ncoef_omit accepts numeric indices. Positive values: coefficients to omit. Negative values: coefficients to keep.\ndatasummary_skim: Increased maximum number of variables to 250.\nQuarto notebooks compile to Word and Markdown automatically.\n\nBug fixes:\n\nOrder of notes preserved in some output format (Issue #577)\n\n\n\n\nBreaking change:\n\nRequires siunitx version 3.0.25 LaTeX package.\nThe title argument now respects the escape argument for all kableExtra output formats. This can break tables in which users manually escaped titles.\n\nNew features:\n\n“d” is accepted for decimal-alignment in the align argument for all output formats. modelsummary(mod, align = \"ld\")\nNew update_modelsummary() function makes it easy to install the dev versions of modelsummary and its dependencies (mostly useful for Vincent and people who report bugs).\nRounding: display at least one significant digit by default.\nAutomatic renaming of haven labels in modelsummary(), datasummary(), datasummary_skim()\nAllow output = \"filename.csv\"\nAllow output = \"filename.xlsx\"\nadd_columns argument supported in modelsummary()\ndatasummary_balance supports the stars argument.\nAllow stars and confidence intervals with align = \"d\" column.\n\nBug fixes:\n\nIn some locales, the HTML minus sign created problems in the output. We only use it in “known” locales.\nMany minor bug fixes\n\n\n\n\n\nMinor release to fix CRAN failure\n\n\n\n\n\nshape argument accepts interactions with the colon “:” character. This combines two columns into one, which can be useful to display terms and group names in a single column.\nParallelization using parallel::mclapply. See ?modelsummary\nmodelsummary no longer computes confidence intervals when not necessary, which can save some time. Also see: conf_level=NULL\nAdded log likelihood to GOF for lm and glm models.\nRemoved extraneous warnings\nBug fixes\n\n\n\n\nThis first major release accompanies the publication of an article in the Journal of Statistical Software:\nArel-Bundock, Vincent (2022). “modelsummary: Data and Model Summaries in R.” Journal of Statistical Software, 103(1), 1-23. doi:10.18637/jss.v103.i01 https://doi.org/10.18637/jss.v103.i01.’\nIf you like modelsummary, please cite the JSS article and tell your friends about it.\nMinor changes:\n\ngof_map=\"all\" includes all available statistics. gof_map=\"none\" excludes all statistics.\nBug fixes\n\n\n\n\n\nBetter printout for term names in mixed-effects models\n{brms} and {stanreg} models now extracted with diagnostic=NULL and test=NULL by default for speed.\n\n\n\n\nBreaking changes:\n\nmodelsummary_wide is no longer available. Use the shape argument of modelsummary instead.\nmodelsummary now uses the easystats packages (performance and parameters) to extract estimates and goodness-of-fit statistics instead of broom. This can be reverted by setting a global option: options(modelsummary_get=\"broom\"). This change aims to (1) increase consistency across models, (2) improve the developers’ ability to push bug fixes upstream when necessary, and (3) improve support for mixed effects, bayesian, and GAM models. The two main drawbacks are: (a) The set of printed statistics may be slightly different from previous versions of modelsummary (b) The group identifiers used in the shape formula will also be different for certain models (e.g., in nnet::multinom, y.level becomes response).\n\nNew features:\n\nThe shape argument accepts a formula and can reshape information in myriad ways. Deprecates the group argument. Examples:\n\n~ statistic: statistics are shown horizontally in distinct columns.\nmodel ~ term: models in rows and terms in columns.\nterm + y.level + statistic ~ model: grouped coefficients for multivariate outcome in nnet::multinom\ny.level ~ model: partial match is the same as the previous formula\n\nFormat distinct statistics differently by passing a named list to fmt:\n\nmodelsummary(mod, fmt = list(estimate = 2, std.error = 1, rmse = 4))\n\nUse glue to apply functions to numeric values by setting fmt = NULL. Example:\n\nmodelsummary(model, fmt = NULL, estimate = \"{log(estimate)}\")\n\nUpdate for breaking changes after fixest 0.10.4\n\nBug fixes:\n\ngroup_map rename issue\nResidual standard error mistakenly labelled “RMSE” in lm models.\ndatasummary_skim output to jpg should now works\nescape fixes\n\n\n\n\n\nNew exponentiate argument for modelsummary() and modelplot()\ngof_map accepts a vector such as c(\"rmse\", \"nobs\", \"r.squared\")\nDrop rlang dependency\nBug fixes\n\n\n\n\ndatasummary_balance:\n\nAccepts ~ 1 as a formula to summarize all data.\n\nMisc:\n\ndocumentation improvements\nRMSE included by default in models of class lm\n\n\n\n\nmodelsummary:\n\nvcov strings like HC1 and Robust are now case-insensitive\ngof_map now accepts a data.frame or tibble with a fmt list-column which includes functions (see Examples in docs)\nR2 is no longer computed by default for bayesian and mixed effects models. An informative one-time warning is printed about the metrics argument.\n\ndatasummary_skim:\n\nHistograms now work in Jupyter\nBugfix: harmless error message is no longer printed\n\nkableExtra factory:\n\nThe col.names argument can now be passed to kableExtra::kbl through the … ellipsis.\n\nMisc:\n\nMany small improvements to the vignettes and docs\noutput = \"github_document\" is now supported\n\n\n\n\n\nBug fix: siunitx and rounding NA\n\n\n\n\nmodelsummary:\n\nF statistic takes into account vcov argument\nSupport group = group ~ model + term\n\ndatasummary_balance:\n\nWeighted means and standard deviations are now supported. Counts and percentages are not, but raise a warning.\n\nMisc:\n\nBugfix: rounding in LaTeX w/ siunitx and NaN entries.\noutput=‘jupyter’ no longer prints an extraneous TRUE to the notebook\n\n\n\n\nmodelsummary:\n\nImproved vcov argument handling for fixest models (#357 by @grantmcdermott)\nFix display of fixest::i() variables and interactions (#361 by @grantmcdermott)\nConsistent display of clustered SEs (#356, #363 and #366 by @grantmcdermott)\n\ndatasummary_correlation:\n\nadd_rows and add_columns arguments are now available here.\n\nMisc:\n\nGlobal options for output factories are renamed: modelsummary_factory_default, modelsummary_factory_html, etc.\nHot fix for change in R-devel behavior or intersect\n\nBug fixes:\n\ndatasummary_balance: escape variable names when escape=TRUE\nBlogdown LaTeX dependency bug when output is HTML\n\n\n\n\nBreaking change:\n\nSupport for dcolumn for dot-aligned columns is deprecated. Use “d” in the align argument instead.\n\nOther changes:\n\nLaTeX output: Numeric entries are wrapped in the \\num{} function from the siunitx package by default. This produces much nicer formatting. This can be disabled with a global option. See ?modelsummary\nThe align argument accepts a “d” column for dot-alignment using the siunitx LaTeX package: align=\"ldd\".\nHTML tables display proper minus signs.\nNew escape argument in most table-building functions.\nLaTeX output accepts the threeparttable=TRUE argument through ...\nNo more dependency on tidyr\n\nmodelsummary:\n\ngroup: The order of terms in the formula determines the order of rows/columns\n\nmodelsummary_wide:\n\nNote: This function will eventually be deprecated\nBugfix with statistic=NULL.\n\nmodelplot:\n\nPreserves order of models in the user-supplied list\n\ndatasummary_crosstab:\n\nstatistic=NULL produces a very basic crosstab\n\ndatasummary_crosstab:\n\nDefault alignment “lrrrrr” consistent with other datasummary_* functions\n\n\n\n\nmodelsummary:\n\nDisable stars footnote with options(\"modelsummary_stars_note\" = FALSE)\nlongtable=TRUE works for LaTeX output\nInteractions with “:” are no longer converted to “x” when coef_map or coef_rename are used.\ngroup = model ~ term + group is now supported.\n\ndatasummary_skim:\n\ndatasummary_skim(\"categorical\") keeps NA by default. Users can convert variables to factors before calling datasummary_skim to exclude NA.\n\nOther:\n\nImproved warnings for bad calls: modelsummary(model1, model2)\ngt titles use the new caption argument in the gt 0.3.0 function\nBug fix: Overaggressive tests for glue strings prevented functions inside {}\n\n\n\n\nBreaking change:\n\nThe default significance markers stars=TRUE have been updated to be consistent with the default output from base R (e.g., in summary.lm). The new significance thresholds are: “+” p < 0.1, “” p < 0.05, ”” p < 0.01, ”” p < 0.001\n\ndatasummary_crosstab:\n\nNew function to produce cross-tabulations\n\ndatasummary:\n\nN is smart enough to return either the number of elements in a subset or the number of non-missing observations in a variable\n\ndatasummary_balance:\n\nKeeps NAs in factor variables by default. Users can convert their variables with the factor() function to omit NAs automatically.\n\nmodelsummary:\n\nthemes can be set using global options (experimental)\nnew vcov options: “bootstrap”, “HAC”, “NeweyWest”, “Andrews”, “panel-corrected”, “weave”, “outer-product”\nA valid get_gof (glance) is now optional.\n… is pushed through to sandwich, which allows things like: modelsummary(model, vcov = \"bootstrap\", R = 1000, cluster = \"firm\")\n\nOther:\n\nJupyter notebook support via output=\"jupyter\"\nBug fixes\n\n\n\n\nmodelsummary:\n\nnew arguments for modelsummary: group and group_map for grouped parameters (e.g., outcome levels in multinomial logit or components of gamlss model).\ndvnames() makes it easy to get dependent variable column titles (thanks to @NickCH-K)\noutput=\"modelsummary_list\" to save a lightweight list-based representation of the table which can be saved and fed to modelsummary once more to get a full table.\nvcov adds a row to note the type of standard errors.\nmodelsummary accepts a single model with multiple vcovs.\nget_gof forwards … to model_performance\ncoef_map accepts unnamed vectors for easy subsetting\nfixest::fixest_multi support\noptions(modelsummary_get) to set the order of extraction functions to use under the hood (broom vs. easystats vs. all)\nmetrics argument of performance::model_performance is available via modelsummary’s … ellipsis to limit the GOF statistics in Bayesian models.\nusers can omit the stars legend note by using glue strings: estimate=\"{estimate}{stars}\"\noutput=“html” can use gt by setting options(modelsummary_factory_html=\"gt\")\n\ndatasummary_correlation:\n\npasses ... forward\nnew function: datasummary_correlation_format\ndatasummary_correlation’s method argument accepts functions and “pearspear” (thanks to @joachim-gassen)\n\ndatasummary:\n\ndatasummary functions and rounding accept …, big.mark, etc.\n\ndatasummary_skim:\n\nnow works with haven_labeled numeric\nfaster tables with bayesian models.\n\nBug fixes and lints\n\n\n\n\nnew output format: latex_tabular\ntidy_custom allows partial term matches\nmodelsummary(coef_rename) accepts functions\nnew function coef_rename for use in modelsummary(coef_rename=coef_rename)\nmodelplot accepts add_rows to add reference categories\ninformative error message when estimate or statistic is not available\nbug fixes\n\n\n\n\n\nstatistic_override becomes vcov\nvcov accepts shortcuts: “robust”, “stata”, “HC0”, etc.\nvcov accepts formulas for clustered SEs: ~group\nmodelsummary_wide has a new “stacking” argument\nhtml horizontal rule to separate estimates form gof\ngof_map accepts list of lists. only needs 3 columns.\nsupport officedown Rmd\nestimate accepts a vector for per model estimates\noptions(modelsummary_default) can be markdown, html, latex\nbug: passing arguments through …\nbug: stars and rounding\n\n\n\n\n\nglue format for estimate and statistic\neasystats support for model info extraction\ndeprecate statistic_vertical\ndeprecate extract_models. Use modelsummary(output=“dataframe”) instead.\nmodelplot pushes … through to modelsummary(output=“dataframe”)\ndatasummary_skim(type=“dataset”)\ngof_map omits by default\ndatasummary_balance uses row percentages\nstatistic_override does not require a list\nstatistic_override accepts a single model\nN function for well formatted N in datasummary\nBug fixes\n\n\n\n\n\nnew function: modelsummary_wide\ncoef_omit and gof_omit use grepl(perl=TRUE)\nfmt accepts integer, string or function and respects options(OutDec=“,”)\nalign argument for modelsummary\nalign is more liberal to accept dcolumn alignment\nglance_custom methods for lfe and fixest\nbug fixes\n\n\n\n\n\nnew argument: coef_rename\nnew function: datasummary_df\npreserve term order in modelsummary\nrefactor datasummary_balance\ndatasummary_skim uses svg histograms instead of unicode\nremoved 5 dependencies\npass … to kableExtra::kbl for more customization\ntest improvements\ninternal code style\nbug fixes\n\n\n\n\n\nbug fixes\n\n\n\n\n\ndefault HTML output factory is now kableExtra\ninteraction “:” gsubbed by “0d7”\ndependencies: removed 1 depends, 3 imports, and 3 suggests\nword_document knitr works out-of-the-box\nbug fixes\n\n\n\n\n\nglance_custom.fixest ships with modelsummary\n\n\n\n\n\ndatasummary\ndatasummary_skim\ndatasummary_balance\ndatasummary_correlation\nmodelplot\nallow duplicate model names\nbug: can’t use coef_map with multiple statistics (thanks @sbw78)\nbug: wrong number of stars w/ statistic=‘p.value’ (thanks @torfason)\noutput=‘data.frame’. extract is no longer documented.\n\n\n\n\n\nadd_rows now accepts a data.frame with “position” and “section” columns\nadd_rows_location is deprecated\nbug in sanity_output prevented overwriting files\n\n\n\n\n\nhuxtable support\nflextable support\nestimate argument\nfixest tidiers\nwebsite and vignette improvements\ngof_map additions\nglance_custom\ntidy_custom\n\n\n\n\n\nOut-of-the-box Rmarkdown compilation to HTML, PDF, RTF\nkableExtra output format for LaTeX and Markdown\nSupport for threeparttable, colors, and many other LaTeX options\nDeprecated arguments: filename, subtitle\nDeprecated functions: clean_latex, knit_latex\npkgdown website and doc improvements\nmitools tidiers\nNew tests\n\n\n\n\n\nConvenience function to render markdown in row/column labels\nbug: breakage when all GOF were omitted\nClean up manual with @keywords internal\nbug: tidyr import\n\n\n\n\n\ngt is now available on CRAN\nnew latex_env argument for knit_latex and clean_latex\nbug when all gof omitted\nbug in statistic_override with functions\nbug caused by upstream changes in tab_style\nbug caused by upstream changes in filename=‘rtf’\nAllow multiple rows of uncertainty estimates per coefficient\nPreserve add_rows order\nDisplay uncertainty estimates next to the coefficient with statistic_vertical = FALSE\nBetter clean_latex function\nCan display R2 and confidence intervals for mice-imputed lm-models\nInternal functions have @keywords internal to avoid inclusion in docs\nStatistic override accepts pre-formatted character vectors\n\n\n\n\n\nInitial release (gt still needs to be installed from github)", "crumbs": [ "Get started", "News" @@ -957,7 +957,7 @@ "href": "NEWS.html#development", "title": "News", "section": "", - "text": "coef_rename() gets a poly=TRUE argument to rename poly(x, 2)-style coefficients. Thanks to @mccarthy-m-g for code contribution #778.\nget_gof(): logLik column converted to numeric for consistent types. Issue 649 reported on the mice Github.\nkableExtra update the siunitx commands for d columns.\nkableExtra escapes footnotes in HTML when output=\"kableExtra\"). Thanks to @dmurdoch and @michaelherndon97 for report #793.", + "text": "coef_rename() gets a poly=TRUE argument to rename poly(x, 2)-style coefficients. Thanks to @mccarthy-m-g for code contribution #778.\nget_gof(): logLik column converted to numeric for consistent types. Issue 649 reported on the mice Github.\nkableExtra update the siunitx commands for d columns.\nkableExtra escapes footnotes in HTML when output=\"kableExtra\"). Thanks to @dmurdoch and @michaelherndon97 for report #793.\nNew fmt_equivalence() function to implement the rounding suggestion of Astier & Wolak (2024). Thanks to Nicolas Astier for code prototype.", "crumbs": [ "Get started", "News" @@ -1562,7 +1562,7 @@ "href": "vignettes/datasummary.html#arguments-weighted-mean", "title": "Data Summaries", "section": "Arguments: Weighted Mean", - "text": "Arguments: Weighted Mean\nYou can use the Arguments mechanism to do various things, such as calculating weighted means:\n\nnewdata <- data.frame(\n x = rnorm(20),\n w = rnorm(20),\n y = rnorm(20))\n\ndatasummary(x + y ~ weighted.mean * Arguments(w = w),\n data = newdata)\n\n\n\n \n\n \n \n \n \n \n \n \n weighted.mean\n \n \n \n \n \n x\n 0.26 \n \n \n y\n -0.07\n \n \n \n \n\n\n\nWhich produces the same results as:\n\nweighted.mean(newdata$x, newdata$w)\n\n[1] 0.2630519\n\nweighted.mean(newdata$y, newdata$w)\n\n[1] -0.06582217\n\n\nBut different results from:\n\nmean(newdata$x)\n\n[1] 0.3153367\n\nmean(newdata$y)\n\n[1] 0.1202964", + "text": "Arguments: Weighted Mean\nYou can use the Arguments mechanism to do various things, such as calculating weighted means:\n\nnewdata <- data.frame(\n x = rnorm(20),\n w = rnorm(20),\n y = rnorm(20))\n\ndatasummary(x + y ~ weighted.mean * Arguments(w = w),\n data = newdata)\n\n\n\n \n\n \n \n \n \n \n \n \n weighted.mean\n \n \n \n \n \n x\n -0.36\n \n \n y\n -0.35\n \n \n \n \n\n\n\nWhich produces the same results as:\n\nweighted.mean(newdata$x, newdata$w)\n\n[1] -0.3615953\n\nweighted.mean(newdata$y, newdata$w)\n\n[1] -0.3474423\n\n\nBut different results from:\n\nmean(newdata$x)\n\n[1] -0.4066601\n\nmean(newdata$y)\n\n[1] -0.3368718", "crumbs": [ "Get started", "Data Summaries" @@ -1606,7 +1606,7 @@ "href": "vignettes/datasummary.html#add-columns", "title": "Data Summaries", "section": "Add columns", - "text": "Add columns\n\nnew_cols <- data.frame('New Stat' = runif(2))\ndatasummary(flipper_length_mm + body_mass_g ~ species * (Mean + SD),\n data = penguins,\n add_columns = new_cols)\n\n\n\n \n\n \n \n \n \n\n \nAdelie\nChinstrap\nGentoo\n \n\n \n \n \n Mean\n SD\n Mean\n SD\n Mean\n SD\n New.Stat\n \n \n \n \n \n flipper_length_mm\n 189.95 \n 6.54 \n 195.82 \n 7.13 \n 217.19 \n 6.48 \n 0.88\n \n \n body_mass_g \n 3700.66\n 458.57\n 3733.09\n 384.34\n 5076.02\n 504.12\n 0.42", + "text": "Add columns\n\nnew_cols <- data.frame('New Stat' = runif(2))\ndatasummary(flipper_length_mm + body_mass_g ~ species * (Mean + SD),\n data = penguins,\n add_columns = new_cols)\n\n\n\n \n\n \n \n \n \n\n \nAdelie\nChinstrap\nGentoo\n \n\n \n \n \n Mean\n SD\n Mean\n SD\n Mean\n SD\n New.Stat\n \n \n \n \n \n flipper_length_mm\n 189.95 \n 6.54 \n 195.82 \n 7.13 \n 217.19 \n 6.48 \n 0.65\n \n \n body_mass_g \n 3700.66\n 458.57\n 3733.09\n 384.34\n 5076.02\n 504.12\n 0.25", "crumbs": [ "Get started", "Data Summaries" diff --git a/vignettes/appearance.html b/vignettes/appearance.html index 652d6be99..b3000400a 100644 --- a/vignettes/appearance.html +++ b/vignettes/appearance.html @@ -2,7 +2,7 @@ - + @@ -477,12 +477,12 @@

    tinytable

    -
    +
    @@ -778,12 +778,12 @@

    tinytable

    -
    +
    @@ -855,13 +855,13 @@

    tinytable

    - + - +
    mpg 20.09 6.03
    hp 146.69 68.56
    @@ -888,12 +888,12 @@

    tinytable

    - +
    @@ -1211,23 +1211,23 @@

    gt

    tab_style(style = cell_fill(color = 'lightblue'), locations = cells_body(rows = 5))
    -
    - @@ -1767,23 +1767,23 @@

    gt

    tab %>% text_transform(locations = cells_body(columns = 2:6, rows = 1), fn = f)
    -
    - @@ -2338,23 +2338,23 @@

    Themes

    mod <- lm(mpg ~ hp + drat, mtcars) modelsummary(mod, output = "gt")
    -
    - @@ -2864,23 +2864,23 @@

    Themes

    datasummary_crosstab(island ~ sex * species, output = "gt", data = penguins)
    -
    - @@ -3472,8 +3472,8 @@

    Themes: Data Frame

    options("modelsummary_theme_dataframe" = theme_df) modelsummary(mod, output = "dataframe")
    -
    - +
    +

    Restore default theme:

    @@ -3497,12 +3497,12 @@

    Variable labels

    -
    +
    @@ -3654,12 +3654,12 @@

    Variable labels

    -
    +
    @@ -3763,7 +3763,7 @@

    Variable labels

    - + @@ -3774,7 +3774,7 @@

    Variable labels

    - + @@ -3785,7 +3785,7 @@

    Variable labels

    - +
    10.4 19.2 33.9
    Transmission 0.0 0.0 1.0
    drat 2.8 3.7 4.9
    diff --git a/vignettes/datasummary.html b/vignettes/datasummary.html index 6063a69b9..1e349e2cf 100644 --- a/vignettes/datasummary.html +++ b/vignettes/datasummary.html @@ -2,7 +2,7 @@ - + @@ -486,12 +486,12 @@

    datasummary_skim

    - +
    @@ -577,7 +577,7 @@

    datasummary_skim

    - + @@ -588,7 +588,7 @@

    datasummary_skim

    - + @@ -599,7 +599,7 @@

    datasummary_skim

    - + @@ -610,7 +610,7 @@

    datasummary_skim

    - + @@ -621,7 +621,7 @@

    datasummary_skim

    - + @@ -632,7 +632,7 @@

    datasummary_skim

    - + @@ -757,12 +757,12 @@

    datasummary_skim

    -
    1.0 172.5 344.0
    bill_length_mm 32.1 44.5 59.6
    bill_depth_mm 13.1 17.3 21.5
    flipper_length_mm 172.0 197.0 231.0
    body_mass_g 2700.0 4050.0 6300.0
    year 2007.0 2008.0 2009.0
    +
    @@ -961,12 +961,12 @@

    datasummary_balance

    -
    +
    @@ -1164,12 +1164,12 @@

    datasummary_correlation

    -
    +
    @@ -1557,12 +1557,12 @@

    datasummary_correlation

    -
    +
    @@ -1896,12 +1896,12 @@

    datasummary_crosstab

    -
    +
    @@ -2072,12 +2072,12 @@

    datasummary_crosstab

    -
    +
    @@ -2341,12 +2341,12 @@

    datasummary_crosstab

    -
    +
    @@ -2465,12 +2465,12 @@

    datasummary

    -
    +
    @@ -2546,12 +2546,12 @@

    datasummary

    -
    +
    @@ -2629,12 +2629,12 @@

    Custom summary fu
    -

    +
    @@ -2713,12 +2713,12 @@

    Custom summary fu
    -

    +
    @@ -2793,12 +2793,12 @@

    Custom summary fu
    -

    +
    @@ -2877,12 +2877,12 @@

    Concatenating with
    -

    +
    @@ -2970,12 +2970,12 @@

    Concatenating with
    -

    +
    @@ -3099,12 +3099,12 @@

    Nesting with *
    -

    +
    @@ -3192,12 +3192,12 @@

    Nesting with *
    -

    +
    @@ -3298,12 +3298,12 @@

    Nesting with *
    -

    +
    @@ -3417,12 +3417,12 @@

    Nesting with *
    -

    +
    @@ -3550,12 +3550,12 @@

    Nesting with *
    -

    +
    @@ -3683,12 +3683,12 @@

    Nesting with *
    -

    +
    @@ -3823,12 +3823,12 @@

    Renaming with =
    -

    +
    @@ -3917,12 +3917,12 @@

    Renaming with =
    -

    +
    @@ -4050,12 +4050,12 @@

    Renaming with =
    -

    +
    @@ -4183,12 +4183,12 @@

    Renaming with =
    -

    +
    @@ -4309,12 +4309,12 @@

    Renaming with =
    -

    +
    @@ -4446,12 +4446,12 @@

    Counts and Percenta
    -

    +
    @@ -4599,12 +4599,12 @@

    Weighted percentages<
    -

    +
    @@ -4750,12 +4750,12 @@

    Weighted percentages<
    -

    +
    @@ -4913,12 +4913,12 @@

    Custom percentages

    -
    +
    @@ -5009,12 +5009,12 @@

    Factor

    -
    +
    @@ -5130,12 +5130,12 @@

    Arguments
    -

    +
    @@ -5216,12 +5216,12 @@

    Arguments
    -

    +
    @@ -5301,12 +5301,12 @@

    Arguments
    -

    +
    @@ -5402,12 +5402,12 @@

    Arguments
    -

    +
    @@ -5469,11 +5469,11 @@

    Arguments

    - + - +
    x0.26 -0.36
    y-0.07-0.35
    @@ -5485,22 +5485,22 @@

    Arguments
    weighted.mean(newdata$x, newdata$w)
    -
    [1] 0.2630519
    +
    [1] -0.3615953
    weighted.mean(newdata$y, newdata$w)
    -
    [1] -0.06582217
    +
    [1] -0.3474423

    But different results from:

    mean(newdata$x)
    -
    [1] 0.3153367
    +
    [1] -0.4066601
    mean(newdata$y)
    -
    [1] 0.1202964
    +
    [1] -0.3368718
    @@ -5514,12 +5514,12 @@

    Logical subsets

    - +
    @@ -5617,12 +5617,12 @@

    Empty crosstab cells<
    -

    +
    @@ -5860,12 +5860,12 @@

    Empty crosstab cells<
    -

    +
    @@ -6052,12 +6052,12 @@

    Percent()

    -
    +
    @@ -6144,12 +6144,12 @@

    Percent()

    -
    +
    @@ -6248,12 +6248,12 @@

    Add rows

    -
    +
    @@ -6401,12 +6401,12 @@

    Add columns

    -
    +
    @@ -6516,7 +6516,7 @@

    Add columns

    - + @@ -6526,7 +6526,7 @@

    Add columns

    - +
    7.13 217.19 6.48 0.880.65
    body_mass_g 384.34 5076.02 504.120.420.25
    @@ -6579,12 +6579,12 @@

    Rounding

    - +
    @@ -6664,12 +6664,12 @@

    Rounding

    -
    +
    @@ -6750,12 +6750,12 @@

    Rounding

    -
    +
    @@ -6819,15 +6819,15 @@

    Rounding

    - + - + - +
    a333,252333,109
    b333,725333,680
    c333,023333,211
    @@ -6848,12 +6848,12 @@

    Titles and notes

    - +
    @@ -6980,12 +6980,12 @@

    Alignment

    -
    Statistics about the famous Palmer Penguins.
    +
    @@ -7089,12 +7089,12 @@

    Factors

    -
    +
    @@ -7262,12 +7262,12 @@

    Factors

    -
    +
    diff --git a/vignettes/get_started.html b/vignettes/get_started.html index d10cd5b50..d937ec5fc 100644 --- a/vignettes/get_started.html +++ b/vignettes/get_started.html @@ -2,7 +2,7 @@ - + @@ -435,12 +435,12 @@

    Data Summaries

    -
    +
    @@ -526,7 +526,7 @@

    Data Summaries

    - + @@ -537,7 +537,7 @@

    Data Summaries

    - + @@ -548,7 +548,7 @@

    Data Summaries

    - + @@ -559,7 +559,7 @@

    Data Summaries

    - + @@ -570,7 +570,7 @@

    Data Summaries

    - + @@ -581,7 +581,7 @@

    Data Summaries

    - + @@ -629,12 +629,12 @@

    Data Summaries

    -
    1246.0 5020.0 37015.0
    Literacy 12.0 38.0 74.0
    Commerce 1.0 42.5 86.0
    Crime_pers 2199.0 18748.5 37014.0
    Crime_prop 1368.0 7595.0 20235.0
    Clergy 1.0 43.5 86.0
    Small
    +
    @@ -826,12 +826,12 @@

    Data Summaries

    -
    +
    @@ -1006,12 +1006,12 @@

    Data Summaries

    -
    +
    @@ -1128,12 +1128,12 @@

    Model Summaries

    -
    +
    @@ -1287,12 +1287,12 @@

    Model Summaries

    -
    +
    diff --git a/vignettes/modelplot.html b/vignettes/modelplot.html index 74f987e0e..d902eb670 100644 --- a/vignettes/modelplot.html +++ b/vignettes/modelplot.html @@ -2,7 +2,7 @@ - + @@ -520,12 +520,12 @@

    Several models

    -
    +
    diff --git a/vignettes/modelsummary.html b/vignettes/modelsummary.html index c0126bea0..50d0ee14b 100644 --- a/vignettes/modelsummary.html +++ b/vignettes/modelsummary.html @@ -2,7 +2,7 @@ - + @@ -495,12 +495,12 @@

    Model Summaries

    -
    +
    @@ -814,12 +814,12 @@

    fmt

    -
    +
    @@ -928,12 +928,12 @@

    estimate

    -
    +
    @@ -1123,12 +1123,12 @@

    estimate

    -
    +
    @@ -1266,12 +1266,12 @@

    estimate

    -
    +
    @@ -1468,12 +1468,12 @@

    statistic

    -
    +
    @@ -1709,12 +1709,12 @@

    statistic

    -
    +
    @@ -1953,12 +1953,12 @@

    statistic

    -
    +
    @@ -2233,12 +2233,12 @@

    statistic

    -
    +
    @@ -2391,12 +2391,12 @@

    stars

    -
    +
    @@ -2553,12 +2553,12 @@

    coef_omit

    -
    +
    @@ -2671,12 +2671,12 @@

    coef_omit

    -
    +
    @@ -2789,12 +2789,12 @@

    coef_omit

    -
    +
    @@ -2907,12 +2907,12 @@

    coef_omit

    -
    +
    @@ -3005,12 +3005,12 @@

    coef_omit

    -
    +
    @@ -3123,12 +3123,12 @@

    coef_omit

    -
    +
    @@ -3268,12 +3268,12 @@

    coef_rename

    -
    +
    @@ -3448,12 +3448,12 @@

    coef_rename

    -
    +
    @@ -3680,12 +3680,12 @@

    coef_rename

    -
    +
    @@ -3876,12 +3876,12 @@

    coef_rename

    -
    +
    @@ -4054,12 +4054,12 @@

    coef_map

    -
    +
    @@ -4283,12 +4283,12 @@

    gof_map

    -
    +
    @@ -4490,12 +4490,12 @@

    gof_map

    -
    +
    @@ -4640,12 +4640,12 @@

    gof_function

    -
    +
    @@ -4861,12 +4861,12 @@

    gof_function

    -
    +
    @@ -5058,12 +5058,12 @@

    Formula

    -
    +
    @@ -5185,12 +5185,12 @@

    Formula

    -
    +
    @@ -5334,12 +5334,12 @@

    Formula

    -
    +
    @@ -5509,12 +5509,12 @@

    Formula

    -
    +
    @@ -5691,12 +5691,12 @@

    Formula

    -
    +
    @@ -5864,12 +5864,12 @@

    Formula

    -
    +
    @@ -6032,12 +6032,12 @@

    -

    +
    @@ -6246,12 +6246,12 @@

    -

    +
    @@ -6449,12 +6449,12 @@

    -

    +
    @@ -6696,12 +6696,12 @@

    Renaming
    -

    +
    @@ -6889,12 +6889,12 @@

    fixest

    -
    +
    @@ -7092,12 +7092,12 @@

    fixest

    -
    +
    @@ -7344,12 +7344,12 @@

    add_rows

    -
    +
    @@ -7554,12 +7554,12 @@

    exponentiate

    -
    +
    @@ -7691,12 +7691,12 @@

    exponentiate

    -
    +
    @@ -7869,12 +7869,12 @@

    Reference categories<
    -

    +
    @@ -8073,12 +8073,12 @@

    Math

    -
    +
    @@ -8296,12 +8296,12 @@

    Quarto

    <!-- preamble start --> <script> - function styleCell_ccqpj7jtjjtw6q3mf0kg(i, j, css_id) { - var table = document.getElementById("tinytable_ccqpj7jtjjtw6q3mf0kg"); + function styleCell_bceeh0xhoo6wn7qpcayo(i, j, css_id) { + var table = document.getElementById("tinytable_bceeh0xhoo6wn7qpcayo"); table.rows[i].cells[j].classList.add(css_id); } function insertSpanRow(i, colspan, content) { - var table = document.getElementById('tinytable_ccqpj7jtjjtw6q3mf0kg'); + var table = document.getElementById('tinytable_bceeh0xhoo6wn7qpcayo'); var newRow = table.insertRow(i); var newCell = newRow.insertCell(0); newCell.setAttribute("colspan", colspan); @@ -8309,8 +8309,8 @@

    Quarto

    // this may be unsafe, but innerText does not interpret <br> newCell.innerHTML = content; } - function spanCell_ccqpj7jtjjtw6q3mf0kg(i, j, rowspan, colspan) { - var table = document.getElementById("tinytable_ccqpj7jtjjtw6q3mf0kg"); + function spanCell_bceeh0xhoo6wn7qpcayo(i, j, rowspan, colspan) { + var table = document.getElementById("tinytable_bceeh0xhoo6wn7qpcayo"); const targetRow = table.rows[i]; const targetCell = targetRow.cells[j]; for (let r = 0; r < rowspan; r++) { @@ -8336,44 +8336,44 @@

    Quarto

    targetCell.rowSpan = rowspan; targetCell.colSpan = colspan; } -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(0, 0, 'tinytable_css_idbk2lr698dma833mbtjlr') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(0, 1, 'tinytable_css_ide2hb7eqvjmp0gl8jf2b8') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(1, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(1, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(2, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(2, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(3, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(3, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(4, 0, 'tinytable_css_idyn2fjkpeq5clphfoeuek') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(4, 1, 'tinytable_css_idohgr84d42w5t4nnbacnh') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(5, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(5, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(6, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(6, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(7, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(7, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(8, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(8, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(9, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(9, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(10, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(10, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(11, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(11, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(12, 0, 'tinytable_css_idtxmaqgb6affpa171oq29') }) -window.addEventListener('load', function () { styleCell_ccqpj7jtjjtw6q3mf0kg(12, 1, 'tinytable_css_idjlr0be5wtojhiv7hdq7v') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(0, 0, 'tinytable_css_idm4pjcu55h75dnod0m69r') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(0, 1, 'tinytable_css_idb3trqmovcxe7vbruc98m') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(1, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(1, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(2, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(2, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(3, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(3, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(4, 0, 'tinytable_css_idy84xnhg5uv8mnadb39uc') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(4, 1, 'tinytable_css_idzh2i9ipitnyvizvphgbg') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(5, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(5, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(6, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(6, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(7, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(7, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(8, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(8, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(9, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(9, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(10, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(10, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(11, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(11, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(12, 0, 'tinytable_css_idvzhdpbkmne7e9hzcdvbw') }) +window.addEventListener('load', function () { styleCell_bceeh0xhoo6wn7qpcayo(12, 1, 'tinytable_css_idcbiclc5aej35vhz6aj2p') }) </script> <style> - .table td.tinytable_css_idbk2lr698dma833mbtjlr, .table th.tinytable_css_idbk2lr698dma833mbtjlr { text-align: left; border-bottom: solid 0.1em #d3d8dc; } - .table td.tinytable_css_ide2hb7eqvjmp0gl8jf2b8, .table th.tinytable_css_ide2hb7eqvjmp0gl8jf2b8 { text-align: center; border-bottom: solid 0.1em #d3d8dc; } - .table td.tinytable_css_idtxmaqgb6affpa171oq29, .table th.tinytable_css_idtxmaqgb6affpa171oq29 { text-align: left; } - .table td.tinytable_css_idjlr0be5wtojhiv7hdq7v, .table th.tinytable_css_idjlr0be5wtojhiv7hdq7v { text-align: center; } - .table td.tinytable_css_idyn2fjkpeq5clphfoeuek, .table th.tinytable_css_idyn2fjkpeq5clphfoeuek { border-bottom: solid 0.05em black; text-align: left; } - .table td.tinytable_css_idohgr84d42w5t4nnbacnh, .table th.tinytable_css_idohgr84d42w5t4nnbacnh { border-bottom: solid 0.05em black; text-align: center; } + .table td.tinytable_css_idm4pjcu55h75dnod0m69r, .table th.tinytable_css_idm4pjcu55h75dnod0m69r { text-align: left; border-bottom: solid 0.1em #d3d8dc; } + .table td.tinytable_css_idb3trqmovcxe7vbruc98m, .table th.tinytable_css_idb3trqmovcxe7vbruc98m { text-align: center; border-bottom: solid 0.1em #d3d8dc; } + .table td.tinytable_css_idvzhdpbkmne7e9hzcdvbw, .table th.tinytable_css_idvzhdpbkmne7e9hzcdvbw { text-align: left; } + .table td.tinytable_css_idcbiclc5aej35vhz6aj2p, .table th.tinytable_css_idcbiclc5aej35vhz6aj2p { text-align: center; } + .table td.tinytable_css_idy84xnhg5uv8mnadb39uc, .table th.tinytable_css_idy84xnhg5uv8mnadb39uc { border-bottom: solid 0.05em black; text-align: left; } + .table td.tinytable_css_idzh2i9ipitnyvizvphgbg, .table th.tinytable_css_idzh2i9ipitnyvizvphgbg { border-bottom: solid 0.05em black; text-align: center; } </style> <div class="container"> - <table class="table table-borderless" id="tinytable_ccqpj7jtjjtw6q3mf0kg" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing='true'> + <table class="table table-borderless" id="tinytable_bceeh0xhoo6wn7qpcayo" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing='true'> <thead> <tr> @@ -8545,12 +8545,12 @@

    -

    Another math expression: $\sum_{i=1}^n x^-i$
    +
    @@ -8772,12 +8772,12 @@

    Subgroup
    -

    +
    @@ -8991,12 +8991,12 @@

    Bootstrap

    -
    +
    @@ -9100,33 +9100,33 @@

    Bootstrap

    - - + + - - + + - - + + - - + + - + - + @@ -9205,12 +9205,12 @@

    -

    (Intercept)329.629 281.754 327.338 282.369
    (31.734)(44.405)(30.525)(42.589)
    mpg -9.141 -10.030 -9.014 -10.392
    (1.517) (2.397) (1.373) (2.320)
    drat 18.194 20.169
    (21.243)(20.388)
    Num.Obs.
    +
    @@ -9306,75 +9306,75 @@

    Multiple imputation
    -

    +
    @@ -9553,43 +9553,43 @@

    Multiple imputation

    - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + @@ -9601,37 +9601,37 @@

    Multiple imputation

    - - - + + + - - - + + + - + - + - + - + @@ -9732,7 +9732,7 @@

    How can I x <- broom::glance(mod) toc()
    -
    glance: 0.003 sec elapsed
    +
    glance: 0.004 sec elapsed
    tic("parameters")
     x <- parameters::parameters(mod)
    @@ -9744,7 +9744,7 @@ 

    How can I x <- performance::performance(mod) toc()

    -
    performance: 0.012 sec elapsed
    +
    performance: 0.011 sec elapsed

    In my experience, the main bottleneck tends to be computing goodness-of-fit statistics. The performance extractor allows users to specify a metrics argument to select a subset of GOF to include. Using this can speedup things considerably.

    @@ -9755,12 +9755,12 @@

    How can I
    -

    (Intercept)82.087 81.052 83.319 68.918 69.861 65.918
    (14.094)(16.423)(15.538)(13.811)(18.536)(14.547)
    Literacy -0.517 -0.523 -0.583 -0.393 -0.458 -0.417
    (0.222) (0.278) (0.227) (0.215) (0.264) (0.238)
    Commerce -0.332 -0.379 -0.375 -0.281 -0.197 -0.148
    (0.153) (0.164) (0.171) (0.229) (0.158)
    Num.Obs. 58 60 86 86
    R2 0.101 0.106 0.112 0.066 0.084 0.070
    R2 Adj. 0.068 0.083 0.089 0.033
    AIC 528.2 552.8
    BIC 536.5 561.2
    Log.Lik. -260.116-272.407
    RMSE 21.45 22.67
    +
    @@ -9945,10 +9945,10 @@

    Bayesian models

    get_estimates(mod)
    -
             term      estimate         mad conf.level     conf.low    conf.high prior.distribution prior.location prior.scale group std.error statistic p.value
    -1 (Intercept) -2.2049112128 0.594295260       0.95 -3.409440861 -1.032307800             normal        0.40625  1.24747729              NA        NA      NA
    -2          hp  0.0006352259 0.001085577       0.95 -0.001482977  0.002797352             normal        0.00000  0.01819465              NA        NA      NA
    -3        drat  0.7023874378 0.139034208       0.95  0.428481368  0.980565905             normal        0.00000  2.33313429              NA        NA      NA
    +
             term      estimate         mad conf.level     conf.low   conf.high prior.distribution prior.location prior.scale group std.error statistic p.value
    +1 (Intercept) -2.2194387470 0.606706338       0.95 -3.373391646 -0.96106383             normal        0.40625  1.24747729              NA        NA      NA
    +2          hp  0.0006492794 0.001046733       0.95 -0.001535328  0.00290699             normal        0.00000  0.01819465              NA        NA      NA
    +3        drat  0.7039353605 0.141406704       0.95  0.403107499  0.97644701             normal        0.00000  2.33313429              NA        NA      NA

    This shows that there is no std.error column, but that there is a mad statistic (mean absolute deviation). So we can do:

    @@ -9969,12 +9969,12 @@

    Bayesian models

    -
    +
    @@ -10066,11 +10066,11 @@

    Bayesian models

    - + - + @@ -10082,11 +10082,11 @@

    Bayesian models

    - + - + @@ -10098,11 +10098,11 @@

    Bayesian models

    - + - + @@ -10114,11 +10114,11 @@

    Bayesian models

    - + - + @@ -10138,22 +10138,22 @@

    Bayesian models

    get_estimates(mod, centrality = "mean")
    -
             term      estimate     std.dev conf.level     conf.low    conf.high prior.distribution prior.location prior.scale group std.error statistic p.value
    -1 (Intercept) -2.2138487931 0.604083327       0.95 -3.409440861 -1.032307800             normal        0.40625  1.24747729              NA        NA      NA
    -2          hp  0.0006618756 0.001085012       0.95 -0.001482977  0.002797352             normal        0.00000  0.01819465              NA        NA      NA
    -3        drat  0.7015893972 0.141437594       0.95  0.428481368  0.980565905             normal        0.00000  2.33313429              NA        NA      NA
    +
             term      estimate     std.dev conf.level     conf.low   conf.high prior.distribution prior.location prior.scale group std.error statistic p.value
    +1 (Intercept) -2.2141627146 0.620093539       0.95 -3.373391646 -0.96106383             normal        0.40625  1.24747729              NA        NA      NA
    +2          hp  0.0006814916 0.001110768       0.95 -0.001535328  0.00290699             normal        0.00000  0.01819465              NA        NA      NA
    +3        drat  0.7005048046 0.144590665       0.95  0.403107499  0.97644701             normal        0.00000  2.33313429              NA        NA      NA
    modelsummary(mod, statistic = "std.dev", centrality = "mean")
    -
    (Intercept)-2.205 -2.219
    (0.594)(0.607)
    hp
    drat 0.702 0.704
    (0.139)(0.141)
    Num.Obs.
    R2 Adj. 0.430 0.432
    Log.Lik. -12.114-12.126
    ELPD
    LOOIC 30.5 30.3
    LOOIC s.e. 6.3 6.2
    WAIC
    +
    @@ -10249,7 +10249,7 @@

    Bayesian models

    - + @@ -10261,11 +10261,11 @@

    Bayesian models

    - + - + @@ -10277,11 +10277,11 @@

    Bayesian models

    - + - + @@ -10293,11 +10293,11 @@

    Bayesian models

    - + - + @@ -10317,10 +10317,10 @@

    Bayesian models

    get_estimates(mod, test = c("pd", "rope"))
    -
             term      estimate         mad conf.level     conf.low    conf.high      pd rope.percentage prior.distribution prior.location prior.scale group std.error statistic p.value
    -1 (Intercept) -2.2049112128 0.594295260       0.95 -3.409440861 -1.032307800 0.99925               0             normal        0.40625  1.24747729              NA        NA      NA
    -2          hp  0.0006352259 0.001085577       0.95 -0.001482977  0.002797352 0.73100               1             normal        0.00000  0.01819465              NA        NA      NA
    -3        drat  0.7023874378 0.139034208       0.95  0.428481368  0.980565905 0.99975               0             normal        0.00000  2.33313429              NA        NA      NA
    +
             term      estimate         mad conf.level     conf.low   conf.high      pd rope.percentage prior.distribution prior.location prior.scale group std.error statistic p.value
    +1 (Intercept) -2.2194387470 0.606706338       0.95 -3.373391646 -0.96106383 0.99925               0             normal        0.40625  1.24747729              NA        NA      NA
    +2          hp  0.0006492794 0.001046733       0.95 -0.001535328  0.00290699 0.74025               1             normal        0.00000  0.01819465              NA        NA      NA
    +3        drat  0.7039353605 0.141406704       0.95  0.403107499  0.97644701 1.00000               0             normal        0.00000  2.33313429              NA        NA      NA
    @@ -10349,12 +10349,12 @@

    Factor labels

    -
    (0.604)(0.620)
    hp
    drat 0.702 0.701
    (0.141)(0.145)
    Num.Obs.
    R2 Adj. 0.430 0.432
    Log.Lik. -12.114-12.126
    ELPD
    LOOIC 30.5 30.3
    LOOIC s.e. 6.3 6.2
    WAIC
    +
    @@ -10488,12 +10488,12 @@

    Factor labels

    -
    +
    @@ -10626,12 +10626,12 @@

    Footnotes in col
    -

    +
    diff --git a/vignettes/modelsummary_extension.html b/vignettes/modelsummary_extension.html index 57435da1d..00db8a39a 100644 --- a/vignettes/modelsummary_extension.html +++ b/vignettes/modelsummary_extension.html @@ -2,7 +2,7 @@ - + @@ -446,12 +446,12 @@

    Unsupported models: modelsummary_list

    -
    +
    @@ -645,12 +645,12 @@

    Modifying information: tidy_custom and glance_custom
    -

    +
    @@ -832,12 +832,12 @@

    New information: tidy_custom and glance_custom

    -
    +
    @@ -1073,12 +1073,12 @@

    Customization: New model class

    -
    +
    @@ -1233,12 +1233,12 @@

    Customization: modelsummary_list

    -
    +
    diff --git a/vignettes/tinytable_assets/id0atob3njs7c9v72zb8nv.png b/vignettes/tinytable_assets/id0atob3njs7c9v72zb8nv.png new file mode 100644 index 0000000000000000000000000000000000000000..0deeb5196c15155045ccc9e85f28165a2ae5f996 GIT binary patch literal 2207 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fY7FoRaRt(nl9Fm_YDPvz zrlzJgHa51lwhj&sp`oEsQBg55F$oC?X=!O$Sy{EUwH+NDGiT16J9qB9dGqGapTBI` zvK1>exli|2+^J@ny8O}WtEOkH^kq8u>0Tj{i&}j`>w5{ z{H3;K--HX_1%Ej?-FJV%%~>nIP+x^6f=Ak~v;SMaJ73_Jmy^E?$KUzo_Z7ZOZJ8(V z%g|}Q>X()a{er)A7OJ<@^;}5jv{n3)++yebf^(s~@|VcjPXDj^um5%MYhyg$-^r)L z|NQtRdY!ZO+OiAp?|u6p%lG$sd3-?|P+RSc3->u{r(J00{M(C{d)EJ7&DHyUIZ3<= z`GtRJ%FnrRM9N8C?Mtwo&BjjC7CWC8%Q=8 z!$ygb6$W1q-;eqFd*(;`rVBT-)Bf};lzf{d`Cpl1?%uRx|2dq}*AJM~ueYK5e`hV5 z|GI_m{#|k7zcK11Ki;+cvs?Ii5+)g^{bjw~{#TcG?-%%Cwd64=sU@O1TaS?83{1OVZl6?*^x literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id41xo6tisjd2t69f034ny.png b/vignettes/tinytable_assets/id41xo6tisjd2t69f034ny.png new file mode 100644 index 0000000000000000000000000000000000000000..73baabf5efdbae0185fb425e2526b4c954993902 GIT binary patch literal 1656 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fat-haaRt(%qN3K;)(#F1 zE-o&SigS#o;`aG9z1yC#*KUT?mc<(+zkc>)_0yRjv*Cu-d>KL6q+i~a`D@`3te4b{L8A^2;{Ub7aC+FNnbPAzu1>v+Ca}=|cD8fJh2=n{E-x;ByCtCXC3B=H|MKph{Ox*)do6O`Pk)ndGhcX|b1t_N zzp#~fi=0}C9*3>Zix`2b85edcd@)#9?D!(l>3P$I!!74n7q*Wo9D%`eZu759>v{Tr zr|$Ut-91jNWZqT&c=5OUKPnbJ{|)9(y}-Wk^O_brj=AZoUmRc9XfNb3-I?EkK}@Uh}ScFY@g7A`dn-~!bs N44$rjF6*2UngAUkmbL%@ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id44mb9paqxhg36affgn68.png b/vignettes/tinytable_assets/id44mb9paqxhg36affgn68.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a59f3d7ea102b476057aace39a4927ead8c874 GIT binary patch literal 1150 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fQVH-0aRt&VR;*aLa^?E< z>o;uJaR2`OckkZ4fB*i&hYz1WfBy32%m4rX`=|6hVPIep^>lFzshIQj3U}Ti2Ofum zQ~aYI{QLfvalxfkw=^c07cx&QdICbMNlw{!p zrFZY%STAT*v#tBW!ykT5?T>{KP9)hhZ2lZI1T*eO!(=drNkiqr`QPJMf1FN@deJXh p;cxHE+26`nV}d;&L*nv*_?ouTvn=zwbb$p4gQu&X%Q~loCICn{UZem3 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id47ivcp3c5xx8y9ktwesq.png b/vignettes/tinytable_assets/id47ivcp3c5xx8y9ktwesq.png new file mode 100644 index 0000000000000000000000000000000000000000..1e7a9f616ee89c03bb9130a89453216cf63eb6d9 GIT binary patch literal 1728 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f3J>rJaRt(WXNX4ADm)+MzgbO%3 zT0WO~vgLp2tq&)JnUkCk3EQs@E68ttel`9;_xD#X*%{u?yO7v`13CD=sNYj}Z@#}g zV_ufi|HoHv|Uc^yJx-Rl6{x8OuJ;q>X9Y* z-u=aVyZ4Lz=hYpwudAuzYiT)mFx>xqhZ~s^H!T&!Wt~vdGZTg|^*WX^Dy3H3Fvz*!)@t}I< Y#YdYbcg-x41Xe{1p00i_>zopr0FUvi5C8xG literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id805mlwfyljx28jyh8n8i.png b/vignettes/tinytable_assets/id805mlwfyljx28jyh8n8i.png new file mode 100644 index 0000000000000000000000000000000000000000..8648ddbfd4143e28e1e233dbb3663e263986fbd1 GIT binary patch literal 2316 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fY7FoRaRt%}3JOX}N}8IQ z`uh6z_Vx}A4$jWbE-o%%VPP>bG4b*7Wo2dM<>eI>6?JuW_4W0AeSQ7?{gWn5nm&E{ z%$YNnELpN*#fnv{R;^#Ze#3?h+qP{xbLPy23m5L*z5C$7gGY}ZJ$drv>C>mLU%!6$ z?%jtEA3lHn{Qdj)pFe;8`}gnv|Nml*e;zR~aJYH8IEGZrd3*QnCRJC#hKm;i>qJ;Z zj|Q@Y2t4^KKOtMW>bgK~YI@q!DE$qaH-Fk~Q+V$Whs=B5ZwwAL3lB3mwKKNxF>}bW z30Uzclt?(dFle}t$N-dRcK-kHw(h>u|M)8QA6)qV*;%>z^Zx`Y)*oD0zen>+`AvDI z_o^iejTg~hH=<_u%!|4*m=m;L`R{pRlz%3lu8k^H45pZ;FCALywstPA~B zzEps+LA&6urVHvqRW`tc|K%`8t>X(}PTP6FT=6ThWuL;A&K5a;U@G`)Fx%<>uhY79 zv-kG>R|Sgh`|$eBdk#e~%kf)zi@+}zr+APapd0i#YL$QlFxc#SE{M0-O#~7^VR^R~ z+)nd7fCNw&?1t^1+VAInH2eL=31siul=)XyLYCyMcpH!>2 zlyg)GEy9KU&CQRCqt2blcB(%xPu70b(=&V2zEEHA+qd)4d(QsryR?aW$HJ#)CTQ($ zkd8XXvvP28U#-^NS7$Oyy*_91oAfr_e_vBf`2StgyZN3uy5=*2%~7lSyEcJ);ri75 z{5gtWw!Zn^sN1q{+F!d3trxCuy3f8%;8)bQ-v`8;;!oGf-*9@74Ke_?rlTtt{{Jo? zpEnU`0Elf|y)oeA%7yil_eQL6f!BUGt3~=rOyT}}zy9u{&u@-8sXlf3uT-sEpnzIo ze<=Rz`=VfVh*rC!dE(O{6I#HqEJeQDuMf(5O@eFTI+A;9-Rz0}?-&pNRcd~JH(Yt{9p<**HwAx{zgs=g z4=5~X6?DQj!NSR%YbQI8`wI`n?+p(*WHq128OSVDZUrh;D+Po>c9iDsR2Y*r4U#)`w^MKc8RY{f=>J zOj zX5L}eQv8z4an}c^UEr5tOP<>I1}~1k5>DomfmXEC@hqG@(8erl`SUvfSh}eYau(>kI{-?wE|VzEpjJ7!I0m2ff?-SwE|TN zATRC}9W`V$Oa@yz(f+^Z$?q$FO+HQorRW2v%-^Lq-4+C;*s0}krl`|#XHc?EXua@J z0F>Y(6iaMeKv^M-LzW+`deAHRa`AVK{jS}S6RQt!Eqv_s{?6SsU=I~4I^B1Du|r_t zd!>??jtk|2R(dWkc5}#zD}9M=>EjmsrRQ|Km7`W1sHbIL_l3c({L9VXCHMdRnl-Ov z$Myfc7aGHVJ~Xv`S+M@U^g`zKPA?8HwD9pb;G*&+etGX(e`h}bj>ETG{~fI5YM8p6 z`!D-$e literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/iddnm5vbrry77uvo9tz56m.png b/vignettes/tinytable_assets/iddnm5vbrry77uvo9tz56m.png new file mode 100644 index 0000000000000000000000000000000000000000..938c99a0d0b51ebf916807d41c31d8f5b4d16d53 GIT binary patch literal 2075 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fDhlukaRt(1Vq)Ur;+B?{ zR#sLH4h}9ZEdl)sZ{NOs_wL_g}w$ z{r>&?KM;JAyU4)6p5p1^7*a9k?cGE%X?MZaKz1c2zJnH=2M=Aaw+FiKD(3{D0+{Xc#C z`0vW^z8?>@*j0MHIRD}ByV;LgIct?lxHyO;N?QMYJp8zJul0jy&be!}zuaA$t6E~T z@VbE2%nR8ZbA4Wzw)m-ik#bTOuHs!dnR9R3g_A9D&M#7&)+>%G8x0UTrjU={fo046 zyZWb^Ip(&$FWaxduT&!TZ`W_vN`Zx&6~2f$r8~aRZ8_I;A(~?@>%#2Zv&kJjgxy_ul z>nrxigAAzo+>-n2DQD)NUoFM|zO>}m{rEdAGmq=<-*G>6NS2&b{#P zXv{mWUsekbckjG2^-HN!yLj6^0-K z-nA^O-(M{f@#_^Zm9>NH``zC9@2T+fFYoWN-*|ETF8hv)&u0t0`xVSxFcr1d!%`uB auy2Z8*z>1uF9)!eXYh3Ob6Mw<&;$UN0@4)# literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idee2g5lc5hnr6wqyq16oc.png b/vignettes/tinytable_assets/idee2g5lc5hnr6wqyq16oc.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb35cb5416f169de1aa3b0cbcb0c4dbe86dcf71 GIT binary patch literal 1295 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fatiPXaRt)W*47RV4mmkF zMMXtjU0stWPhPQN#mbc{*RNl{VZ(-v8#nIRv*+#Gx9{G)d;k9ZhYuea~&Dm)SRsEngL$;EzZPeBr-2{*6{I z=ijn#K7CaZpO~i!{yNIB*Y5?V(|X~mrVFoI<|%x!TBuGZAw;0z2+Lt7%>4Y5UP;9M z^o56iaYEC}u=69S@c)I$ztaD0e0sx_9xTgRB literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idescu99f2oe9681zeip36.png b/vignettes/tinytable_assets/idescu99f2oe9681zeip36.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b581202a685d9adbcebf655a19e6c6636b0358 GIT binary patch literal 12855 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idh8ggc2zyo264pjkx5agm.png b/vignettes/tinytable_assets/idh8ggc2zyo264pjkx5agm.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1fb5257adafb30fa3b4d3885c6b79a24f16e8b GIT binary patch literal 2024 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fN(=A_aRt(o;uJ zaPs8IGiT0RzI^%S&6|%OKYsc0<=eM!-@SYH{{8z8A3l8j`t{eZU;qFAf3d~l0RscO zt*47)NX4ADcQZHLIL6x=c(hZdf74u-Pc|9% znn0Ds zwfWDVg-7hWYa`oVEV?byf2Rp&;k(k8{dbEy?28JN3d!#V=t_%iAtQbIz553WkQh$Wg}-#j12v z5EORj>#D*Z<$nL3&be^@-wS^eAEwVdpQt-=L=&AhO)>%#e#bD=GD zY9;HGz8Eho7F{@>bM9)6VXXA&=5p10>DPaAw(xoGJHPI`Fo*0UjCulR1%e^*Kz@Gs zkMHaY5C8qAT(Sdy?Sr8iRxP1Qd?;G@e|t68hw^{llNQ$h>Gl6seb#XQHJRWoZT{cg mH6BL1IFNy(euEkGM}DKRTgKWK8EwESo59o7&t;ucLK6Tnns>+m literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idiec1csumik1oagz8dvtw.png b/vignettes/tinytable_assets/idiec1csumik1oagz8dvtw.png new file mode 100644 index 0000000000000000000000000000000000000000..98112fa9caa967494486e8f84cbc20994b07e9a1 GIT binary patch literal 1433 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fvJCJEaRt)y^749mdM++5 zp`oGa>FF668F_hmixw?fv0}x_l`Ge;U%z3)hI8l6y?OKI-Me=mK79D|=g*Q@sN+sUs<)cA5bGxWUseg0_%BEMe0 zi7T(R`c=1q1*{B*?hz_HdwP3lZO||+;xFdU=)vr!Dt#FFAeGtpO+_k$u9k)y8-!T2)|6A7s4ka&S_7+Aj$B;{+ aI))zU)mc&OYx;p@EQ6=3pUXO@geCxUuqCDd literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idlynmca5kv2gs8m9fijc2.png b/vignettes/tinytable_assets/idlynmca5kv2gs8m9fijc2.png new file mode 100644 index 0000000000000000000000000000000000000000..1560aef70c580ff6d4cf7310650122249796eec4 GIT binary patch literal 2344 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fvJCJEaRt)F#l=lcO&uK_ zGiT0Rv0}x_l`Ge;U%z3)h8s6-+`D)0;lqbdo;-Q_^y#~I?>>C^@a4;wZ{NQC|Nme1 z`KDtG3>>RGT^vIy=DfWexh}$-$Hg(d&-nS<`i+c#&N4J5tXAEW#rl0ysa-9@+gh)B zh7WH!W!VI*coa$`99|eSTu5YCc$mSdow0?FnFA>CYwo|FuLJ)t(|7lLQU2@8nlDc^ zZa(#U8S{OqzWYhNa%60}@U9Ww4I&jnJxtDgn^N#PE6#H(Al??fA@TOHl^yl(wEO*sqPEsz4QH6e%Eud*B@0d8V=M<59v4MUta&^%PG6> z$DF#g_orNV$h~mC_X{22U%Ok*8I5da{hx1#7w_}7m%FFz8KB@2xkF0`Iw za1ys-=7@a(th7c2NDGe-fBXA?1;4m(|GZQCKWH6~v+^faB3}PX{H6U&f9A*Uk9r|r r&shGeTJz!73ysV1HZ81pKFF&car|Y?yNnyybP0l+XkKI}O&n literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idn63ofeh36s18d9vanqg1.png b/vignettes/tinytable_assets/idn63ofeh36s18d9vanqg1.png new file mode 100644 index 0000000000000000000000000000000000000000..45b78f7512e31c909a289cff641826e465ae0103 GIT binary patch literal 1250 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 I&MBb@0Dh%>hyVZp literal 0 HcmV?d00001