Skip to contents

Gives the declared status of a pair of package features. The status is one of:

Usage

frm_compat(feature_a = NULL, feature_b = NULL, status = NULL)

Arguments

feature_a, feature_b

Feature names, as given by frm_compat_features(). Supply both for one pair, one for every pair involving that feature, or neither for the whole table. Both accept a vector, which gives every pair in the cross of the two sides; an empty vector is an error rather than an empty answer.

status

Optional character vector; keep only these statuses.

Value

A data frame with columns feature_a, kind_a, feature_b, kind_b, status, and note. Family pairs are omitted, because a model carries one family. When the session holds an unresolved rule side, the frame also carries an unresolved attribute and the class frmtmb_compat, whose print method names them; see the section below.

Details

works

The combination is supported and exercised.

conditional

Supported, but the note states a condition that the combination must meet.

refused

frm() or the post-fit method stops with an error. The refusal is deliberate.

broken

The combination is accepted but the result is wrong, or it fails with an error that does not explain itself. Avoid the pair. The note gives the evidence.

untested

Nothing checks this pair. It may work. Treat a silent success as unverified, not as support.

The last status is the point of the registry. A guard that does not exist looks exactly like a guard that passed, so the absence of an error was never evidence of support.

Rule sides this session cannot resolve

A rule may name a feature another package owns, declared through frmtmb_register_compat(expects =). Until that package is loaded there is no such feature and so no pair, and the rule matches nothing. Such a side cannot honestly be a row here, because a row would put a feature in the table that nothing in this session implements; it is reported instead. The returned table carries the names in an unresolved attribute and the print method names them under the rows. Both appear only when the session holds one, so a session with no forward reference gets the plain data frame it always got. Load the package that owns the feature, or read the names as the list of rules that are waiting for one.

Examples

# one pair
frm_compat("rescor", "cens()")
#>   feature_a    kind_a feature_b kind_b  status
#> 1    rescor structure    cens()  aterm refused
#>                                                                        note
#> 1 Refused. This pair was once accepted with the censoring silently dropped.

# everything known about truncation
frm_compat("trunc()", status = c("refused", "broken"))
#>    feature_a kind_a              feature_b    kind_b  status
#> 1    trunc()  aterm                tweedie    family refused
#> 2    trunc()  aterm                nbinom1    family refused
#> 3    trunc()  aterm              bernoulli    family refused
#> 4    trunc()  aterm            multinomial    family refused
#> 5    trunc()  aterm  dirichlet_multinomial    family refused
#> 6    trunc()  aterm zero_one_inflated_beta    family refused
#> 7    trunc()  aterm                  xbeta    family refused
#> 8    trunc()  aterm             cumulative    family refused
#> 9    trunc()  aterm      hurdle_cumulative    family refused
#> 10   trunc()  aterm                 sratio    family refused
#> 11   trunc()  aterm                 cratio    family refused
#> 12   trunc()  aterm                   acat    family refused
#> 13   trunc()  aterm            categorical    family refused
#> 14   trunc()  aterm              dirichlet    family refused
#> 15   trunc()  aterm             dirichlet2    family refused
#> 16   trunc()  aterm        logistic_normal    family refused
#> 17   trunc()  aterm                thres()     aterm refused
#> 18   trunc()  aterm                 fcor()   autocor refused
#> 19   trunc()  aterm             quadrature      mode refused
#> 20   trunc()  aterm                 rescor structure refused
#> 21   trunc()  aterm                mixture structure refused
#> 22   trunc()  aterm           bar_crossing   grammar refused
#> 23   trunc()  aterm            mixture_mvn structure refused
#> 24   trunc()  aterm                    hmm structure refused
#> 25   trunc()  aterm                    lca structure refused
#>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               note
#> 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Refused: trunc() needs a family with an AD log-CDF.
#> 2                                                                                                                                                                                                                                                                                                                                                                       Refused by the family's list of addition terms, which holds weights() alone. brms has no nbinom1 family. Its CDF is read by residuals(type = "osa") alone.
#> 3                                                                                                                                                                                                                                                                                                                                                                                Refused, as brms 2.23.0 refuses it: "Argument 'trunc' is not supported for family 'bernoulli'". Its CDF is read by residuals(type = "osa") alone.
#> 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Refused: trunc() needs a family with an AD log-CDF.
#> 5                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Refused: trunc() needs a family with an AD log-CDF.
#> 6                                                                                                                                                                                                                                                                                                                                                                                              Refused, as brms 2.23.0 refuses it: "Argument 'trunc' is not supported for family 'zero_one_inflated_beta'". The family has no CDF.
#> 7                                                                                                                                                                                                                                                                                                                                                                                                               Refused, as brms 2.23.0 refuses it: "Argument 'trunc' is not supported for family 'xbeta'". The family has no CDF.
#> 8                                                                                                                                                                                                                                                                                                                                                                                                                                                           Refused: ordinal families carry no AD log-CDF over the response scale.
#> 9                                                                                                                                                                                                                                                                                                                                                                                                                                                           Refused: ordinal families carry no AD log-CDF over the response scale.
#> 10                                                                                                                                                                                                                                                                                                                                                                                                                                                          Refused: ordinal families carry no AD log-CDF over the response scale.
#> 11                                                                                                                                                                                                                                                                                                                                                                                                                                                          Refused: ordinal families carry no AD log-CDF over the response scale.
#> 12                                                                                                                                                                                                                                                                                                                                                                                                                                                          Refused: ordinal families carry no AD log-CDF over the response scale.
#> 13                                                                                                                                                                                                                                                                                                                                                                                                                                                            Refused for the same reason: no order, no CDF, no truncation window.
#> 14                                                                                                                                                                                                                                                                                                                                                                                                                                                               Refused for the same reason: no scalar CDF, no truncation window.
#> 15                                                                                                                                                                                                                                                                                                                                                                                                                                                               Refused for the same reason: no scalar CDF, no truncation window.
#> 16                                                                                                                                                                                                                                                                                                                                                                                                                                                               Refused for the same reason: no scalar CDF, no truncation window.
#> 17                                                                                                                                                                                                                                                                                                                                                                                                                                                    Refused: the ordinal families that thres() belongs to do not take this term.
#> 18                                                                                                                                                                                                                                                           Refused: the density of the rows is joint, so there is no per-row contribution for a frequency weight to repeat, a censoring indicator to replace with a tail probability, or a truncation bound to renormalize. brms refuses weights(), cens() and trunc() here too.
#> 19 Refused: the truncation normalizer is log(F(ub) - F(lb)) over plain CDFs, and the Gauss-Kronrod nodes reach random-effect values where that difference underflows to exactly zero while the density is still representable. The integrand is then +Inf and the marginalized objective is -Inf, at the Laplace optimum as well as at the starting values, so the fit used to report logLik = +Inf as converged. Laplace stays near the mode and is unaffected: use quadrature = FALSE, REML, or profile for truncated responses.
#> 20                                                                                                                                                                                                                                                                                                                                                                                                                                                      Refused. This pair was once accepted with the truncation silently dropped.
#> 21                                                                                                                                                                                                                                                                                                                                                            Refused: brms 2.23.0 truncates each component and then mixes them, and frmtmb's density has no per-component window, so a CDF of the mixture would be another model.
#> 22                                                                                                                                                                                                                                                                                                    Refused: a bar term crossed with * or : (as in x * (1 | g)) is not a random-effect specification (lme4#196). Write the crossing inside the bar: (x | g). This spelling was once accepted with the crossing silently dropped.
#> 23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Refused: mixture_mvn() has no CDF.
#> 24                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Refused for the same reason as cens().
#> 25                                                                                                                                                                                                                                                                                                                             Refused: an lca() response is a matrix of item codes with no per-row weight, censoring window, trial count or known standard error to attach an addition term to. One message covers the whole set.

# the pairs to avoid
frm_compat(status = "broken")[, 1:5]
#> [1] feature_a kind_a    feature_b kind_b    status   
#> <0 rows> (or 0-length row.names)