withSpikes method
Generates data with spikes/anomalies.
Implementation
List<TimeSeriesPoint> withSpikes({
required DateTime start,
required DateTime end,
required Duration interval,
double baseValue = 100,
double spikeProbability = 0.05,
double spikeMultiplier = 3,
double noise = 5,
}) {
final points = <TimeSeriesPoint>[];
var current = start;
while (!current.isAfter(end)) {
var value = baseValue + _random.normal(0, noise);
if (_random.boolean(spikeProbability)) {
value += _random.uniform(1, spikeMultiplier) *
(_random.boolean() ? 1 : -1) *
noise *
3;
}
points.add(TimeSeriesPoint(timestamp: current, value: value));
current = current.add(interval);
}
return points;
}