Corrections so that the package does what its documentation says, found by running it on public survival data. Detection stays deterministic and name-blind.
verify_roles()verify_roles(data, claim) checks a declared assignment of roles against the
name-blind value signature. Verdicts: contradicted (a falsification backed by a
value statistic), consistent (a reading the data support, never "correct") and
unverifiable with sub-reason identifiability (design roles: group, outcome,
covariate) or coverage (no test exists, or the evidence is empty). Binary scale
items are never consistent. contradicted is issued only for falsifications backed
by a value statistic (exact list in ?verify_roles); absence of a time-event
association is unverifiable(coverage), not a contradiction. Each claimed pair is
judged on its own, and a survival claim (time plus event) is one claim shown as two
rows. unclaimed lists blind-found structure the claim does not state under the
same role.
Detectors are unchanged. See ?verify_roles, the README and the vignette.harmonize_roles()harmonize_roles(sites) aligns the roles detected name-blind in two or more sites
(a named list of data.frames) into a map (role by site, aligned/partial/absent),
descriptive checks and a site_only table. Flags are categorical only:
type_mismatch, coding_mismatch, size_mismatch; Jaccard and range overlap are
reported but never flagged. The residual covariate role is excluded. Detectors
are unchanged. See ?harmonize_roles, the README and the vignette.coupled_paircoupled_pair role reports the
pair with both readings, and the user decides. Documented ceiling: a zero-anchored
continuous cause whose larger values are protective still reads as survival.coupled_pair.coupled_pair with the competing reading
named. A rival sharing the winner's time column agrees on the axis and merely
offers another event candidate (a ranking question), and an ID-typed time
candidate may win on its exceptional evidence bar but may not veto a
structurally-typed reading.outcome_binary is replaced by a
Bernoulli MDL code: a candidate cause is admitted only when its one-slope logistic
code -- or, for non-monotone dependence, a two-Gaussian split of the predictor by
the outcome -- saves more bits than the slope's parameter cost (1/2 log2 n) PLUS
the log2(m) model-index bits naming it among the m candidates (Rissanen two-part
code). The naming term makes the evidence selection-consistent, so scanning many
predictors on noise no longer buys phantom outcomes (~14% -> ~6% of pure-noise
tables); a weak borderline cause now stays honestly silent instead.group_var is the character/factor column with the highest normalized Shannon
entropy H/log2(k) (ties: fewer levels, then value fingerprint); a column with a level
seen fewer than 3 times is not a candidate. The point table is gone.paired_pairs,
otherwise agreement_pairs. potential_pairs now carries bits and shift_bits.scale_items are accepted when a one-factor Gaussian two-part code on the
standardized candidate columns saves bits over independence (.mdl_factor_bits).score/max_score/pct are bits (max_score NA) for derived roles and points for the
ported ones.repeated_measures as a one-factor block (false positives rose from 15 to
163-207 tables), and a derived binary-item scale criterion (it rejected every simulated
binary battery) each regressed false positives or recall and were reverted. Survival, wide repeated_measures and binary scale_items therefore
remain on point scorers.time_index. Date/POSIXct columns -- and character columns whose
every value parses as a date -- type as Datetime and are reported as calendar
axes. They were previously typed "Other" and invisible to every detector. The
class and format are properties of the values, so name-blindness is preserved.repeated_measures$panel_axes) and
subject_id stays silent. A Datetime column can be the panel time axis.scale_items, guarded by the
pairwise 2-sigma dependence gate; the >= 5-item path is unchanged.rolescry_default_name_bonus(domain = "finance")
(or "all"); the default "clinical" is unchanged. The name channel remains
optional and capped.Sink veto in repeated measures. A column MDL-explained by two or more mutually
independent other block members is a dependency sink (collider), not a repeated
measurement, and is removed from the block. y = x1 + x2 + noise is no longer
swallowed as a correlated block, so the continuous outcome can be detected.
covariate is now the residual role. It lists the continuous, categorical and
binary columns that no other role claimed. In 0.2.0 it listed every such column,
including the survival pair, the group and the outcomes.
survival::lung).survival::ovarian).subject_id.NaN on tied values (a neighbor count
of -1 passed to digamma()), which made the dependence measure NaN and emitted
warnings (e.g. survival::pbc). Counts are now clamped at zero.NA).?detect_roles states that roles can overlap, that covariate is residual, and that
a role is reported as not found rather than guessed.Information-theoretic re-founding of the detection engine, a correctness fix to
the name-blindness contract, and more robust survival-code handling. Detection
remains deterministic and, by default (name_bonus = NULL), a pure function of
each column's value signature.
name_bonus = NULL. Previously a weak-signature identifier column could
be typed from its name; such a column is now typed from its values only, so
its assignment can differ from 0.1.0. This restores the package's core
invariant: renaming columns to col_1, col_2, ... cannot change any role.{0, 1}; factor and character codings are
intentionally not coerced.event_variable
fell just outside its pre-registered calibration band, and covariate remains
inadmissible (high false-positive rate) and is excluded from the headline.v.0.2.0; Zenodo 10.5281/zenodo.21003941)
in corrected vignette example data, test expectations aligned with the current
detector, a stats:: import, and an updated .Rbuildignore. Detection
behavior, its thresholds, and the confirmatory results above are unchanged.citation("rolescry") and CITATION.cff reference both rolescry and the
parent MDStatR engine.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.