
Publication Bias Adjustment
publication_bias.RdFits publication-bias models using estimates from a fitted mars object.
Currently implements the beta selection model described by Citkowicz and
Vevea (2017), where selection weights are modeled as a beta kernel over
p-values. Also supports a beta-binomial selection model over equal-width
p-value bins.
Usage
publication_bias(
mars_object,
method = c("beta_selection", "beta_binomial", "logistic_selection"),
p_value_tail = c("two.sided", "right", "left"),
n_bins = 10,
p_value_min = NULL,
maxit = 2000,
integration_points = 121,
integration_limit = 8,
funnel_plot = FALSE,
funnel_args = list(),
control = list(),
...
)Arguments
- mars_object
A fitted object returned by
mars.- method
Publication-bias method. One of
"beta_selection"or"beta_binomial"or"logistic_selection".- p_value_tail
Which p-value tail to use for the selection function. One of
"two.sided","right", or"left".- n_bins
Number of p-value bins used when
method = "beta_binomial". Ignored for"beta_selection". For"beta_binomial", p-values are assigned to equal-width bins \([j / n\_bins, (j + 1) / n\_bins)\) for \(j = 0, \ldots, n\_bins - 1\), with \(p = 1\) assigned to the final bin.- p_value_min
Lower/upper censoring point for p-values used inside the selection likelihood. When
NULL, defaults to1e-5formethod = "beta_selection"and1e-12otherwise. This setting is most relevant for"beta_selection"; for"beta_binomial", it typically only affects exact boundary values such as \(p = 0\) or \(p = 1\).- maxit
Maximum number of optimization iterations passed to
optim.- integration_points
Number of grid points used for numeric integration of the normalization term in the selection likelihood.
- integration_limit
Absolute z-limit for integration grid.
- funnel_plot
Logical; if
TRUE, draws a funnel plot from the fitted publication-bias object.- funnel_args
Optional named list passed to
funnel_plotwhenfunnel_plot = TRUE.- control
Optional named list of control values passed to
optim.- ...
Unused. Optimization controls should be supplied through
control; optimization uses"BFGS"internally.
Value
A list of class pub_bias containing adjusted coefficients,
selection parameters, optimization diagnostics, and an
adjusted-vs-unadjusted coefficient summary table.
References
Citkowicz, M., & Vevea, J. L. (2017). A parsimonious weight function for modeling publication bias. Psychological Methods, 22(1), 28-41.
Examples
# \donttest{
fit <- mars(
data = teacher_expectancy,
studyID = "study",
effectID = NULL,
sample_size = NULL,
formula = yi ~ 1,
variance = "vi",
varcov_type = "univariate",
structure = "univariate"
)
bias_fit <- publication_bias(fit, method = "beta_selection")
summary(bias_fit)
#> Publication Bias Model (MARS)
#> Method: beta_selection
#> Structure: univariate
#> Effects: 19 | Studies: 19
#> P-value tail: two.sided
#> Convergence: 0 - Converged
#> Objective: 3.113
#>
#> Selection Parameters:
#> parameter estimate
#> alpha 0.9907
#> beta 1.0564
#> tau2 0.0186
#>
#> Selection Weight Profile (p-value grid):
#> model p_value weight
#> beta_selection 0.0100 1.0430
#> beta_selection 0.1189 1.0127
#> beta_selection 0.2278 0.9991
#> beta_selection 0.3367 0.9870
#> beta_selection 0.4456 0.9745
#> beta_selection 0.5544 0.9606
#> beta_selection 0.6633 0.9440
#> beta_selection 0.7722 0.9221
#> beta_selection 0.8811 0.8878
#> beta_selection 0.9900 0.7712
#>
#> Bias-Adjusted Coefficients:
#> term estimate std_error z_value p_value
#> (Intercept) 0.0855 0.0253 3.3753 7e-04
#>
#> Adjusted vs Unadjusted Summary:
#> term unadjusted_estimate unadjusted_se unadjusted_ci_lower
#> (Intercept) 0.0837 0.0516 -0.0175
#> unadjusted_ci_upper estimate std_error adjusted_ci_lower adjusted_ci_upper
#> 0.1849 0.0855 0.0253 0.0358 0.1351
#> estimate_diff percent_change direction_changed ci_overlap
#> 0.0018 2.1322 FALSE TRUE
#>
#> Small-Study Effects Check (Egger-type):
#> Model: SND ~ precision
#> Method: Egger-type small-study-effects regression with study-cluster robust SE (CR1)
#> Intercept: 0.9059 SE: 0.8531 t: 1.0619 df: 18 p: 0.3023
#>
#> SE note:
#> SE rule: reported SEs use the larger of the Hessian-based and OPG-based values when both are finite, otherwise the finite one.
# }