Your daily production report tells you what happened today. But is your operation getting better or worse over time? Is Line 3 actually your bottleneck, or does it just feel that way? You have weeks or months of throughput data, cycle times, and utilization rates sitting in an ERP export or tracking spreadsheet. This analysis turns that data into trend lines, rolling averages, and cross-line comparisons so you can see exactly where efficiency is improving, where it's stagnating, and where to focus improvement efforts for the biggest gain.
Worked Example: One Line Across a Step and a Ramp
Question: Did weekly output change from the first part to the second? What straight line best fits all weeks?
Inputs: Made-up data. Seed 37 sets the random values. The script makes 40 weekly values, 20 for each part. The first part is based on 100 units a week. The second starts at 105 and rises by 0.8 units a week, with random ups and downs. So a step up and a ramp are built in.
Method: Find the average for each part. Fit a trend within each part. Then fit one straight line to all weeks. R-squared is a score for how well that line fits.
import numpy as np
seed = 37
rng = np.random.default_rng(seed)
weeks = np.arange(40)
values = np.empty(40, dtype=float)
values[:20] = 100 + rng.normal(0, 4, 20)
values[20:] = 105 + 0.8 * np.arange(20) + rng.normal(0, 4, 20)
before = values[:20]
after = values[20:]
slope, intercept = np.polyfit(weeks, values, 1)
predicted = slope * weeks + intercept
ss_res = np.sum((values - predicted) ** 2)
ss_tot = np.sum((values - values.mean()) ** 2)
r_squared = 1 - ss_res / ss_tot
b_slope = np.polyfit(weeks[:20], before, 1)[0]
a_slope = np.polyfit(weeks[20:], after, 1)[0]
print(f"Simulated data, seed {seed}")
print("Input setup: 40 weekly values; 20 before and 20 after")
print("Input setup: before base 100 units per week; "
"after start 105 units per week")
print("Input setup: after-period rise 0.8 units per week; "
"noise scale 4 units")
print(f"Weeks: {len(values)} total; {len(before)} before "
f"and {len(after)} after")
print(f"Mean output before: {before.mean():.2f} units per week")
print(f"Mean output after: {after.mean():.2f} units per week")
diff = after.mean() - before.mean()
print(f"After minus before: {diff:.2f} units per week")
print(f"Trend within the before weeks: {b_slope:.2f} units per week")
print(f"Trend within the after weeks: {a_slope:.2f} units per week")
print(f"Linear trend across all weeks: {slope:.2f} units per week")
print(f"R-squared for this straight-line fit: {r_squared:.3f}")
Simulated data, seed 37
Input setup: 40 weekly values; 20 before and 20 after
Input setup: before base 100 units per week; after start 105 units per week
Input setup: after-period rise 0.8 units per week; noise scale 4 units
Weeks: 40 total; 20 before and 20 after
Mean output before: 99.63 units per week
Mean output after: 112.29 units per week
After minus before: 12.66 units per week
Trend within the before weeks: -0.00 units per week
Trend within the after weeks: 0.76 units per week
Linear trend across all weeks: 0.57 units per week
R-squared for this straight-line fit: 0.672
Result: Average output was 99.63 units a week in the first part and 112.29 in the second, a gap of 12.66. The two parts were built to differ, so the gap is by design. The trend inside the first part was -0.00 a week and inside the second 0.76 a week. One line across both parts rises 0.57 a week, which is neither part's own trend: it is a compromise between a step and a ramp. Its R-squared score was 0.672.
Limit: These values are made up. The gap and lines apply to this case only. They do not show that a process change raised output. The R-squared score alone does not show if a trend matters at work.
Why This Matters
Most efficiency loss is not a dramatic failure. It is the slow bleed of suboptimal processes: a line that runs below what it could, changeover times that creep up, a downtime pattern that nobody notices because each incident is small. You can't close a gap you can't see, and you can't see it in a daily production report that only shows today's numbers.
Most operations managers track efficiency metrics in Excel. Some use ERP dashboards in SAP or Oracle. But these show real-time or daily snapshots without trend analysis, without rolling averages that smooth out daily noise, without cross-line comparisons that reveal which unit is actually your constraint. The result: improvement decisions based on the loudest complaint or the most recent incident, not on data.
What This Analysis Tells You
The case above compares two parts and fits a straight line to made-up data. A report like this looks at:
- Direction: is this metric going up, down, or flat? A trend line through 6 months of daily throughput data removes the daily noise and shows the real trajectory. R-squared shows how well a straight line fits the values.
- Speed of change: the slope of the trend tells you how fast. A rate such as units per week gives you a concrete number to quote in continuous improvement meetings, once you have checked what else changed.
- Comparison, when you include a grouping column (production line, machine, shift, operator), each group gets its own trend overlaid on the same chart. You can immediately see which lines are improving, which are flat, and which are degrading.
When to Use This Analysis
- Continuous improvement reviews: upload 6 months of throughput data and show the trend in your Lean/Six Sigma meeting. The rolling average chart is more credible than cherry-picking good days vs. bad days.
- Capital allocation decisions: "Line 3 has been declining at 2% per month for 6 months" is a stronger case for equipment investment than "Line 3 had a bad week."
- Post-improvement check: you implemented a new changeover procedure. Did output move? The period-over-period comparison in the report compares the chosen times before and after the change. This alone does not show that the change led to a difference.
- Cross-facility benchmarking: combine data from multiple plants into one CSV with a facility column. The multi-series view shows each facility's trend on the same chart, revealing which facilities are pulling ahead.
- Board and leadership reporting: executives don't want to see daily data points. They want to see a trend line with direction and speed. The rolling average chart and the period comparison are the two outputs you show in a board deck.
This analysis works for any operation that tracks metrics over time: manufacturing, warehousing, logistics, field service, call centers, software delivery, or any process with a measurable output. If you can export a date and a number, you can see the trend.
What Data Do You Need?
A CSV with two or three columns. The simpler your data, the faster you get answers.
Required columns
- date: daily, weekly, or monthly (any standard date format)
- value: the metric you're tracking: units produced, throughput rate, cycle time, utilization percentage, defect count, downtime hours, OEE score
Optional (for cross-line comparison)
- group: production line, machine ID, shift, facility, operator. When present, each group gets its own trend line overlaid on the same chart.
Where to get it
- ERP system: SAP, Oracle, Dynamics: export production orders or output logs by date
- MES (Manufacturing Execution System): export shift summaries or machine logs
- Tracking spreadsheet: many operations teams maintain a daily sheet with date, line, units produced, and downtime. Save as CSV.
- Warehouse management system: export picks per hour, orders fulfilled, or dock-to-stock time by day
How much data?
- Minimum: 100 observations (e.g., 20 weeks across 5 production lines)
- Better: 6-12 months of daily data. Enough to see seasonal patterns and meaningful trends.
- Limit: the analysis handles up to 10 groups on one chart. More than that, filter to the lines you care about most.
How to Read the Report
Time series trend chart: every data point plotted over time with a trend line overlay. An upward slope means the metric is improving (for throughput) or worsening (for cycle time and defect rate, context matters). The R-squared value alongside shows how well a straight line fits the values.
Rolling average: the raw data with daily noise smoothed out. A 7-day rolling average removes weekday/weekend cycles. A 30-day rolling average reveals month-over-month direction. If your raw data jumps about but the rolling average goes up, that may point to a trend. Check the raw values and the time span, and look for other changes that may explain the pattern before you draw a claim. If even the rolling average is erratic, the process may be unstable.
Period comparison: the report splits your data in half and compares the first half to the second half. A bar chart shows means and medians side by side. If the second half averages higher than the first, output was higher in the second half. This is the simplest "before vs. after" view you can show to leadership. Say what else changed before you credit one cause.
Distribution histogram: how your metric values are distributed. A tight cluster around the mean suggests a stable process. A wide spread or heavy tails suggest high variability. Outlier spikes (or dips) may indicate specific incidents worth investigating.
Multi-group overlay, when you include a grouping column, each group gets its own line on the trend chart. This is where bottlenecks become visible. If Line 1 trends upward while Line 3 trends flat, that is a signal to investigate Line 3 as a possible constraint. If all lines trend similarly, the issue is systemic rather than line-specific.
What to Do With the Results
Immediate
- Identify the constraint: in the multi-group view, the flattest or most downward-trending line is a candidate to investigate first as a possible constraint
- Quantify the gap: compare the worst-performing line's average to the best-performing line's average. That difference, multiplied by operating hours, is the throughput you're leaving on the table.
- Check for recent changes, if a line's trend shows a sudden shift, look for what changed: new equipment, staffing change, material supplier, or maintenance event
Strategic
- Set data-driven targets: instead of arbitrary OEE targets, use the best-performing line's rolling average as the benchmark for the others
- Run quarterly: upload updated data each quarter to track whether improvement initiatives are actually moving the trend, not just producing a good week
- Plan capacity with a separate forecast: this analysis describes and compares past data and does not forecast. For a projection of future throughput, use the time series forecast as a separate step
- Check with ANOVA: use a one-way ANOVA to test whether the performance differences between lines or shifts are larger than chance, not just visual noise in the chart
When to Use Something Else
- Need to predict future output: This analysis shows what happened. It doesn't forecast. For predicting next month's throughput with confidence intervals, use ARIMA forecasting.
- Want statistical process control: If you need control charts with UCL/LCL limits and out-of-control detection (Western Electric rules), you need SPC tools like Minitab. This analysis covers trend and comparison, not process control.
- Comparing exactly two shifts: If you're comparing only two groups (Day shift vs. Night shift), a t-test gives a cleaner, directional answer.
- Looking for anomalies: If you want to find specific unusual data points (equipment failures, quality escapes), use anomaly detection instead. Trend analysis shows the forest; anomaly detection finds the outlier trees.
Your turn
Bring your own data and the question you actually need answered.
MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai