Fundamentals 8 min read

Unlocking Grey System Theory: Modeling Uncertain Systems with Minimal Data

Grey system theory provides a framework for analyzing, modeling, and predicting systems with incomplete information, using minimal data and accumulation techniques to improve forecast accuracy, as demonstrated through a sales data case study with Python implementation.

Model Perspective
Model Perspective
Model Perspective
Unlocking Grey System Theory: Modeling Uncertain Systems with Minimal Data

1 Grey System Theory

Grey system theory studies analysis, modeling, prediction, decision and control of systems with incomplete information. It extends general systems theory, information theory and control theory to social, economic and ecological abstract systems, using classical mathematics to handle information‑incomplete systems.

Grey systems are those where some information is known and some is unknown.

The theory originated in the 1980s. Professor Deng Julong first used the term “grey system” in 1981 and published foundational papers in 1982, gaining international attention, notably from Harvard professor R. W. Brockett, leading many researchers to explore its applications.

The concept evolved from W. R. Ashby’s “black box” idea, which described systems with completely unknown internal structure. Deng’s approach studies systems from within, aiming to overcome the limitations of black‑box methods.

Grey systems have partially known information. The theory investigates how to use known data to predict unknown aspects, achieving a full understanding of the system.

Along with probability theory and fuzzy mathematics, grey system theory is a major method for studying uncertain systems, capable of building models from very few data points and overcoming data scarcity or short system cycles.

The main feature of grey prediction is that the model uses a generated data series (e.g., accumulated series) rather than the original raw series.

Advantages

Requires only a few data points (often as few as four), suitable for short or unreliable histories.

Utilizes differential equations to capture system essence, yielding high accuracy.

Transforms irregular raw data into a more regular generated series, simplifying computation and verification without assuming a specific distribution.

Disadvantages: applicable mainly to short‑term, exponential‑growth forecasts.

2 Data Accumulation and Reduction

In practice, random disturbances cause large fluctuations. To handle this, the concepts of data accumulation and reduction are introduced. Given an original data series, one‑time accumulation produces a new series; the corresponding reduction operation restores the original series.

3 Case Study

3.1 Problem

Given an annual sales data series of a product.

3.2 Analysis

Direct linear least‑squares fitting yields the line shown below, with a maximum relative error of 35.85 %, indicating poor fit.

3.3 Modeling

After one‑time accumulation of the data, a new series is obtained and fitted, producing a model for the accumulated series.

3.4 Verification

The fitted curve for the accumulated data closely matches the accumulated series, with a maximum relative error of 24.15 %, a substantial improvement over direct linear fitting. The accumulated prediction is then reduced back to the original scale.

Code

<code>import numpy as np
from matplotlib.pyplot import plot,show,rc,legend,subplot, savefig
%matplotlib inline
from scipy.optimize import curve_fit
rc('font',size=15); rc('font',family='SimHei')
t0 = np.arange(1,7)
x0 = np.array([5.081, 4.611, 5.1177, 9.3775, 11.0574, 11.0524])
xt = np.polyfit(t0, x0, 1)
xh1 = np.polyval(xt, t0)  # predicted values
delta1 = np.abs((xh1 - x0))/x0   # relative error
x1 = np.cumsum(x0)
xh2 = lambda t,a,b,c: a*np.exp(b*t)+c
para, cov = curve_fit(xh2, t0, x1)
xh21 = xh2(t0, *para)  # prediction for accumulated series
xh22 = np.r_[xh21[0], np.diff(xh21)]  # restored prediction
delta2 = np.abs((xh22 - x0)/x0)  # relative error
print("Fitted parameters:", para)
subplot(121)
plot(t0, x0, 's'); plot(t0, xh1, '*-')
legend(('Original data','Linear fit'), loc='upper left')
subplot(122)
plot(t0, x1, 'o')
plot(t0, xh21, 'p-')
legend(('Accumulated data','Fit after accumulation'))
show()
</code>

Fitted parameters: [15.3914543 0.23111521 -14.76199989]

References

Si Shoukuai, Sun Xijing, Python Mathematics Experiment and Modeling

Pythondata modelingpredictiontime seriesGrey System Theory
Model Perspective
Written by

Model Perspective

Insights, knowledge, and enjoyment from a mathematical modeling researcher and educator. Hosted by Haihua Wang, a modeling instructor and author of "Clever Use of Chat for Mathematical Modeling", "Modeling: The Mathematics of Thinking", "Mathematical Modeling Practice: A Hands‑On Guide to Competitions", and co‑author of "Mathematical Modeling: Teaching Design and Cases".

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.