The trust map
trust_lookup reports what a pre-registered simulation study measured about this
estimator in a regime like yours. It is separate from FitResult.reliable, which
describes one fit. The study is called h6-v1; its design was frozen at the git tag
H6-preregistration before any cell ran.
import hawkes_engine as he
answer = he.trust_lookup(N=2000, rho_hat=0.3028, beta=1.0, T=1722.6)
print(answer.status, answer.cell, answer.distance)
N is the number of events, rho_hat the fitted branching ratio, beta the
smallest fitted decay rate, T the observation window, and resolution the
timestamp resolution in the units of T (0 for exact times).
The three outcomes
status is one of:
"measured". The query lies inside the measured box. coverage gives, for each
block (mu, alpha, beta, all), the share of nominal-95% intervals that
covered the truth in the nearest cell over 2000 replications, with its Monte Carlo
standard error. A fit that returned no standard error counts as a miss. q gives
the ratio of mean reported standard error to empirical standard deviation per
block, with a bootstrap standard error; below 1 means the reported standard errors
were too small.
"unknown". The query is outside the box, and no number is given. The lookup
does not extrapolate, because the study cannot say what happens beyond what it ran.
"estimator undefined in this regime". The nearest cell is one where most fits
returned no standard error, or the window held too few decay times for \(\beta\) to
be identified. No coverage is reported.
The measured box
Two types (plus a four-type satellite of 8 cells), pair decay, \(\rho \le 0.95\),
\(200 \le N \le 50\,000\), \(\beta\delta \le 0.13\) (where \(\delta\) is the timestamp
resolution), and \(\beta_{\min}T\) inside the range the grid spans. Anything else
returns "unknown" with a note saying which bound was crossed. The map has 128
cells; each was run at one fixed parameter set
(studies/theta0.json),
so the map describes those parameters at that \((N, \rho, \beta T)\), not every
process with the same summary numbers.
How to read distance
distance is the Euclidean distance to the nearest cell in grid-step units over
\((\log_{10} N,\ \rho,\ r,\ \log_{10}\beta_{\min}T)\), each axis divided by a typical
step. 0 is a grid point and 1 is about one step away. The lookup answers however
large the distance is. It does not refuse a far-away cell, so a "measured"
status with a distance of 2 describes a cell two steps from your regime.
The six hypotheses
The study pre-registered six hypotheses. The table is generated from
studies/results/analysis/hypotheses.json when this page is built. Where the
admissible readings of a standard error disagreed, the label is the least
favourable one any of them gave.
Hypothesis |
Status |
T |
tau |
SE |
z |
p |
Holm |
Final label |
|---|---|---|---|---|---|---|---|---|
H6.1 |
exploratory |
0.2325 |
0.05 |
0.0367 |
4.98 |
3.25e-07 |
outside family |
confirmed (exploratory) |
H6.2 |
exploratory |
0.171 |
0.9 |
0.00842 |
86.59 |
<1e-300 |
outside family |
confirmed (exploratory) |
H6.3 |
confirmatory |
0.01672 |
0 |
0.00589 |
2.84 |
0.00224 |
step 3, 0.025 met |
not confirmed |
H6.4 |
confirmatory |
-1.696e+07 |
0.01 |
3.5e+06 |
-4.85 |
1 |
step 4, 0.05 missed |
not confirmed |
H6.5 |
confirmatory |
0.7791 |
1 |
0.0114 |
19.35 |
1.08e-83 |
step 2, 0.01667 met |
confirmed |
H6.6 |
confirmatory |
0.7751 |
0.02 |
0.0112 |
67.24 |
<1e-300 |
step 1, 0.0125 met |
confirmed |
H6.5, confirmed. The reported standard errors understate sampling spread. This is the headline result.
H6.6, confirmed but mostly mechanical. The
reliableverdict separates coverage because 96.4 percent ofunreliablereplications carry no standard error, and a replication without one counts as a miss. Among replications that do carry one, a post hoc check gives a separation of about +0.07 +/- 0.04. The verdict marks fits that produced an interval; it does not detect an interval that is wrong.H6.3, not confirmed. Coverage does not fall monotonically toward criticality.
H6.4, not confirmed. Timestamp quantisation moved the decay estimate downward at \(N \ge 10\,000\), the opposite of the hypothesis.
H6.1 and H6.2, confirmed (exploratory). They replicate a direction found before the study was designed, so they are labelled exploratory and carry no headline.
The paper draft is generated from the same analysis:
paper/draft.md.
The submission version, with every number generated from the same outputs, is
paper/main.tex.
Using the map from a fit
fit(..., se_method="auto") reads this map for you. After the fit it looks the
regime up and decides: where an estimated block’s two-standard-error interval
around the measured q excludes 1 it switches to the bootstrap, where the map has
no measurement it keeps the Hessian interval and says it is uncalibrated, and where
the map reports the estimator undefined it reports no interval. The result records
which happened in se_source, se_note and auto. The policy is The se_method="auto" policy;
the study that measured whether the switch helps is docs/preregistration_auto.md
in the repository.