Skip to content

Commit b8fa21c

Browse files
committed
Better naming of decomposition methods and related variables
1 parent d8a6687 commit b8fa21c

File tree

7 files changed

+84
-101
lines changed

7 files changed

+84
-101
lines changed

include/maths/CTimeSeriesDecomposition.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,19 +118,19 @@ class MATHS_EXPORT CTimeSeriesDecomposition : public CTimeSeriesDecompositionInt
118118
//! Propagate the decomposition forwards to \p time.
119119
void propagateForwardsTo(core_t::TTime time);
120120

121-
//! Get the mean value of the baseline in the vicinity of \p time.
122-
virtual double mean(core_t::TTime time) const;
121+
//! Get the mean value of the time series in the vicinity of \p time.
122+
virtual double meanValue(core_t::TTime time) const;
123123

124-
//! Get the value of the time series baseline at \p time.
124+
//! Get the value of the time series at \p time.
125125
//!
126126
//! \param[in] time The time of interest.
127127
//! \param[in] confidence The symmetric confidence interval for the prediction
128128
//! the baseline as a percentage.
129129
//! \param[in] components The components to include in the baseline.
130-
virtual maths_t::TDoubleDoublePr baseline(core_t::TTime time,
131-
double confidence = 0.0,
132-
int components = E_All,
133-
bool smooth = true) const;
130+
virtual maths_t::TDoubleDoublePr value(core_t::TTime time,
131+
double confidence = 0.0,
132+
int components = E_All,
133+
bool smooth = true) const;
134134

135135
//! Forecast from \p start to \p end at \p dt intervals.
136136
//!

include/maths/CTimeSeriesDecompositionInterface.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,19 +90,19 @@ class MATHS_EXPORT CTimeSeriesDecompositionInterface
9090
//! Propagate the decomposition forwards to \p time.
9191
virtual void propagateForwardsTo(core_t::TTime time) = 0;
9292

93-
//! Get the mean value of the baseline in the vicinity of \p time.
94-
virtual double mean(core_t::TTime time) const = 0;
93+
//! Get the mean value of the time series in the vicinity of \p time.
94+
virtual double meanValue(core_t::TTime time) const = 0;
9595

96-
//! Get the value of the time series baseline at \p time.
96+
//! Get the value of the time series at \p time.
9797
//!
9898
//! \param[in] time The time of interest.
9999
//! \param[in] confidence The symmetric confidence interval for the prediction
100100
//! the baseline as a percentage.
101101
//! \param[in] components The components to include in the baseline.
102-
virtual maths_t::TDoubleDoublePr baseline(core_t::TTime time,
103-
double confidence = 0.0,
104-
int components = E_All,
105-
bool smooth = true) const = 0;
102+
virtual maths_t::TDoubleDoublePr value(core_t::TTime time,
103+
double confidence = 0.0,
104+
int components = E_All,
105+
bool smooth = true) const = 0;
106106

107107
//! Forecast from \p start to \p end at \p dt intervals.
108108
//!

include/maths/CTimeSeriesDecompositionStub.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ class MATHS_EXPORT CTimeSeriesDecompositionStub : public CTimeSeriesDecompositio
4747
virtual void propagateForwardsTo(core_t::TTime time);
4848

4949
//! Returns 0.
50-
virtual double mean(core_t::TTime time) const;
50+
virtual double meanValue(core_t::TTime time) const;
5151

5252
//! Returns (0.0, 0.0).
53-
virtual maths_t::TDoubleDoublePr baseline(core_t::TTime time,
54-
double confidence = 0.0,
55-
int components = E_All,
56-
bool smooth = true) const;
53+
virtual maths_t::TDoubleDoublePr value(core_t::TTime time,
54+
double confidence = 0.0,
55+
int components = E_All,
56+
bool smooth = true) const;
5757

5858
//! Clears \p result.
5959
virtual void forecast(core_t::TTime startTime,

lib/maths/CTimeSeriesDecomposition.cc

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,12 @@ bool CTimeSeriesDecomposition::addPoint(core_t::TTime time,
243243
this->propagateForwardsTo(time);
244244

245245
SAddValue message{time, lastTime, value, weightStyles, weights,
246-
CBasicStatistics::mean(this->baseline(time, 0.0, E_TrendForced)),
247-
CBasicStatistics::mean(this->baseline(time, 0.0, E_Seasonal)),
248-
CBasicStatistics::mean(this->baseline(time, 0.0, E_Calendar)),
246+
CBasicStatistics::mean(this->value(time, 0.0, E_TrendForced)),
247+
CBasicStatistics::mean(this->value(time, 0.0, E_Seasonal)),
248+
CBasicStatistics::mean(this->value(time, 0.0, E_Calendar)),
249249
[this](core_t::TTime time_)
250250
{
251-
return CBasicStatistics::mean(this->baseline(
252-
time_, 0.0, E_Seasonal | E_Calendar));
251+
return CBasicStatistics::mean(this->value(time_, 0.0, E_Seasonal | E_Calendar));
253252
},
254253
m_Components.periodicityTestConfig()};
255254

@@ -271,15 +270,15 @@ void CTimeSeriesDecomposition::propagateForwardsTo(core_t::TTime time)
271270
m_LastPropagationTime = std::max(m_LastPropagationTime, time);
272271
}
273272

274-
double CTimeSeriesDecomposition::mean(core_t::TTime time) const
273+
double CTimeSeriesDecomposition::meanValue(core_t::TTime time) const
275274
{
276275
return m_Components.meanValue(time);
277276
}
278277

279-
TDoubleDoublePr CTimeSeriesDecomposition::baseline(core_t::TTime time,
280-
double confidence,
281-
int components,
282-
bool smooth) const
278+
TDoubleDoublePr CTimeSeriesDecomposition::value(core_t::TTime time,
279+
double confidence,
280+
int components,
281+
bool smooth) const
283282
{
284283
TVector2x1 baseline{0.0};
285284

@@ -320,7 +319,7 @@ TDoubleDoublePr CTimeSeriesDecomposition::baseline(core_t::TTime time,
320319
if (smooth)
321320
{
322321
baseline += vector2x1(this->smooth(
323-
boost::bind(&CTimeSeriesDecomposition::baseline,
322+
boost::bind(&CTimeSeriesDecomposition::value,
324323
this, _1, confidence, components & E_Seasonal, false),
325324
time, components));
326325
}
@@ -399,8 +398,8 @@ double CTimeSeriesDecomposition::detrend(core_t::TTime time, double value, doubl
399398
{
400399
return value;
401400
}
402-
TDoubleDoublePr baseline{this->baseline(time, confidence)};
403-
return std::min(value - baseline.first, 0.0) + std::max(value - baseline.second, 0.0);
401+
TDoubleDoublePr interval{this->value(time, confidence)};
402+
return std::min(value - interval.first, 0.0) + std::max(value - interval.second, 0.0);
404403
}
405404

406405
double CTimeSeriesDecomposition::meanVariance(void) const

lib/maths/CTimeSeriesDecompositionStub.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ void CTimeSeriesDecompositionStub::propagateForwardsTo(core_t::TTime /*time*/)
4848
{
4949
}
5050

51-
double CTimeSeriesDecompositionStub::mean(core_t::TTime /*time*/) const
51+
double CTimeSeriesDecompositionStub::meanValue(core_t::TTime /*time*/) const
5252
{
5353
return 0.0;
5454
}
5555

56-
maths_t::TDoubleDoublePr CTimeSeriesDecompositionStub::baseline(core_t::TTime /*time*/,
57-
double /*confidence*/,
58-
int /*components*/,
59-
bool /*smooth*/) const
56+
maths_t::TDoubleDoublePr CTimeSeriesDecompositionStub::value(core_t::TTime /*time*/,
57+
double /*confidence*/,
58+
int /*components*/,
59+
bool /*smooth*/) const
6060
{
6161
return {0.0, 0.0};
6262
}

lib/maths/CTimeSeriesModel.cc

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -764,8 +764,8 @@ CUnivariateTimeSeriesModel::addSamples(const CModelAddSamplesParams &params,
764764
{
765765
CDecayRateController &controller{(*m_Controllers)[E_TrendControl]};
766766
core_t::TTime time{static_cast<core_t::TTime>(CBasicStatistics::mean(averageTime))};
767-
TDouble1Vec prediction{m_Trend->mean(time)};
768-
multiplier = controller.multiplier(prediction, errors[E_TrendControl],
767+
TDouble1Vec trendMean{m_Trend->meanValue(time)};
768+
multiplier = controller.multiplier(trendMean, errors[E_TrendControl],
769769
this->params().bucketLength(),
770770
this->params().learnRate(),
771771
this->params().decayRate());
@@ -777,8 +777,8 @@ CUnivariateTimeSeriesModel::addSamples(const CModelAddSamplesParams &params,
777777
}
778778
{
779779
CDecayRateController &controller{(*m_Controllers)[E_PriorControl]};
780-
TDouble1Vec prediction{m_Prior->marginalLikelihoodMean()};
781-
multiplier = controller.multiplier(prediction, errors[E_PriorControl],
780+
TDouble1Vec residualMean{m_Prior->marginalLikelihoodMean()};
781+
multiplier = controller.multiplier(residualMean, errors[E_PriorControl],
782782
this->params().bucketLength(),
783783
this->params().learnRate(),
784784
this->params().decayRate());
@@ -820,7 +820,7 @@ CUnivariateTimeSeriesModel::mode(core_t::TTime time,
820820
weights.push_back(weight[0]);
821821
}
822822
return { m_Prior->marginalLikelihoodMode(weightStyles, weights)
823-
+ CBasicStatistics::mean(m_Trend->baseline(time))};
823+
+ CBasicStatistics::mean(m_Trend->value(time))};
824824
}
825825

826826
CUnivariateTimeSeriesModel::TDouble2Vec1Vec
@@ -840,11 +840,11 @@ CUnivariateTimeSeriesModel::correlateModes(core_t::TTime time,
840840
{
841841
result.resize(correlated.size(), TDouble10Vec(2));
842842

843-
double baseline[2];
844-
baseline[0] = CBasicStatistics::mean(m_Trend->baseline(time));
843+
double trend[2];
844+
trend[0] = CBasicStatistics::mean(m_Trend->value(time));
845845
for (std::size_t i = 0u; i < correlated.size(); ++i)
846846
{
847-
baseline[1] = CBasicStatistics::mean(correlatedTimeSeriesModels[i]->m_Trend->baseline(time));
847+
trend[1] = CBasicStatistics::mean(correlatedTimeSeriesModels[i]->m_Trend->value(time));
848848
TDouble10Vec4Vec weights;
849849
weights.resize(weights_[i].size(), TDouble10Vec(2));
850850
for (std::size_t j = 0u; j < weights_[i].size(); ++j)
@@ -855,8 +855,8 @@ CUnivariateTimeSeriesModel::correlateModes(core_t::TTime time,
855855
}
856856
}
857857
TDouble10Vec mode(correlationDistributionModels[i].first->marginalLikelihoodMode(weightStyles, weights));
858-
result[i][variables[i][0]] = baseline[0] + mode[variables[i][0]];
859-
result[i][variables[i][1]] = baseline[1] + mode[variables[i][1]];
858+
result[i][variables[i][0]] = trend[0] + mode[variables[i][0]];
859+
result[i][variables[i][1]] = trend[1] + mode[variables[i][1]];
860860
}
861861
}
862862

@@ -953,10 +953,10 @@ CUnivariateTimeSeriesModel::predict(core_t::TTime time,
953953

954954
double scale{1.0 - this->params().probabilityBucketEmpty()};
955955

956-
double seasonalOffset{0.0};
956+
double trend{0.0};
957957
if (m_Trend->initialized())
958958
{
959-
seasonalOffset = CBasicStatistics::mean(m_Trend->baseline(time));
959+
trend = CBasicStatistics::mean(m_Trend->value(time));
960960
}
961961

962962
if (hint.size() == 1)
@@ -968,7 +968,7 @@ CUnivariateTimeSeriesModel::predict(core_t::TTime time,
968968
m_Prior->marginalLikelihoodMean() :
969969
(hint.empty() ? CBasicStatistics::mean(m_Prior->marginalLikelihoodConfidenceInterval(0.0)) :
970970
m_Prior->nearestMarginalLikelihoodMean(hint[0]))};
971-
double result{scale * (seasonalOffset + median + correlateCorrection)};
971+
double result{scale * (trend + median + correlateCorrection)};
972972

973973
return {m_IsNonNegative ? std::max(result, 0.0) : result};
974974
}
@@ -986,8 +986,8 @@ CUnivariateTimeSeriesModel::confidenceInterval(core_t::TTime time,
986986

987987
double scale{1.0 - this->params().probabilityBucketEmpty()};
988988

989-
double seasonalOffset{m_Trend->initialized() ?
990-
CBasicStatistics::mean(m_Trend->baseline(time, confidenceInterval)) : 0.0};
989+
double trend{m_Trend->initialized() ?
990+
CBasicStatistics::mean(m_Trend->value(time, confidenceInterval)) : 0.0};
991991

992992
TDouble4Vec weights;
993993
weights.reserve(weights_.size());
@@ -1001,9 +1001,9 @@ CUnivariateTimeSeriesModel::confidenceInterval(core_t::TTime time,
10011001
TDoubleDoublePr interval{
10021002
m_Prior->marginalLikelihoodConfidenceInterval(confidenceInterval, weightStyles, weights)};
10031003

1004-
double result[]{scale * (seasonalOffset + interval.first),
1005-
scale * (seasonalOffset + median),
1006-
scale * (seasonalOffset + interval.second)};
1004+
double result[]{scale * (trend + interval.first),
1005+
scale * (trend + median),
1006+
scale * (trend + interval.second)};
10071007

10081008
return {{m_IsNonNegative ? std::max(result[0], 0.0) : result[0]},
10091009
{m_IsNonNegative ? std::max(result[1], 0.0) : result[1]},
@@ -2208,13 +2208,13 @@ CMultivariateTimeSeriesModel::addSamples(const CModelAddSamplesParams &params,
22082208
}
22092209
{
22102210
CDecayRateController &controller{(*m_Controllers)[E_TrendControl]};
2211-
TDouble1Vec prediction(dimension);
2211+
TDouble1Vec trendMean(dimension);
22122212
core_t::TTime time{static_cast<core_t::TTime>(CBasicStatistics::mean(averageTime))};
22132213
for (std::size_t d = 0u; d < dimension; ++d)
22142214
{
2215-
prediction[d] = m_Trend[d]->mean(time);
2215+
trendMean[d] = m_Trend[d]->meanValue(time);
22162216
}
2217-
double multiplier{controller.multiplier(prediction, errors[E_TrendControl],
2217+
double multiplier{controller.multiplier(trendMean, errors[E_TrendControl],
22182218
this->params().bucketLength(),
22192219
this->params().learnRate(),
22202220
this->params().decayRate())};
@@ -2229,8 +2229,8 @@ CMultivariateTimeSeriesModel::addSamples(const CModelAddSamplesParams &params,
22292229
}
22302230
{
22312231
CDecayRateController &controller{(*m_Controllers)[E_PriorControl]};
2232-
TDouble1Vec prediction(m_Prior->marginalLikelihoodMean());
2233-
double multiplier{controller.multiplier(prediction, errors[E_PriorControl],
2232+
TDouble1Vec residualMean(m_Prior->marginalLikelihoodMean());
2233+
double multiplier{controller.multiplier(residualMean, errors[E_PriorControl],
22342234
this->params().bucketLength(),
22352235
this->params().learnRate(),
22362236
this->params().decayRate())};
@@ -2280,7 +2280,7 @@ CMultivariateTimeSeriesModel::mode(core_t::TTime time,
22802280

22812281
for (std::size_t d = 0u; d < dimension; ++d)
22822282
{
2283-
result[d] = mode[d] + CBasicStatistics::mean(m_Trend[d]->baseline(time));
2283+
result[d] = mode[d] + CBasicStatistics::mean(m_Trend[d]->value(time));
22842284
}
22852285

22862286
return result;
@@ -2353,10 +2353,10 @@ CMultivariateTimeSeriesModel::predict(core_t::TTime time,
23532353
TDouble10Vec mean(m_Prior->marginalLikelihoodMean());
23542354
for (std::size_t d = 0u; d < dimension; --marginalize[std::min(d, dimension - 2)], ++d)
23552355
{
2356-
double seasonalOffset{0.0};
2356+
double trend{0.0};
23572357
if (m_Trend[d]->initialized())
23582358
{
2359-
seasonalOffset = CBasicStatistics::mean(m_Trend[d]->baseline(time));
2359+
trend = CBasicStatistics::mean(m_Trend[d]->value(time));
23602360
}
23612361
double median{mean[d]};
23622362
if (!m_Prior->isNonInformative())
@@ -2365,7 +2365,7 @@ CMultivariateTimeSeriesModel::predict(core_t::TTime time,
23652365
median = hint.empty() ? CBasicStatistics::mean(marginal->marginalLikelihoodConfidenceInterval(0.0)) :
23662366
marginal->nearestMarginalLikelihoodMean(hint[d]);
23672367
}
2368-
result[d] = scale * (seasonalOffset + median);
2368+
result[d] = scale * (trend + median);
23692369
if (m_IsNonNegative)
23702370
{
23712371
result[d] = std::max(result[d], 0.0);
@@ -2401,9 +2401,8 @@ CMultivariateTimeSeriesModel::confidenceInterval(core_t::TTime time,
24012401
TDouble4Vec weights;
24022402
for (std::size_t d = 0u; d < dimension; --marginalize[std::min(d, dimension - 2)], ++d)
24032403
{
2404-
double seasonalOffset{m_Trend[d]->initialized() ?
2405-
CBasicStatistics::mean(
2406-
m_Trend[d]->baseline(time, confidenceInterval)) : 0.0};
2404+
double trend{m_Trend[d]->initialized() ?
2405+
CBasicStatistics::mean(m_Trend[d]->value(time, confidenceInterval)) : 0.0};
24072406

24082407
weights.clear();
24092408
weights.reserve(weights_.size());
@@ -2417,9 +2416,9 @@ CMultivariateTimeSeriesModel::confidenceInterval(core_t::TTime time,
24172416
TDoubleDoublePr interval{
24182417
marginal->marginalLikelihoodConfidenceInterval(confidenceInterval, weightStyles, weights)};
24192418

2420-
result[0][d] = scale * (seasonalOffset + interval.first);
2421-
result[1][d] = scale * (seasonalOffset + median);
2422-
result[2][d] = scale * (seasonalOffset + interval.second);
2419+
result[0][d] = scale * (trend + interval.first);
2420+
result[1][d] = scale * (trend + median);
2421+
result[2][d] = scale * (trend + interval.second);
24232422
if (m_IsNonNegative)
24242423
{
24252424
result[0][d] = std::max(result[0][d], 0.0);

0 commit comments

Comments
 (0)