stepChanges method
Generates data with step changes (regime shifts).
Implementation
List<TimeSeriesPoint> stepChanges({
required DateTime start,
required DateTime end,
required Duration interval,
required List<DateTime> changePoints,
required List<double> levels,
double noise = 0,
}) {
assert(changePoints.length == levels.length - 1);
final points = <TimeSeriesPoint>[];
var current = start;
int levelIndex = 0;
while (!current.isAfter(end)) {
// Check if we need to change level
while (levelIndex < changePoints.length &&
current.isAfter(changePoints[levelIndex])) {
levelIndex++;
}
final value = levels[levelIndex] + _random.normal(0, noise);
points.add(TimeSeriesPoint(timestamp: current, value: value));
current = current.add(interval);
}
return points;
}