Aircraft Usage & Maintenance Analysis

Author

Will Schneider

Large-cabin Business Jet

Executive summary
  • Maintenance: recurring quarterly cost waves with short reversals; align inspections and spares to this rhythm.
  • Flight hours: upward drift with a 2–3-month operating rhythm and strong near-term persistence.
  • Planning horizon: 1–4 months where signal exists; otherwise treat as event-driven.
  • Data window: [Apr-2021 – July-2025]. Last updated: 2025-09-09.

Analysis

Variable Analysis

Maintenance

Trend Seasonality/Cycle Near-term persistence
flat present (quarterly) yes

Interpretation of Time Series Components

Monthly costs show short‑term reversals and a recurring cycle about every 4 months, matching the ACF and spectrum.

Trend: Shows the general, long-term direction of maintenance costs over time. It helps us understand whether costs are generally rising, falling, or remaining stable.

Seasonal:Reflects predictable fluctuations within each year. Positive values indicate months when costs typically exceed the overall trend, and negative values indicate months when costs are typically below trend.

Noise: Represents unpredictable, irregular variations in maintenance costs. This is the leftover variation once the trend and seasonal patterns are accounted for.

Interpretation of Sample Autocorrelations & Spectral Density

Realization (left plot):

Monthly maintenance costs vary substantially month-to-month, with no consistent long-term upward or downward trend visible.

Takeaway: plan for short bursts and pullbacks rather than a smooth trend.

Autocorrelations (middle plot):

Autocorrelation measures how closely each month’s costs depend on previous months. Costs exhibit moderate predictability every 3-4 months—high-cost months tend to be followed by lower-cost months several periods later, showing short-term reversals.

Takeaway: near‑term scheduling and staffing can be adjusted on a 1–4 month horizon; beyond that, past values carry little signal.

Spectral Density:

Spectral density identifies how strongly certain cycles repeat throughout the entire data set. Analysis reveals a robust quarterly pattern, confirming costs consistently cycle every 4 months (\(1/f = 1/0.25 = 4\)). This aligns directly with month-to-month observations from autocorrelation.

Takeaway: expect recurring cost waves roughly every quarter; align inspections and spares accordingly.

In short, maintenance costs demonstrate clear quarterly cyclicality, with costs alternating regularly, and this recurring pattern persists throughout the historical data.

Flight Hours

Trend Seasonality/Cycle Near-term persistence
flat weak no

Interpretation of Sample Autocorrelations & Spectral Density

Monthly flight activity shows sharp month-to-month swings with no stable long-term trend.

Overall Pattern:
Flight hours exhibit high month-to-month volatility without a clear upward or downward long-term trend. Activity fluctuates sharply, reflecting erratic flight demands.

Month-to-Month Dependence (Autocorrelation):
There is minimal short-term persistence—previous months provide little predictive insight. However, a faint yearly rhythm (12-14 months) suggests that certain months may mildly repeat patterns seen one year earlier, though this pattern is subtle.

Takeaway: past values add limited predictive value beyond the next few months; avoid assuming carryover effects and treat spikes as transient rather than persistent.

Recurring Cycles (Spectral Analysis):
Spectral analysis shows only a weak indication of a 3-month cycle. Unlike maintenance costs, there’s no clear, strong cyclic pattern here.

Takeaway: no durable seasonal cycle; plan hours on observed demand and operations, not on fixed seasonality.

Bottom line: use external drivers and operational context for planning; naive extrapolation of monthly hours is weak.

Variable Comparison

MX & Flight Hours

Seasonality

Vector Autoregression (VAR) Analysis

Model Selection

What this does: Forecasts next-month maintenance and hours together so each can inform the other.

Why this matters: Produces consistent month-ahead projections for both series and captures cross-effects without over-relying on any single trend.

[1] "The Logged MX Data is: Stationary (0.05 confidence level)"
[1] "The Logged MX Data is: Non-Stationary(0.05 confidence level)"
Obs -0.01917548 -0.1147517 -0.07662087 0.1989264 -0.1594439 -0.0803169 0.2515505 0.0589387 -0.01798786 -0.1112716 -0.07612201 -0.1622957 
[1] 0.3488594
Obs -0.01917548 -0.1147517 -0.07662087 0.1989264 -0.1594439 -0.0803169 0.2515505 0.0589387 -0.01798786 -0.1112716 -0.07612201 -0.1622957 0.08736132 0.01976597 0.04187523 0.005334024 -0.0179761 -0.1503146 0.07846756 0.08467874 0.05113241 -0.1084868 0.2814894 2.961895e-05 
[1] 0.3579254

Testing

What this does: We hold out the last six months, fit the model on earlier data, forecast six steps, and compare forecasts to actuals. All results are returned to original units for a direct, apples-to-apples check of accuracy.

1

[1] 2.703611
[1] 27183.34

Deployment

What this does: We refit on the full history and generate multi-step forecasts for both series. We publish maintenance on its original scale and include hours as needed for planning and capacity decisions.

Forecasts are most reliable inside 1–3 months; uncertainty widens beyond that.

VARX: Nowcasting Maintenance with Known Same‑Month Flight Hours

Preface

Important

Bottom line: When current-month flight hours are known, VARX gives a better same-month maintenance nowcast and keeps multi-month forecasts aligned with operations.

We receive flight hours for month t about two weeks before maintenance costs for month t are finalized. A standard VAR uses only past values and cannot use those known same-month hours. VARX solves this by keeping maintenance as the modeled series and adding flight hours (current month plus optional lags) as external inputs. This lets us publish a maintenance nowcast for month t as soon as hours for t are available and uses the 0–2 week information lead on hours.

Why show VARX next to the baseline VAR - VAR: joint model using lags only. Use when current hours are not yet known. - VARX: adds known current hours H_t (and recent lags if helpful). Use when hours arrive first and you need a same-month maintenance nowcast.

Process This mirrors the baseline VAR workflow with one change: hours are added as external inputs. Stability checks, constant or trend selection, lag order p, diagnostics, backtesting, and deployment remain the same.


VARX Model Selection (hours as exogenous)

Parts & Labor as Additional Endogenous Variables

Because VAR works with at least 2 endogenous variables, and because we are turning Flight Hours into a exogenous variables for the purpose of maintaining more realistic modeling expectations of the flow and delivery sequences of the data, we will include two additional variables in additional to Total Maintenance. These are Parts & Labor, which are sub-costs of Total Maintenance. In addition to improving the functionality of the model, these variables may also prove to explain additional makeup of the analyses and forecasts.

Obs 0.02834691 -0.001526177 0.07364602 0.1032121 -0.1031722 -0.0965174 0.1646825 0.02035853 -0.248515 0.0110596 -0.1373718 -0.06401822
Obs -0.1630205 0.07295282 0.04916672 -0.1178231 0.02404812 -0.09276493 0.01421663 0.1914904 -0.09731188 0.1446444 -0.05544164 0.003662337
Obs 0.01116721 -0.03394459 0.145519 0.07380859 -0.05116777 0.1450612 -0.09929817 -0.1090613 -0.2992921 -0.1741096 -0.03825385 -0.1330514 
Obs 0.02834691 -0.001526177 0.07364602 0.1032121 -0.1031722 -0.0965174 0.1646825 0.02035853 -0.248515 0.0110596 -0.1373718 -0.06401822 0.02737674 0.03135356 0.01437647 -0.05050614 0.08608411 -0.09373562 0.06371606 0.04139797 -0.005743184 0.02140142 0.1238662 0.04177224
Obs -0.1630205 0.07295282 0.04916672 -0.1178231 0.02404812 -0.09276493 0.01421663 0.1914904 -0.09731188 0.1446444 -0.05544164 0.003662337 0.2182139 -0.2948831 0.2455375 0.025611 -0.08783088 -0.0194541 -0.07790866 -0.02150486 0.1143105 -0.1310368 0.1455645 -0.2024111
Obs 0.01116721 -0.03394459 0.145519 0.07380859 -0.05116777 0.1450612 -0.09929817 -0.1090613 -0.2992921 -0.1741096 -0.03825385 -0.1330514 -0.09086213 -0.1325488 -0.1565157 -0.02126392 0.1835193 -0.06750432 0.123521 -0.0143686 0.007047407 0.1746563 0.3026583 0.06092517 

VARX Backtest on a Split (uses realized hours as exogenous path)

When hours for month t are known, build X_future with H_t and its lags (\(H_{t−1}, H_{t−2}\)).

Deployment (full re‑fit) and multi‑step forecasts

For horizons >1, you must provide an exogenous path for hours: - Nowcast (h=1): use known H_t and known lags. - Short‑term forecast (h>1): provide hour scenarios or forecast hours in a separate model and pass them via dumvar.

Flight Hours

In order to get a more accurate forecast, estimating flight hours via means, seasonality, and/or AR modeling will further improve the accuracy of the VARX model where Flight Hours is an endogenous variable

         H_t       L1        L2
used      15 12.95665 0.2226325
expected   9 12.95665 0.2226325

Notes for decision-makers

  • When hours are trending: We use the change in hours rather than the raw level. This makes short-term signals cleaner.
  • If we also need an hours forecast: We run a simple hours forecast and feed those results into the maintenance model so both move together.
  • Method consistency: Same settings as the baseline VAR. The only change is adding flight hours as an input.

Small-cabin Business Jet

Executive summary
  • Maintenance: steady baseline after logging; event-driven spikes; no durable seasonality.
  • Flight hours: high volatility with minimal persistence; no reliable cycle to plan around.
  • Planning horizon: 1–3 months for tactical adjustments; otherwise treat as event-driven.
  • Data window: [May-2022 – July-2025]. Last updated: 2025-09-09.

Analysis

Variable Analysis

Maintenance

Trend Seasonality/Cycle Near-term persistence
flat (post-log) none no

Interpretation of Sample Autocorrelations & Spectral Density

Monthly maintenance costs vary month-to-month within a narrow band after logging; large spikes are rare and isolated.

Realization (Logged Data):
Maintenance costs fluctuate month-to-month within a relatively narrow and stable range after log transformation. This indicates that routine maintenance expenses are generally steady, apart from occasional large, isolated events.

Autocorrelations (middle plot):
Minimal correlation is observed month-to-month, suggesting maintenance costs in any given month do not significantly predict future costs. Historical spending patterns provide limited forecasting value.

Takeaway: past months add little predictive value; budget and staffing should not assume carryover effects.

Spectral Density:
No consistent cyclicality or seasonal rhythms detected. The spectral analysis confirms that costs are driven primarily by irregular or isolated maintenance events rather than periodic patterns.

Takeaway: treat Small-cabin business jet maintenance as event‑driven; plan for variance, not seasonality.

Why Log Transformation?
The original data showed significant spikes due to a few extreme cost events. By applying a log transformation, we minimized the impact of these outliers, which improved our ability to see regular cost patterns and increased the reliability of our analysis

Flight Hours

Trend Seasonality/Cycle Near-term persistence
present (2–3 mo) yes

Interpretation of Sample Autocorrelations & Spectral Density

Monthly costs show short‑term reversals and a recurring cycle about every 4 months, matching the ACF and spectrum.

Realization:
Flight hours display a clear upward trend over the observed period, combined with notable short-term fluctuations. There’s a recurring pattern of increased activity every 2–3 months.

Autocorrelations (middle plot):
Flight hours show strong month-to-month persistence, especially from one month to the next, with noticeable predictability lasting up to roughly 10 months. Recent flight activity can provide valuable insight for forecasting several months

Takeaway: short-horizon signal only; use 1–4 month planning windows.

Spectral Density:
Analysis confirms a dominant short-term operating rhythm around every two to three months. Apart from this short cycle, no significant annual or longer-term seasonal patterns are evident. The overall upward trend also strongly influences the spectral profile.

Takeaway: expect a 2–3 month operating rhythm; schedule crews and maintenance windows accordingly without assuming fixed annual seasonality.

Implications for planning
Forecasting efforts should prioritize capturing short-term momentum (recent activity trends) and the observed 2–3 month operational rhythm. Long-term planning will benefit from anticipating general growth, but there is limited value in assuming consistent seasonal fluctuations.

Variable Comparison

MX & Flight Hours

Seasonality

Vector Autoregression (VAR) Analysis

Model Selection

[1] "The Raw MX Data is: Stationary (0.05 confidence level)"
[1] "The Logged MX Data is: Stationary (0.05 confidence level)"
[1] "The Flight Hour Data is: Non-Stationary(0.05 confidence level)"
$selection
AIC(n)  HQ(n)  SC(n) FPE(n)
     2      2      2      2

$criteria
                1         2          3         4          5          6
AIC(n)   4.696304  4.440890   4.605817  4.517086   4.553773   4.693837
HQ(n)    4.787400  4.592718   4.818376  4.790376   4.887795   5.088590
SC(n)    4.971129  4.898932   5.247076  5.341562   5.561466   5.884747
FPE(n) 109.662558 85.289540 101.513164 94.466127 100.698249 120.697091
AIC(n)
     2 
Obs -0.0559953 0.05743237 -0.0002195287 -0.05800009 -0.02860277 0.04934788 -0.04667461 -0.09373548 0.1257871 -0.08495879 0.05817289 -0.03837716 
[1] 0.9904487
Obs -0.0559953 0.05743237 -0.0002195287 -0.05800009 -0.02860277 0.04934788 -0.04667461 -0.09373548 0.1257871 -0.08495879 0.05817289 -0.03837716 0.1388799 -0.09817328 -0.002972955 -0.02464615 -0.03389081 -0.09437943 0.04736476 -0.04718713 0.05041281 0.1106535 -0.1698417 0.01704277 
[1] 0.9867977

Testing

[1] 1.371472
[1] 39139.36

2

Deployment

Forecasts are most reliable inside 1–3 months; uncertainty widens beyond that.

VARX: Nowcasting Maintenance with Known Same‑Month Flight Hours

Preface

We receive flight hours for month t about two weeks before maintenance costs for month t are finalized. A standard VAR uses only past values and cannot use those known same-month hours. VARX solves this by keeping maintenance as the modeled series and adding flight hours (current month plus optional lags) as external inputs. This lets us publish a maintenance nowcast for month t as soon as hours for t are available and uses the 0–2 week information lead on hours.

Why show VARX next to the baseline VAR - VAR: joint model using lags only. Use when current hours are not yet known. - VARX: adds known current hours H_t (and recent lags if helpful). Use when hours arrive first and you need a same-month maintenance nowcast.

Process This mirrors the baseline VAR workflow with one change: hours are added as external inputs. Stability checks, constant or trend selection, lag order p, diagnostics, backtesting, and deployment remain the same.


VARX Model Selection (hours as exogenous)

Parts & Labor as Additional Endogenous Variables

Because VAR works with at least 2 endogenous variables, and because we are turning Flight Hours into a exogenous variables for the purpose of maintaining more realistic modeling expectations of the flow and delivery sequences of the data, we will include two additional variables in additional to Total Maintenance. These are Parts & Labor, which are sub-costs of Total Maintenance. In addition to improving the functionality of the model, these variables may also prove to explain additional makeup of the analyses and forecasts.

Obs -0.06828613 0.02283816 -0.5762611 0.1062506 -0.1892963 0.2425002 0.06692879 0.07569532 -0.18475 -0.02136321 0.1749941 0.08219499
Obs 0.08569292 -0.120323 -0.399761 -0.1626059 0.08841484 0.1049501 0.06613789 -0.1645064 0.09025442 0.1162779 0.1240922 -0.1271671
Obs 0.02288215 0.02716222 -0.3161546 -0.1418211 0.001493391 0.05615 -0.1000505 0.04240034 0.09595192 0.09397556 -0.01223425 -0.1231971 
Obs -0.06828613 0.02283816 -0.5762611 0.1062506 -0.1892963 0.2425002 0.06692879 0.07569532 -0.18475 -0.02136321 0.1749941 0.08219499 -0.09903023 -0.3047305 0.03991742 0.03748895 0.2452704 -0.0174516 0.1669807 -0.2917149 -0.01725554 -0.1851549 0.2151575 -0.1039344
Obs 0.08569292 -0.120323 -0.399761 -0.1626059 0.08841484 0.1049501 0.06613789 -0.1645064 0.09025442 0.1162779 0.1240922 -0.1271671 -0.2848903 -0.181239 0.0008364903 0.2731182 0.1502731 -0.07783704 -0.01122785 -0.1007073 0.01122461 -0.02545393 0.08423216 -0.06220584
Obs 0.02288215 0.02716222 -0.3161546 -0.1418211 0.001493391 0.05615 -0.1000505 0.04240034 0.09595192 0.09397556 -0.01223425 -0.1231971 -0.2478924 -0.1070904 -0.1019867 0.1346825 0.1253769 0.07901887 -0.02679119 -0.04978716 0.01506201 -0.03808515 0.09151693 -0.02117352 

VARX Backtest on a Split (uses realized hours as exogenous path)

When hours for month t are known, build X_future with H_t and its lags (\(H_{t−1}, H_{t−2}\)).

Deployment (full re‑fit) and multi‑step forecasts

For horizons >1, you must provide an exogenous path for hours: - Nowcast (h=1): use known H_t and known lags. - Short‑term forecast (h>1): provide hour scenarios or forecast hours in a separate model and pass them via dumvar.

Flight Hours

In order to get a more accurate forecast, estimating flight hours via means, seasonality, and/or AR modeling will further improve the accuracy of the VARX model where Flight Hours is an endogenous variable

              H_t       L1       L2
used     9.686683 16.44156 20.74753
expected 9.000000 16.44156 20.74753

Notes for decision-makers

  • When hours are trending: We use the change in hours rather than the raw level. This makes short-term signals cleaner.
  • If we also need an hours forecast: We run a simple hours forecast and feed those results into the maintenance model so both move together.
  • Method consistency: Same settings as the baseline VAR. The only change is adding flight hours as an input.

Footnotes

  1. Monthly data; last 6 months held out for testing; forecasts shown in original units after any transformations.↩︎

  2. Monthly data; last 6 months held out for testing; forecasts shown in original units after any transformations.↩︎