estimate_rul
Estimate remaining useful life (RUL) by analyzing degradation trends from multiple measurements over time, requiring a statistically significant increasing trend before computing RUL.
Instructions
Estimate Remaining Useful Life from repeated measurements over time.
RUL is only physically meaningful when fitted on a degradation trend
across MULTIPLE measurements of the same machine taken at different
times (days/weeks/months apart). This tool refuses a single
recording or single point — for within-recording screening use
analyze_signal_trend instead.
Two mutually exclusive input routes (both need `timestamps`, one
entry per measurement, strictly increasing, in `time_unit`):
1. `feature_values`: the degradation indicator already measured
externally (e.g. RMS velocity trended by a data collector).
2. `signal_ids`: one stored signal per measurement session (loaded
via load_signal); each recording is reduced to a single
`feature_name` value.
The degradation indicator is assumed to RISE toward
`failure_threshold`. A statistically significant increasing trend
(slope p-value < 0.05) is required before any RUL is computed; a
flat/insignificant series returns status 'no_degradation_trend'
with no RUL number.
Args:
ctx: MCP context for user communication.
failure_threshold: Indicator value considered as failure, in the
same units as the feature values. No universal default is
imposed — but when the indicator is broadband VELOCITY RMS
in mm/s, the standard choice is the ISO 10816-3:2009 zone
C/D boundary that assess_severity / get_zone_boundaries()
reports for the machine's group and support (single source
of truth — no boundaries restated here).
timestamps: Measurement times in `time_unit`, strictly
increasing (e.g. hours since first measurement).
feature_values: Indicator values, one per measurement
(mutually exclusive with signal_ids).
signal_ids: Stored signal IDs, one per measurement session
(mutually exclusive with feature_values).
feature_name: Time-domain feature used to reduce each signal
(default: "rms"). Ignored for feature_values input.
method: "linear" (default), "exponential", or "kalman"
(kalman needs approximately uniform measurement spacing).
time_unit: Label for the time axis; RUL and
observation_horizon are expressed in this unit.
Returns:
RULEstimationResult with status, rul (only when estimated),
fit_r_squared (goodness of fit — NOT a confidence),
observation_horizon, and a plain-language message.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | linear | |
| time_unit | No | hours | |
| signal_ids | No | ||
| timestamps | Yes | ||
| feature_name | No | rms | |
| feature_values | No | ||
| failure_threshold | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rul | No | Estimated remaining useful life in time_unit (only when status='estimated') | |
| method | Yes | Estimation method used: linear, exponential, or kalman | |
| status | Yes | 'estimated' (RUL computed), 'no_degradation_trend' (no statistically significant trend toward the threshold — healthy outcome, no RUL number), or 'threshold_already_exceeded' (last measurement is at/above the failure threshold). | |
| message | Yes | Human-readable explanation of the outcome and its caveats | |
| time_unit | Yes | Unit of timestamps, observation_horizon, and rul | |
| feature_name | Yes | Degradation indicator tracked (e.g. 'rms') | |
| current_value | Yes | Most recent measured indicator value | |
| fit_r_squared | No | R-squared of the fitted degradation curve on the observed data. Goodness of fit only — NOT a confidence or probability. None for the kalman method. | |
| trend_p_value | No | Two-sided p-value of the series' linear slope (None when not computable). The trend gate requires p < 0.05. | |
| estimated_rate | No | Estimated degradation rate in feature units per time_unit (linear/kalman) | |
| rul_interval_95 | No | [lower, upper] approximate 95% interval from the delta-method variance (kalman only). Coverage not validated — treat as an order-of-magnitude band. | |
| num_measurements | Yes | Number of measurements in the series | |
| failure_threshold | Yes | Indicator value considered as failure | |
| observation_horizon | Yes | Time span covered by the measurement series (last minus first timestamp), in time_unit. RUL estimates far beyond this horizon are extrapolations with low reliability. | |
| precision_heuristic | No | Heuristic in [0,1]: 1 - rul_std/rul, clipped (kalman only). This is a heuristic, NOT a statistical confidence — do not present it as a probability of correctness. |