easystats / easystats/parameters
`pretty_names = TRUE` do not fully work for "repeated rows"
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 499
- Forks
- 45
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 3
Description
In the table outputs of the next reprex, we should see Indirect Effect (ACME) in each file where ACME appears and the same for Direct Effect (ADE) with ADE, however, for each table they only appear in the first ACME/ADE rows. In particular I added the line attr(m, "pretty_names") <- c(attr(m20, "pretty_names"), attr(m70, "pretty_names")) to be sure the pretty_names are for all the involved rows.
library(mediation)
#> Loading required package: MASS
#> Loading required package: Matrix
#> Loading required package: mvtnorm
#> Loading required package: sandwich
#> mediation: Causal Mediation Analysis
#> Version: 4.5.0
library(parameters)
data(jobs)
# Allowing ``moderated mediation'' with respect to age
b.int <- lm(job_seek ~ treat*age + econ_hard + sex, data=jobs)
d.int <- lm(depress2 ~ treat*job_seek*age + econ_hard + sex, data=jobs)
contcont.age20 <- mediate(b.int, d.int, sims=50, treat="treat", mediator="job_seek",
covariates = list(age = 20))
contcont.age70 <- mediate(b.int, d.int, sims=50, treat="treat", mediator="job_seek",
covariates = list(age = 70))
m20 <- model_parameters(contcont.age20)
m70 <- model_parameters(contcont.age70)
m20[["age level"]] <- 20
m70[["age level"]] <- 70
m <- rbind(m20, m70)
attr(m, "pretty_names") <- c(attr(m20, "pretty_names"), attr(m70, "pretty_names"))
str(m)
#> Classes 'parameters_model', 'see_parameters_model' and 'data.frame': 20 obs. of 8 variables:
#> $ Parameter: chr "ACME (control)" "ACME (treated)" "ADE (control)" "ADE (treated)" ...
#> $ Estimate : num -0.0459 -0.0274 -0.0502 -0.0318 -0.0776 ...
#> $ CI : num 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 ...
#> $ CI_low : num -0.1078 -0.0656 -0.1868 -0.1682 -0.2264 ...
#> $ CI_high : num 0.00768 0.00874 0.06707 0.10573 0.06468 ...
#> $ p : num 0.12 0.12 0.48 0.68 0.36 0.32 0.32 0.12 0.56 0.32 ...
#> $ Component: chr "control" "treated" "control" "treated" ...
#> $ age level: num 20 20 20 20 20 20 20 20 20 20 ...
#> - attr(*, "object_name")= chr "contcont.age20"
#> - attr(*, "pretty_names")= Named chr [1:20] "Indirect Effect (ACME)" "Indirect Effect (ACME)" "Direct Effect (ADE)" "Direct Effect (ADE)" ...
#> ..- attr(*, "names")= chr [1:20] "ACME" "ACME" "ADE" "ADE" ...
#> - attr(*, "ci")= num 0.95
#> - attr(*, "verbose")= logi TRUE
#> - attr(*, "exponentiate")= logi FALSE
#> - attr(*, "ordinal_model")= logi FALSE
#> - attr(*, "linear_model")= logi FALSE
#> - attr(*, "mixed_model")= logi FALSE
#> - attr(*, "model_class")= chr "mediate"
#> - attr(*, "bootstrap")= logi FALSE
#> - attr(*, "iterations")= num 1000
#> - attr(*, "robust_vcov")= logi FALSE
#> - attr(*, "ignore_group")= logi TRUE
#> - attr(*, "ran_pars")= logi TRUE
#> - attr(*, "show_summary")= logi FALSE
#> - attr(*, "weighted_nobs")= num 899
#> - attr(*, "coefficient_name")= chr "Coefficient"
#> - attr(*, "zi_coefficient_name")= chr "Log-Odds"
#> - attr(*, "digits")= num 2
#> - attr(*, "ci_digits")= num 2
#> - attr(*, "p_digits")= num 3
#> - attr(*, "footer_digits")= num 3
print_md(m)
| Parameter | Estimate | 95% CI | p | age level |
|---|---|---|---|---|
| Indirect Effect (ACME) | -0.05 | (-0.11, 7.68e-03) | 0.120 | 20.00 |
| Direct Effect (ADE) | -0.05 | (-0.19, 0.07) | 0.480 | 20.00 |
| Prop. Mediated | 0.33 | (-4.73, 2.78) | 0.320 | 20.00 |
| ACME | 0.03 | (-0.06, 0.13) | 0.720 | 70.00 |
| ADE | -0.08 | (-0.34, 0.18) | 0.600 | 70.00 |
| Prop. Mediated | 0.04 | (-3.08, 5.61) | 0.880 | 70.00 |
control
| Parameter | Estimate | 95% CI | p | age level |
|---|---|---|---|---|
| Indirect Effect (ACME) | -0.03 | (-0.07, 8.74e-03) | 0.120 | 20.00 |
| Direct Effect (ADE) | -0.03 | (-0.17, 0.11) | 0.680 | 20.00 |
| Prop. Mediated | 0.25 | (-2.45, 1.33) | 0.320 | 20.00 |
| ACME | 0.02 | (-0.05, 0.10) | 0.600 | 70.00 |
| ADE | -0.09 | (-0.34, 0.16) | 0.640 | 70.00 |
| Prop. Mediated | 0.05 | (-1.54, 3.22) | 0.920 | 70.00 |
treated
| Parameter | Estimate | 95% CI | p | age level |
|---|---|---|---|---|
| Indirect Effect (ACME) | -0.04 | (-0.09, 8.21e-03) | 0.120 | 20.00 |
| Direct Effect (ADE) | -0.04 | (-0.18, 0.08) | 0.560 | 20.00 |
| Prop. Mediated | 0.29 | (-3.55, 1.88) | 0.320 | 20.00 |
| ACME | 0.02 | (-0.05, 0.11) | 0.600 | 70.00 |
| ADE | -0.08 | (-0.34, 0.17) | 0.680 | 70.00 |
| Prop. Mediated | 0.04 | (-2.04, 4.03) | 0.920 | 70.00 |
average
| Parameter | Estimate | 95% CI | p | age level |
|---|---|---|---|---|
| Total Effect | -0.08 | (-0.23, 0.06) | 0.360 | 20.00 |
| Total Effect | -0.06 | (-0.38, 0.22) | 0.800 | 70.00 |
Total Effect
sessionInfo()
#> R version 4.2.0 (2022-04-22)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Debian GNU/Linux 11 (bullseye)
#>
#> Matrix products: default
#> BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.13.so
#>
#> locale:
#> [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
#> [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
#> [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] parameters_0.18.1 mediation_4.5.0 sandwich_3.0-1 mvtnorm_1.1-3
#> [5] Matrix_1.4-1 MASS_7.3-57
#>
#> loaded via a namespace (and not attached):
#> [1] splines_4.2.0 R.utils_2.11.0 datawizard_0.4.1
#> [4] Formula_1.2-4 assertthat_0.2.1 latticeExtra_0.6-29
#> [7] yaml_2.3.5 bayestestR_0.12.1 pillar_1.7.0
#> [10] backports_1.4.1 lattice_0.20-45 glue_1.6.2
#> [13] digest_0.6.29 RColorBrewer_1.1-3 checkmate_2.1.0
#> [16] minqa_1.2.4 colorspace_2.0-3 htmltools_0.5.2
#> [19] R.oo_1.24.0 lpSolve_5.6.15 pkgconfig_2.0.3
#> [22] xtable_1.8-4 purrr_0.3.4 scales_1.2.0
#> [25] jpeg_0.1-9 lme4_1.1-29 emmeans_1.7.4-1
#> [28] tibble_3.1.7 htmlTable_2.4.0 styler_1.7.0
#> [31] generics_0.1.2 ggplot2_3.3.6 ellipsis_0.3.2
#> [34] TH.data_1.1-1 withr_2.5.0 nnet_7.3-17
#> [37] cli_3.3.0 survival_3.3-1 magrittr_2.0.3
#> [40] crayon_1.5.1 estimability_1.3 evaluate_0.15
#> [43] R.methodsS3_1.8.1 fs_1.5.2 fansi_1.0.3
#> [46] R.cache_0.15.0 nlme_3.1-157 foreign_0.8-82
#> [49] tools_4.2.0 data.table_1.14.2 multcomp_1.4-19
#> [52] lifecycle_1.0.1 stringr_1.4.0 munsell_0.5.0
#> [55] reprex_2.0.1 cluster_2.1.3 compiler_4.2.0
#> [58] rlang_1.0.2 grid_4.2.0 nloptr_2.0.3
#> [61] rstudioapi_0.13 htmlwidgets_1.5.4 base64enc_0.1-3
#> [64] rmarkdown_2.14 boot_1.3-28 codetools_0.2-18
#> [67] gtable_0.3.0 DBI_1.1.2 R6_2.5.1
#> [70] gridExtra_2.3 zoo_1.8-10 knitr_1.39
#> [73] dplyr_1.0.9 fastmap_1.1.0 utf8_1.2.2
#> [76] Hmisc_4.7-0 insight_0.17.1 stringi_1.7.6
#> [79] Rcpp_1.0.8.3 vctrs_0.4.1 rpart_4.1.16
#> [82] png_0.1-7 coda_0.19-4 tidyselect_1.1.2
#> [85] xfun_0.31
Created on 2022-06-02 by the reprex package (v2.0.1)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the supplied mediation, model_parameters(), and print_md() example, then inspect how print_md consumes the pretty_names attribute after the two results are combined with rbind. No source file or test is named in the issue. Done means repeated ACME and ADE rows receive their corresponding pretty names in every rendered table.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- r
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100