{"id":"c5af6d60-e419-4c0c-90c7-443b4d0270aa","arxiv_id":"2607.19961","paper_version":1,"verdict":"CONDITIONAL","confidence":"MODERATE","novelty_score":4.0,"correctness_risk":"medium","formal_verification":"none","parameter_count":4,"one_line_summary":"A single R/Python package now implements the focus family of exact online changepoint detectors, with convex-hull pruning and a claimed per-iteration cost of O(log(n)^d) for d-dimensional data.","lead":"This paper ships a unified R and Python package, focus/focus-cpt, for online changepoint detection via exact generalised likelihood ratio tests across several distribution families. It matters to practitioners because it promises logarithmic per-observation cost by pruning changepoint candidates via convex-hull geometry.","discovery_kind":"extension","skeptic_critique":{"model":"deepseek-v4-flash","headline":"Abstract's unconditional 'exact, without approximations' claim is internally contradicted by the projection-based approximate multivariate mode for d>5, which can omit true GLR-maximizing hull vertices.","rationale":"The reader's CONDITIONAL verdict already identifies the projection-based approximation as a source of tension with the exactness claim, and our stress test confirms that this is the most load-bearing concern: the abstract's central claim is unqualified, while Section 2.3 and Section 4.2 provide direct evidence that the high-dimensional mode is approximate. We agree that the paper should be accepted only conditionally, with the exactness claim scoped to the full-hull low-dimensional mode and the projection mode described as approximate. We diverge partially from the reader's emphasis: the expected hull-size O(log(n)^d) bound is a performance assumption and is less damaging to the paper's scientific contribution, since the low-dimensional algorithm remains exact. The single most consequential issue is the internal inconsistency between the abstract and the multivariate implementation. The proposed test would settle whether the projection mode can materially change the GLR statistic; even without that test, the paper's own reported relative difference already shows that 'exact' is incorrect for this mode.","tokens_in":25400,"tokens_out":7062,"duration_ms":80022,"concrete_test":"Construct a d=6 or d=8 data stream where a full-hull vertex is supported by a hyperplane with nonzero coefficients in all coordinates, so that its projections onto every 2-coordinate subset are interior. Run focus_offline with type='multivariate' (full hull) and with dim_indexes = generate_projection_indexes(d,2) on the same data. Compare the stat trace and detected changepoint. If any full-hull statistic exceeds the projection-based statistic, or the detected changepoint differs, the projection mode is not exact. Additionally, verify that the Section 4.2 relative difference (0.00378) is not a one-off Monte Carlo fluctuation by rerunning over several seeds and sequence lengths.","verdict_should_be":"UNCHANGED","load_bearing_attack":"The paper's strongest claim is that the implemented focus algorithms compute the GLR statistic 'exactly, without introducing approximations' at O(log(n)^d) cost. That claim is not supported for multivariate data with d>5. Section 2.3 explicitly introduces an approximate mode: data are projected onto overlapping subsets of d-tilde<=5 coordinates, a convex hull is computed in each projection, and the union of those lower-dimensional hull vertices is used as the candidate set. A point that is a vertex of the full (d+1)-dimensional hull can fail to be a vertex of every coordinate projection — for example, if its supporting hyperplane uses all coordinates. Such a point can be the unique maximizer of the GLR statistic, so the projection-based detector may compute a statistic strictly smaller than the exact GLR. This is not a merely theoretical worry: Section 4.2 reports a nonzero relative difference (0.003782673) between the full-hull and projection-based statistics on a single 6-dimensional example. The package's own documentation therefore contradicts the abstract's unconditional exactness claim: exactness holds only for the low-dimensional full-hull mode, while the high-dimensional mode is approximate. The central claimed contribution — exact GLR with logarithmic cost — is thus not delivered for the high-dimensional case as stated.","agreement_with_reader":"partial"},"referee_report":{"model":"deepseek-v4-flash","summary":"The paper describes an R and Python package (focus / focus-cpt) implementing the focus family of online changepoint detectors. The core algorithmic idea, imported from previous work by the same group, is to reduce the set of candidate changepoints to geometric extreme points of a data-dependent convex hull, so that the generalized likelihood ratio statistic can be evaluated exactly at a claimed per-iteration cost of roughly log(n)^d for a d-dimensional stream. The package covers one-parameter exponential family models (Gaussian, Poisson, Binomial, Exponential, Gamma), a nonparametric eCDF-based detector, and a detector for autoregressive data, and it provides both online and offline interfaces backed by a shared C++ implementation. The manuscript gives an algorithmic overview, a detailed interface description, and several simulated and real-data examples. The central advertised contribution is that the implementation delivers exact GLR statistics without approximations while remaining fast enough for real-time use.","tokens_in":25685,"tokens_out":5397,"duration_ms":53401,"significance":"If the claims are properly qualified, this is a useful software contribution: it unifies several methodological papers into one maintained package with R and Python interfaces, a shared C++ backend, and reproducible example code on GitHub. The package is available on CRAN and PyPI, which is a concrete strength. However, the headline exactness claim is currently overstated: the body of the paper explicitly introduces an approximate high-dimensional mode that does not compute the full exact GLR statistic. The complexity guarantee is also stated inconsistently and is inherited from an expected-size result rather than established here. These issues are fixable, but they affect the central claims of the paper and should be addressed before publication.","major_comments":[{"comment":"The abstract and Section 1 state that focus computes the GLR statistic 'exactly, without introducing approximations' at O(log(n)^d) cost. Section 2.3, however, introduces for d>5 a projection-based mode: data are projected onto overlapping subsets of d-tilde <= 5 coordinates, hulls are computed in each projection, and the union of the lower-dimensional hull vertices is used as the candidate set. A vertex of the full (d+1)-dimensional hull whose supporting hyperplane uses all coordinates need not be a vertex of any projection, so this candidate set can miss the GLR maximizer. Section 4.2 confirms the issue: all.equal reports a mean relative difference of 0.003782673 between the full-hull and projection-based statistics. Exactness therefore holds only for the full-hull mode; the abstract's unconditional 'without introducing approximations' claim is not supported as written and should be qu","section":"Abstract; Section 2.3; Section 4.2"},{"comment":"The paper advertises two incompatible complexity statements. The abstract and Section 1 say the per-iteration cost is approximately log(n)^d, while Section 2.3 says the univariate pruning is amortised O(1); for d=1 these differ by a factor of log n. More importantly, the O(log(n)^d) growth is cited from Corollary 1 of Pishchagina et al. (2025) as an expected hull-size result, but the present paper gives no statement of the conditions under which this expectation holds. Because real-time performance is central to the paper's motivation, either reproduce the relevant bound with its assumptions or clearly state that the efficiency guarantee is inherited and is expected/average-case rather than worst-case.","section":"Section 2.3; Section 1"},{"comment":"Proposition 1 prunes only points in the interior of the convex hull, yet the text immediately concludes that D_n is contained in the set of hull vertices. This inference is not immediate: a point on a facet of the hull but not a vertex is not interior, and it can be an argmax of <P(tau), psi> only when the same maximum value is also attained by a hull vertex. To support the stated exactness for general exponential-family models, the paper should either prove that omitting boundary non-vertices cannot change the value of max_tau q_tau, or specify that the algorithm retains such points or resolves ties in a way that preserves the maximum. As written, the proposition alone does not establish the claimed reduction to vertices.","section":"Section 2.2, Proposition 1"}],"minor_comments":[{"comment":"Typo: 'unvariate' should be 'univariate'.","section":"Section 1"},{"comment":"Only 500 Monte Carlo replications are used to estimate a 99th percentile threshold. This gives a noisy estimate; please report a standard error or use more replications.","section":"Section 4.1"},{"comment":"The text says the projection-based approximation produces 'extremely similar results' despite a reported mean relative difference of 0.0038. Please quantify this more carefully, e.g., with the maximum relative difference and the effect on detection times, since the difference is exactly the kind of approximation error the abstract denies.","section":"Section 4.2"},{"comment":"The x-axis of Figure 6 appears to be game index, but the text refers to '640 games' and later to 1000; please clarify the sample size and axis labeling.","section":"Figure 6"},{"comment":"The Python and R examples intentionally produce different stopping times due to different RNGs. This is fine, but the discrepancy may confuse readers; consider a sentence noting that the algorithms are identical and the difference is purely the random seed/stream.","section":"Appendix A"}],"recommendation":"major_revision","confidential_remarks":"The abstract's unconditional exactness claim is likely to be challenged by reviewers and readers. The body of the paper already contains the necessary qualifier in Section 2.3, so the fix is wording and framing, but it is load-bearing and should be required. The complexity claim also needs to be stated with its assumptions. No concerns about novelty or citation fairness beyond the fact that several key results are from closely related prior papers; this is acceptable for a software paper if properly cited."},"author_rebuttal":null,"desk_editor":{"model":"deepseek-v4-flash","letter":"Quick take: this is a competent software paper that puts the focus family of online changepoint detectors into a single R/Python package with a shared C++ backend. The algorithms themselves are not new—they are cited to earlier papers by mostly the same group—and the paper is honest about that. What is new is the unified interface, the parity between R and Python, and a clean set of worked examples that show practitioners how to use the detectors. The package appears to exist and work; the examples run, including a custom cost function, a nonparametric detector, an AR detector, and real-data applications. The code and a reproducible notebook are on GitHub. That is real value.\n\nThe main soft spot is the abstract. It says the package computes the GLR statistic 'exactly... without introducing approximations' at roughly log(n)^d cost. That is true for the full-hull mode used when d is small (d <= 5). But Section 2.3 openly describes a projection-based approximation for higher dimensions: the data are projected onto overlapping subsets of at most five coordinates, and the union of those lower-dimensional hull vertices is used as the candidate set. A point can be a vertex of the full hull yet fail to be a vertex of any coordinate projection, so the GLR statistic can be under-computed. The paper's own Section 4.2 shows a 0.0038 relative difference between full-hull and projection-based statistics on a six-dimensional example. So the unconditional exactness claim in the abstract is not supported for the high-dimensional mode. The body is transparent about the approximation; the abstract just needs to match it.\n\nA second, less serious issue: the paper does not include a systematic benchmark against baselines or a test suite. The runtime comparison in Section 4.2 is a single example. For a software paper that is acceptable, but it would be stronger with a few lines of evidence that the package gives the same results as the original implementations and runs at the claimed complexity. Also, the paper cites the expected hull-size O(log(n)^d) bound from earlier work rather than proving it; that is fine for a software paper as long as the citations are clear, and they are.\n\nWho is this for? Practitioners in changepoint detection who want a ready-to-use, exact online GLR detector, and methodologists who want a reference implementation they can extend. The paper deserves a serious referee, and it can be accepted after the abstract is qualified and the benchmark question is addressed, though I would not insist on a full benchmark.","headline":"A solid, useful software paper for the focus changepoint family; the abstract's unconditional 'exact, without approximations' claim is too broad because the high-dimensional projection mode is approximate.","tokens_in":26227,"tokens_out":3013,"would_cite":true,"duration_ms":29238,"reading_group":"maybe","serious_thinker":"yes","would_accept_peer_review":true},"rs_alignment":null,"lean_confirmation":null,"pith_extraction":{"msc":["62L10","62M10"],"pacs":[],"model":"deepseek-v4-flash","headline":"Exact GLR changepoint detection is now fast enough to run online","keywords":["changepoint detection","online algorithms","Generalised Likelihood Ratio","convex hull pruning","exponential family","R package","Python package","autoregressive detection"],"falsifier":"Run the univariate detector on a deterministically convex sequence (e.g., y_t = exp(t)) and count the number of active candidates after each update; if the count grows linearly or per-step wall-clock time grows linearly, the log-cost claim is false for that stream. Separately, compare the full-hull and projection-based statistics on a high-dimensional stream with a change confined to dimensions not covered by the chosen projections; a large discrepancy in the statistic or a missed detection would show the approximation sacrifices exactness.","tokens_in":25298,"feed_emoji":"📈","tokens_out":2760,"duration_ms":29997,"temperature":0.7,"pith_summary":"This paper presents focus and focus-cpt, R and Python packages that implement the focus family of online changepoint detection algorithms. The central claim is that the Generalised Likelihood Ratio statistic for a single changepoint can be computed exactly, with no approximation, while the per-iteration cost grows only logarithmically with the length of the observed sequence (log(n)^d for d-dimensional data). This is achieved by pruning the set of candidate changepoint locations to the vertices of a convex hull built from the data, because any candidate lying inside the hull can never be the maximizer. If correct, this means practitioners can run exact likelihood-ratio changepoint detection in real time on streams of counts, means, variances, and other exponential-family data, rather than resorting to approximate or costly methods.","feed_headline":"Exact online changepoint detection runs at log(n)^d cost","feed_subtitle":"An R/Python package prunes candidates to convex-hull vertices, keeping the GLR statistic exact on streams.","key_machinery":"The key object is the geometric map from changepoint candidates to points P(τ) = (τ, cumulative sufficient statistics) in R^{d+1}, together with the convex hull of those points. The log-likelihood of a change at τ is the scalar product of P(τ) with a model-dependent vector ψ(θ0, θ1), so the argmax over τ is exactly the support point of the hull in the direction ψ. Pruning candidates that lie in the interior of the hull removes all points that cannot win, and the number of hull vertices bounds the per-iteration cost. This geometry is what carries the exactness and the logarithmic complexity claim.","core_discovery":"The paper establishes that the GLR statistic for a single changepoint can be maintained exactly in an online fashion by exploiting a convex-hull geometry: each candidate changepoint τ is mapped to a point P(τ) = (τ, Σ_{t≤τ} T(y_t)) in dimension d+1, and the log-likelihood difference for a change at τ is a scalar product of P(τ) with a model-dependent vector. Proposition 1 shows that if P(τ′) lies in the interior of the convex hull of all candidate points, then τ′ can never be the maximiser for any pre- and post-change parameters and can be permanently discarded. Hence the active candidate set is contained in the hull vertices, whose expected size grows only as O(log(n)^d). The package implem","pith_inferences":["The convex-hull pruning insight is not limited to GLR: any sequential test whose statistic is a maximum of linear functions over candidates could reuse the same hull maintenance to update its argmax exactly in sublinear time.","The projection-based approximation for high dimensions may miss changes whose signal is concentrated entirely in dimensions not jointly projected; the exposed dim_indexes argument turns this into a modelling choice, but the paper does not quantify worst-case power loss.","The lambda weighting mechanism generalises the detector to covariate-scaled rates (e.g., Poisson data with time-varying background), which suggests the same geometric pruning could support non-stationary exposure models without algorithmic change.","If a stream's convex hull grows linearly rather than logarithmically, the speed guarantee would degrade gracefully but not hold; a window-limited fallback or a size cap on the candidate set would be a natural robustness extension."],"forward_implications":["Real-time monitoring of counts, means, variances, and other exponential-family streams can now use exact GLR statistics at each time step instead of approximations, at logarithmic per-observation cost.","Offline threshold calibration becomes practical: focus_offline computes full statistic traces in one pass, enabling Monte Carlo-based false-positive-rate thresholds without rerunning the algorithm for every threshold.","Because R and Python share the same C++ backend, results are identical across interfaces, which reduces replication risk and makes the package a reliable common tool for practitioners.","For high-dimensional streams, the projection-based hull approximation offers a large speedup at the cost of a small difference in the statistic, as illustrated by the paper's comparison on six-dimensional data.","The AR(p) detector accounts for the transient residual behaviour after a change, preserving detection power near the end of the stream where naive pre-whitening would lose it."],"fun_headline_variants":["Exact changepoint detection at log(n)^d speed","Prune to hull vertices for exact online changepoints","Online changepoints: exact GLR without approximations","Convex hull trims changepoint candidates to log(n)^d"],"cache_read_input_tokens":2304,"weakest_assumption_plain":"The claimed logarithmic per-iteration cost rests on the expected number of convex-hull vertices growing only as log(n)^d, and on the pruning rule correctly discarding every candidate whose point lies in the interior of the hull; if a stream produces a hull with linearly many vertices, or if the projection shortcut in high dimensions drops a vertex that carries the true change, the speed or exactness is lost.","fun_headline_variants_meta":{"raw":{"variants":["Exact changepoint detection at log(n)^d speed","Prune to hull vertices for exact online changepoints","Online changepoints: exact GLR without approximations","Convex hull trims changepoint candidates to log(n)^d"]},"model":"deepseek-v4-flash","effort":"low","cost_usd":0.00061,"raw_usage":{"total_tokens":2644,"prompt_tokens":683,"completion_tokens":1961,"prompt_tokens_details":{"cached_tokens":256},"prompt_cache_hit_tokens":256,"prompt_cache_miss_tokens":427,"completion_tokens_details":{"reasoning_tokens":1891}},"tokens_in":427,"tokens_out":1961,"duration_ms":12984,"temperature":1.0,"reasoning_tokens":1891,"cache_read_input_tokens":256,"cache_creation_input_tokens":0},"cache_creation_input_tokens":0},"created_at":"2026-08-01T11:10:16.064494+00:00","model_set":{"reader":"deepseek-v4-flash"},"falsifier":"Run the univariate detector on a deterministically convex sequence (e.g., y_t = exp(t)) and count the number of active candidates after each update; if the count grows linearly or per-step wall-clock time grows linearly, the log-cost claim is false for that stream. Separately, compare the full-hull and projection-based statistics on a high-dimensional stream with a change confined to dimensions not covered by the chosen projections; a large discrepancy in the statistic or a missed detection would show the approximation sacrifices exactness.","supporting_citations":[],"review_version":1}