I often get asked: when we make a change on the shop floor—swap a motor, tune a VFD profile, or introduce an idle‑time shutdown routine—how can we credibly say which machines actually saved energy and by how much? You don't need a fancy energy analytics platform or intrusive submetering to get useful answers. With openly available contextual data, basic production logs, and a few standard statistical tests, you can produce defensible attributions of energy savings to specific machines. Below I share a practical, repeatable method I use in pilots and retrofit programs.

What problem are we solving?

The typical problem is confounding. Energy consumption varies with production volume, ambient conditions, shift schedules, and operator behaviour. If you see a drop in facility energy use after an intervention, is it the device change, a lower output day, or cooler weather? My goal here is to show how to isolate the machine‑level effect using data you likely already have or can access freely.

Required data (all achievable without proprietary sensors)

  • Machine energy or power readings (if available): PLC, inverter telemetry, or simple kWh submeters exported to CSV or via OPC‑UA. If machine‑level energy is unavailable, use nearest subpanel readings and pair with runtime logs.
  • Production timestamps and throughput: product counts, batch start/stop times, cycle times. MES, SCADA, or simple CSV logs work.
  • Intervention metadata: exact timestamps when the change was deployed, rollout schedule, and which lines/machines were affected.
  • Open environmental data: ambient temperature and humidity from Meteostat, NOAA, or local weather APIs. These explain HVAC and cooling load variance.
  • Facility-level energy baseline: utility meter, smart meter, or building energy portal data to cross‑validate machine contributions.
  • Operational schedule: shift pattern, holiday/maintenance days, and any planned downtime.

High-level approach

The method follows four steps: prepare and align the data, choose a comparison strategy, apply simple statistical tests to estimate effect and confidence, and sanity‑check results against known physics and business events.

Step-by-step method

1) Data alignment and feature engineering

Bring all time series to the same timestamp resolution (15-min or hourly is usually fine). Create these minimal features per interval:

  • Machine_power (kW) or panel_power
  • Production_rate (units/hour)
  • Ambient_temp (°C)
  • Shift_flag (1/0)
  • Intervention_flag (1 after change, 0 before)

Here’s a simple example of the table structure I use:

timestampmachine_power_kWproduction_unitsambient_temp_Cintervention
2025-07-01 08:0012.515022.10
2025-07-01 09:0013.016022.30
2025-07-15 09:0010.215821.81

2) Choose a comparison strategy

Pick one of these depending on available data:

  • Pre/post with covariate adjustment — use regression when you have continuous covariates like production and temperature.
  • Difference‑in‑Differences (DiD) — if you have a control machine or line that was not changed but is otherwise similar.
  • Matched pairs or nearest‑neighbour matching — match intervals on production and temp to compare similar operating conditions.

3) Apply simple statistical models/tests

These are intentionally basic, robust techniques that non‑statisticians can apply and explain to stakeholders.

  • Linear regression with covariates
    Model: machine_power ~ production_units + ambient_temp + shift_flag + intervention_flag.
    The coefficient on intervention_flag estimates average kW change attributable to the intervention, controlling for production and weather. Use robust standard errors or bootstrap to get confidence intervals.
  • Difference‑in‑Differences
    If you have a control line: compute average power per unit of production before and after for both treatment and control. The DiD estimator is (Δtreatment_after‑before) − (Δcontrol_after‑before). Run a simple regression with interaction terms to get significance.
  • T‑tests or permutation tests
    For matched samples or when assumptions of normality are questionable, use paired t‑test on matched intervals, or a permutation test to compute p‑values without distributional assumptions.
  • Residual checks
    After regression, inspect residuals vs production and vs time. Systematic patterns suggest missing covariates or model misspecification.

4) Translate power change to energy and savings

If your regression estimates a −1.2 kW effect when the machine is active, multiply by average active hours per day to get daily kWh savings. Attach a monetary value using local electricity rates and, if relevant, CO2 intensities from the regional grid (GB National Grid publishes carbon intensity time series you can use).

An example I used in a food plant

We retrofitted motor controls on a conveying line. No meter existed at the motor, but the inverter could provide active power when online and MES gave each batch's start/stop and count. I aligned 15‑minute inverter power with production and Meteostat ambient temp. A regression (power ~ units + temp + intervention) showed a −0.9 kW coefficient on intervention with a 95% bootstrap CI of −1.2 to −0.6 kW. With average run time of 10 hours/day, that was ~9 kWh/day saved (≈3,285 kWh/year). At £0.20/kWh and a grid carbon intensity of 0.18 kgCO2/kWh, we reported an annual saving of ≈£657 and ≈592 kg CO2 attributable to the motor control change. The numbers held when we reran a DiD using an adjacent unaffected line as control.

Common pitfalls and how to avoid them

  • Ignoring production mix — different product variants can change cycle power. Use product IDs as dummy variables if needed.
  • Seasonality and weather shifts — include ambient temp or use week‑of‑year fixed effects for long experiments.
  • Treatment spillover — if operators change behavior across lines, your control is contaminated. Document rollouts and operator training carefully.
  • Overfitting — keep models parsimonious. Simple linear models are usually adequate for attribution and easier to explain to plant managers.

Tools and implementations

You can implement everything in Excel for small datasets, but I prefer Python (pandas, statsmodels, scikit‑learn) or R for reproducibility. For weather data, Meteostat (Python/R), NOAA (api), or the UK Met Office are reliable public sources. If you need quick bootstrapping or permutation tests, libraries like resample in R or sklearn.utils in Python will do the job.

How I report results to non‑technical stakeholders

I present three numbers: the point estimate of annual kWh saved, a confidence interval, and the monetary and CO2 equivalent. I always show the key plot: observed power over time with production overlaid, and the model's predicted counterfactual (what power would have been without the change). This visual plus a simple DiD or regression table is usually enough for operations and finance to accept the attribution and proceed to scale.

If you want, I can share a small Jupyter notebook (CSV input + example regression, bootstrapping, and plots) that you can run on your data. It includes code to pull Meteostat weather for a given site, align timestamps, and produce the output table and charts I described.