balqual() gained two new type values,
"desc_full" and "desc_reduced", which report
standard descriptive statistics for every balancing variable, separately
for each treatment level and for the unmatched and matched dataset. This
makes it possible to compare the covariate distributions between both
datasets, in addition to the pairwise balance metrics. The tables follow
the layout of the balance tables, with the statistics as rows and the
two matching stages as the Before and After
columns. Numeric covariates are summarized by N, mean,
standard deviation, minimum, first quartile, median, third quartile,
maximum, skewness and excess kurtosis for "desc_full", or
by N, minimum, mean, median and maximum for
"desc_reduced". Categorical covariates are instead
cross-tabulated, with the count and the percentage of every level within
each treatment level, computed separately for each matching stage and
printed as a single N (%) cell in a separate table. The two
values are mutually exclusive, and both are opt-in, so the default
output is unchanged.
match_gps() now works with any
reference when method = "nnm". The columns
kept for matching were selected with a logical mask built on the full
csmatrix, but the mask was applied after the
treatment column had already been dropped, so every
position shifted by one. The gps column of the reference was therefore
only retained when the reference happened to be the first gps column of
the csmatrix; any other reference failed with
undefined columns selected. When it did not fail, the
shifted mask kept the neighbouring gps column as well, so
[Matching::Matchby()] silently matched on two covariates instead of one
and returned a different set of matches. Both branches now index the gps
column of the first group of the current combination by name, which also
fixes the same error for a user-supplied combos whose
group1 differs from reference.
match_gps() now actually honours the
max_controls argument for method = "fullopt".
It was passed to [optmatch::fullmatch()] under a name that function does
not accept and carried the value of caliper, so it was
silently discarded and had no effect on the matching. Calls that set
max_controls to a non-default value will now produce
different (correct) results.
csregion() now stops with an informative message
when the common support region turns out to be empty, or when a
treatment group loses all of its observations. Previously such a call
failed with non-numeric argument to binary operator, which
came from the fallback warning of the internal refitting step rather
than from the empty region itself, and gave no hint about the actual
cause. With refit = FALSE the same situation returned a
zero-row csr object silently, and the problem only surfaced
later in match_gps(). Emptying a group is now reported as
well, since dropping it would silently change the estimand. The new
messages name the groups involved and suggest a larger sample, fewer
treatment groups, a different borders value or a different
model specification in estimate_gps().
match_gps() no longer warns when a method-specific
tuning parameter is left at its default. Previously, a call such as
match_gps(csr, method = "fullopt") emitted a warning for
every unset parameter (order, min_controls,
max_controls), which made an ordinary default call look
like it had gone wrong. Defaults are now filled in silently. Arguments
that do not apply to the selected method are still
reported, but only when they were explicitly supplied by the
user.
The descriptive metrics of balqual() describe the
covariates as they are given in the formula, while the
balance metrics are computed on the model matrix. A factor is therefore
described once by its levels rather than once per dummy-coded column,
and interaction terms are covered by the balance metrics only.
The statistic argument of balqual() is
not used by the descriptive metrics, and a warning is now issued when it
is supplied together with type = "desc_full" or
type = "desc_reduced" alone.
Fixed a bug in balqual(), where the values of the
cutoffs argument were matched to the metrics by position
across all three balance metrics rather than by name. Passing a subset
of the metrics, e.g. type = c("smd", "var_ratio"), raised a
recycling warning and could evaluate a metric against the cutoff of
another one.
print.quality() now returns its argument invisibly,
as documented for print() methods, instead of returning it
visibly. The visible return value made the quality tables be printed
twice whenever the result of print() was itself
auto-printed, e.g. inside capture.output() or a knitted
document.
Fixed the fallback warning of csregion(), which was
emitted when refitting the GPS model on the CSR-restricted data fails.
Its message was split into three fragments that strwrap()
received as the width and indent arguments
instead of as text, so the warning aborted instead of being
shown.
optimize_gps() no longer aborts with
$ operator is invalid for atomic vectors when the GPS
estimation fails for the first combination of the search space. Failed
combinations are passed through as the message of the underlying error,
but the treatment levels were read from the first result
unconditionally, so a single failure at the head of the estimation space
brought down the whole sweep. The first result that actually holds a GPS
matrix is now used instead. If every combination fails, the function
stops with a message that reports how many were tried and the reason
given by the first failure.
pkgdown website at https://polymerase3.github.io/vecmatch/. The site
collects the reference pages of all exported functions, grouped by the
five steps of the vecmatch workflow, together with the
vignettes and this changelog, and is rebuilt automatically by a GitHub
Actions workflow on every push to main.get_select_params() and
run_selected_matching() to streamline the re-estimation
step after the main optimization workflow.DESCRIPTION, and improved how suggested packages are
handled in the code.raincloud(), where facet labels were
reversed when using facet.optimize_gps(). The
parallel backend must now be registered outside the function.run_selected_matching().cancer dataset.\donttest{}.README.optimize_gps(), make_opt_args(), and
select_opt() to support a new GPS‐optimization
workflow.csregion() so the GPS can be reestimated after
dropping observations.raincloud() and
mosaic(), now allowing custom facet ordering via
releveling.raincloud().raincloud() legend to show group names with
their observation counts.csregion() now allows specifying how to handle
observations at the borders of the Common Support Region (CSR) using the
new borders argument.match_gps() has been updated to support datasets with
only two unique treatment groups.NEWS.md file to document package
changes.
Need a high-speed mirror for your open-source project?
Contact our mirror admin team at info@clientvps.com.
This archive is provided as a free public service to the community.
Proudly supported by infrastructure from VPSPulse , RxServers , BuyNumber , UnitVPS , OffshoreName and secure payment technology by ArionPay.