Kosten in Amazon Web Services oder Google Cloud sind häufig unübersichtlich, und es fällt schwer, das Wesentliche aus dem Datenrauschen herauszufiltern. Dieser Artikel zeigt, wie sich Trends bei Kosten oder Nutzung mithilfe der Mann-Kendall-Analyse aufspüren lassen.

Das "Rauschen" der AWS- oder Google-Cloud-Abrechnungen zu durchdringen, kann schwierig sein
Stellen Sie sich vor, Sie betrachten überlagerte Zeitreihen, die Ihre Cloud-Ausgaben des letzten Monats nach Service aufschlüsseln (siehe unten). Bei zu vielen Datenreihen (in unserem Beispiel 50) lässt sich mit bloßem Auge kaum noch erkennen, welche Reihen nach oben oder unten tendieren – und genau das ist meist die spannende Frage.
In diesem Beitrag erfahren Sie, wie Sie bei einer Vielzahl von Zeitreihen "das Signal vom Rauschen trennen".

Überlagerte Zeitreihen in einem einzigen Plot.
Es gibt mehrere Ansätze, um zu prüfen, ob in einer Zeitreihe ein linearer monotoner Trend vorliegt.
Trends mit dem Mann-Kendall-Test erkennen
Bei DoiT International setzen wir im Rahmen der Cloud-Management-Technologien, die wir für unsere Kunden entwickeln, den Mann-Kendall-Test ein, um eine Trendanalyse per Klick bereitzustellen [ Video ansehen]. Das Verfahren ähnelt einer parametrischen linearen Regressionsanalyse, mit der sich prüfen lässt, ob die Steigung der geschätzten Regressionsgeraden von null abweicht. Eine solche Regressionsanalyse setzt voraus, dass die Residuen der angepassten Regressionsgeraden normalverteilt sind – eine Annahme, die der MK-Test als nicht-parametrisches Verfahren nicht benötigt.

Trendanalyse in Aktion in der Cloud Management Platform (CMP) von DoiT International
Annahmen des Mann-Kendall-Tests
Für Zeitreihen gelten beim Test folgende Annahmen:
1. Liegt kein Trend vor, sind die im Zeitverlauf erfassten Messwerte unabhängig und identisch verteilt.
2. Die Messwerte spiegeln den tatsächlichen Zustand der beobachteten Größen zum jeweiligen Messzeitpunkt wider.
3. Die Verfahren zur Probennahme, zur instrumentellen Messung und zur Datenverarbeitung sind unverzerrt.
Wichtige Einschränkungen
Der Mann-Kendall-Test eignet sich nicht für Daten mit Periodizitäten (etwa saisonalen Effekten). Damit der Test aussagekräftig ist, sollten alle bekannten periodischen Effekte in einem Vorverarbeitungsschritt aus den Daten entfernt werden, bevor der Mann-Kendall-Test angewendet wird.
Zerlegung von Zeitreihen
Mit der saisonalen Zerlegung von Zeitreihen per Loess (STL) lässt sich eine Zeitreihe in Saison-, Trend- und Restkomponenten aufteilen. In Go gelingt das bequem mit dem package stl.
Die Methode stl.Decompose erwartet folgende Pflichtparameter:
- Die zu zerlegende Zeitreihe
- Periodizität der Daten
- Saisonale Breite
- Modelltyp
Das Modell ist entweder stl.Additive(), wenn die Schwankungen um den Trend nicht vom Niveau der Zeitreihe abhängen, oder stl.Multiplicative(), wenn der Trend proportional zum Niveau der Zeitreihe verläuft.
So zerlegen Sie Ihre Zeitreihe und greifen auf die einzelnen Komponenten zu:
res := stl.Decompose(timeSeries, periodicity, width, modelType)
trend := res.Trend
seasonal := res.Seasonal
residual := res.Resid
Unten sehen Sie ein Beispiel einer zerlegten Zeitreihe mit wöchentlicher Saisonalität nach dem multiplikativen Modell. Die Werte zeigen einen Aufwärtstrend, und alle sieben Tage sind saisonale "Einbrüche" zu erkennen.

Beispiel einer in Trend-, Saison- und Residualkomponenten zerlegten Zeitreihe.
Eigene Trendanalyse durchführen
Führen Sie das folgende Skript aus, um zu sehen, wie der Mann-Kendall-Test einen monotonen Trend in einer Beispielzeitreihe erkennt.
Weist Ihre Zeitreihe einen Trend auf, lohnt es sich, die Steigung der Regressionsgeraden zu berechnen. So sehen Sie, wie schnell sich Ihre Daten verändern. Hilfreich ist das zum Beispiel, wenn Sie alle Zeitreihen herausfiltern möchten, deren Regressionssteigung kleiner oder größer als X Grad ist.
Sehen Sie sich hier an, wie wir die Trendanalyse bei DoiT International in unserer Cloud Management Platform umsetzen!