Follow the greybox fixes: CALM predict, stepwise, lowess ties, scale of measures, rmcb, temporaldummy
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
6d3100c
diagnostics: outlierdummy() is an S3 generic, 0-based ids in Python, runnable R example
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
7e9bde7
association: use= and cramer() in Python, mcor/cramer result objects, auto rule, determ()
The auto method treats variables with 10 or fewer values as
categorical in both languages; bruteforce=TRUE switches to stepwise
only when there are no more observations than variables. Examples on
mtcars give the same values in both languages.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
285218d
EDA: R's stick() also returns the fitted aov model
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2797709
RMCB, Resources: correction="hac" and its factor, R's distribution field, same-data example
RMCB: the correction argument in both signatures, the long-run factor
in the critical distances, R's $distribution/$correction/$factor, no
stored outplot, select by name in rmcb(), pinned same-page anchors.
Resources: ADAM dated 2023; Demsar, Newey-West, the greybox 0.3.0
post and Loader added.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ecf93c1
measures: R signatures with holdout and scale, SAME/rMIS in R, no RMSE in R
The scaled measures need scale in R and default to the holdout's in
Python; sMSE takes a squared scale; MPE/MAPE are fractions; MRE is
complex; asymmetry is 1 above C; rmis takes benchmark_lower/upper;
hm takes C. Examples rerun in both languages with the same outputs.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
04f4e0b
manipulations, Installation, Glossary: names, signatures and outputs from the code
manipulations: temporaldummy() with type/of/factors (no freq in R),
R's default lags -frequency:frequency, the variable kept with its lags
and leads, B() and multipliers() documented, outputs from identical
data in both languages. Installation: Python 3.11, matplotlib, a C++17
compiler for source builds, smooth as the optional extrapolator, a
quoted pip URL, an mtcars check. Glossary: QUALE alone is R-only,
custom losses, AICc as the only default, the sign of B()'s k.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
b0af23e
Home, Roadmap, R-Python-differences, rolling_origin: current state of both ports
Home: runnable quick start (temporaldummy, from greybox import measures,
a working ro() call), and a parity matrix in which sm, coefbootstrap,
cramer and the plots are in Python and lmDynamic, pAIC, accuracy and
the utilities are R-only. Roadmap: smooth's layout, the R-only
functions and options, and the Python-only items; no pBICc. R-Python-
differences: versions, what was measured to agree, what differs, the
full comparison suite (2093 passed), no 'different optimiser' claim.
rolling_origin: R value/silent/parallel, working R calls with value,
outputs from identical data in both languages.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
0f03d2a
distributions, Smoothers: the functions each language has, measured parity
distributions: R exports only the non-base families and dchisq is a
Python-only ALM option; Python lacks rnorm and a few log-family p/r
functions; examples use mean/mu, not the deprecated loc/scale; the
family tables are no longer split by the accuracy sections. The
dgamma/dnorm/dlnorm parity is re-measured with a script. The lowess
accuracy note moves to Smoothers, which records supsmu bit-identical
with ties and lowess off by 1e-15 with ties.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1e7e37c
AID: examples on identical data in both languages, measured IC parity, categories type
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
e9fc6b2
stepwise: R's distribution list, ICs field, signed correlations, runnable examples
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
816b3d0
ALM, CALM: match the code of R and Python
ALM: 25 distributions in R and dchisq in Python only, the links of
dbeta and dchisq, QUALE and custom losses, trim and lambda in R's
ellipsis, the elements and methods of both, the optimiser defaults,
and outputs re-run in both languages (AR forecast, B(), impulse-
response multipliers). CALM: the bruteforce=FALSE path, the ALM
returned for an intercept-only selection, R's distribution list,
the fields, and an example run on the same data in both languages.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
9a04aa8
Document lowess R parity
R groups the weighted spread as w * (d*d); grouping it (w*d)*d compounds
through the robustness iterations into tens of ULPs, and reaches smooth's
ADAM initials through msdecompose. Adds a distributions.md section, an
R-Python-differences row and the llms.txt line.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2697b6b
Document dnorm/dlnorm R parity
Both now follow R's nmath grouping rather than SciPy's: the correctly-rounded
log(sqrt(2*pi)) literal, R's split of large |z|, and log(q) used directly in
dlnorm. Adds a distributions.md section, an R-Python-differences row and the
llms.txt line.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
deb7362
Document dgamma's saddle-point implementation
dgamma() now computes its log-density the way R's stats::dgamma does,
through Loader's saddle-point form in a native extension, instead of
deferring to SciPy's direct expression. The direct form cancels once the
shape grows: measured against R, its relative error is 8.4e-14 at a
shape of 143 and 1.1e-11 at 10000, where the saddle-point form stays
near 2e-15. Small shapes were never affected.
- distributions.md gains a "Numerical accuracy of dgamma" section with
the measured comparison, the boundary conventions R defines at q = 0
and outside the support, the note that shape and scale may each vary
per observation, and the SciPy fallback for checkouts without a
compiler.
- R-Python-differences.md records dgamma in the verified-agreement table.
- llms.txt mentions it on the distributions entry.
a62c74d
Update repo URLs config-i1 -> openforecast-org after org move
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
346bc1c
Clarify RMCB default is the Nemenyi/MCB test, not regression-based
Split the RMCB.md explanation into "Nemenyi / MCB" (default
distribution="tukey": Studentised-range critical distance + Friedman
p-value, no regression standard errors) and "Regression for MCB" (other
distributions, where the fitted model's standard errors and F/chi-squared
tests drive the comparison).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
81f0246
Add RMCB wiki page; mark rmcb() as ported to Python
Add RMCB.md documenting Regression for Multiple Comparison with the Best
(Nemenyi/MCB test) with R/Python parity, distribution options, and plot
styles. Update Home, Roadmap, R-Python-differences and llms.txt to move
rmcb() out of the R-only lists now that the Python port exists.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cedde97
Align Smoothers/AID pages with wiki conventions; fix port-status drift
After the rebase brought in the new Smoothers and AID pages (with aid()
now ported to Python):
- Smoothers.md, AID.md: add YAML frontmatter, convert relative links to
[[WikiLink]] syntax, and add "## Function signatures" blocks.
- Roadmap.md: drop aid()/aidCat() from the R-only list (now ported);
add Smoothers and AID to the "already ported" reference.
- llms.txt: index the Smoothers and AID pages; remove aid() from the
R-only line.
- R-Python-differences.md: add Smoothers (~1e-15) and AID (categorical
match; IC ~1e-3) parity rows; fix stale "R-only function" wording.
- Resources.md: add Cleveland (1979), Friedman (1984), and Svetunkov &
Sroginis (2025) references.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6d0aa36
LLM-friendly wiki: frontmatter, wikilinks, llms.txt, signatures, nav pages
- Add EDA page documenting stick() (STI decomposition) with an
AirPassengers example (R built-in; Python via fcompdata).
- Add YAML frontmatter (title/slug/summary/status/applies_to/related)
to all content pages.
- Convert inter-page links to [[WikiLink]] syntax; fix broken
case-sensitive links ([Stepwise]/[Distributions]).
- Add "## Function signatures" blocks (verbatim R + typed Python) to the
function pages.
- Add Glossary, Resources, Roadmap, and R-Python-differences nav pages.
- Add llms.txt machine index; wire new pages into Home navigation.
- Fix mtcars import typo in Home.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
a0acf44
AID/smoothers fixes to align with R
35cb667