Popular Post

_

Thursday, September 10, 2026

Applying ANF to Runner Training Data: Load Boundaries, Change, and Training Cycles

In my previous posts, I discussed the idea of the Area of Normal Functioning — ANF — as a way to describe how dynamic systems normally behave, when they move outside their normal range, and when their “normal” itself changes.

Most of my earlier work came from computer-system performance analysis: capacity, workload, anomalies, change points, and trends. But I am now exploring whether the same logic can be applied to human performance systems, especially sport-science data.

After my first ANF experiment with the SoccerMon dataset, I tried another open dataset: Injury Prediction for Competitive Runners.

Dataset source:
https://github.com/sonicjoy/Injury-Prediction-for-Competitive-Runners

For this first analysis, I selected one runner with a long usable history and focused on a simple metric:

weekly total kilometers (total kms)

In sport terms, this is a basic measure of external training load.

Building the ANF

For each week, I calculated ANF boundaries using the previous 12 weeks of data:

  • CL = rolling P50
  • UCL = rolling P99
  • LCL = rolling P01

The area between LCL and UCL represents the runner’s recent normal weekly load range.

This is important: the ANF is not fixed. It moves as the runner’s recent training pattern changes.

Figure 1 — Full-history ANF chart

The full chart shows that the runner’s normal weekly load was not constant. The ANF band moves up and down over time, reflecting changes in the runner’s typical training level.

This is already useful. Instead of looking only at isolated high or low weeks, ANF shows the evolving “normal” range of the athlete.

One especially interesting feature is the major downward shift late in the series. The actual weekly load drops, but more importantly, the ANF boundaries also move downward. In ANF terms, this means the runner’s normal load range changed.

This does not prove the cause. It could be related to injury, recovery, a change in training plan, seasonality, reduced availability, or another contextual factor. But the pattern is meaningful:

the runner was no longer operating within the same normal load range as before.

Figure 2 — Zoomed view of the late shift


The zoomed chart makes the late downward shift easier to see. Before the shift, the runner’s normal weekly distance was much higher. After the shift, both the center line and ANF boundaries moved to a lower level.

This is a good example of why ANF may be useful. It helps distinguish between:

  • a one-week anomaly,
  • a temporary fluctuation,
  • and a real change in the underlying functional regime.

I also reduced the sensitivity of change-point detection so that the chart highlights only major regime changes. This produced a cleaner and more interpretable result.

Possible oscillation and training cycles

Another interesting observation is that the ANF band seems to move in repeated waves. It does not simply drift randomly.

A preliminary periodicity check suggested a broad recurring cycle around 46 weeks, with additional medium-scale patterns roughly in the 28–40 week range.

I would not over-interpret this yet, but it may reflect:

  • seasonality,
  • training macrocycles,
  • buildup and recovery phases,
  • or repeated changes in the runner’s training plan.

This is an interesting extension of the ANF idea. ANF may help detect not only anomalies and change points, but also repeated shifts in the normal operating range of a human performance system.

Why this matters

In computer performance engineering, we often ask:

  • What is normal behavior?
  • When is the system outside normal limits?
  • Has the system changed?
  • Is there a trend?
  • Is there a recurring pattern?

The same questions can be meaningful for athlete data.

This runner example shows that ANF can describe:

  • a typical weekly load range,
  • unusually high or low load weeks,
  • a major downward regime shift,
  • and possible periodic training structure.

For me, the most important finding is not simply that the runner’s load dropped. The more interesting point is that the runner’s normal range moved downward.

That is exactly the type of behavior ANF is designed to capture.

First conclusion

This is still an exploratory analysis, but it provides another encouraging proof of concept for applying ANF beyond technical systems.

A runner, like a computer system, has a changing area of normal functioning. That area can expand, contract, shift, oscillate, or break.

Understanding those changes may be useful not only for performance engineering, but also for sport science, training analysis, and broader human-performance research.

No comments:

Post a Comment