Module Verbrauchsberechnung: 'Variablenvergleich' und 'Verbrauchsverhalten'

Hallo IPS-Team, @paresy

erstmal vielen Dank für die neuen Module zur Verbrauchsberechnung und das zugehörige Webinar!

Wie im Webinar-Chat angemerkt habe ich einige Fragen rund um diese Module. Mein Anwendungsfall ist vermutlich ganz typisch: Gasverbrauch der Heizung als Funktion der Aussentemperatur. Hierzu logge ich die Aussentemperatur (fortlaufend und Tagesmittel) sowie den Gasverbrauch (fortlaufend sowie Tagesverbrauch).

Mit dem Modul ‚Variablenvergleich‘ gelingt es auch sehr schön, die Abhängigkeit dazustellen … unter einigen weiter unten im Text genannten Voraussetzungen.

Daten sind hier Tagesmittelwert der Temperatur (1 Wert täglich) und der Tagesverbrauch (1 Wert täglich). Das funktioniert soweit … allerdings muss ich den Zeitbereich einschränken auf die Tage wo tatsächlich geheizt wird, sonst passiert dies:

Der gefittete Gerade ist eben dies: eine simple Gerade, y=a - b*x die bei hohen Temperaturen einen negativen Verbrauch ergeben würde. Weil der tatsächliche Verbrauch aber niemals negativ wird berechnet der Fit-Algorithmus zum Ausgleich eine flachere Gerade. Hier ist der Effekt noch schwach, weil es nur wenige warme Tage sind, aber man stelle sich das Ergebnis vor wenn ein warmer Monat hinzukommt … Das wollen wir nicht, denn dadurch wird der ganze Datenfit bei tiefen Temperaturen ungenauer!

Man muss also sehr aufpassen, welche Daten man in die Berechnung hineinsteckt. Auch bei der Frage ob man selbst ermittelte tägliche Werte (wie in meinem Fall) oder laufende Werte (z.B. stündlich oder häufiger) verwenden sollte wäre etwas ausführlichere Doku hilfreich. Häufig haben so Heizungen eine Nachabsenkung und entsprechend würden unterschiedliche Kennlinie von Verbrauch vs. Temperatur herauskommen.

Soweit für diesen Post, im nächsten Post schreibe ich dann etwas zum Modul ‚Verbrauchsverhalten‘ das laut Webinar auf diesem Datenfit aufbaut und Vorhersagen macht.

Beste Grüße
Volker

Teil 2, nun zum ‚Verbrauchsverhalten‘

Hier benötige ich eine Temperaturvariable (täglich ein Wert? oder fortlaufend?) und einen Zähler (muss es Aggregation Zähler sein oder darf es ein täglicher Verbrauch sein?).

In meinen Fall habe ich die fortlaufende Temperatur gewählt (Werte alle paar Minuten) und den Zählerstand (Aggregation Zähler). Nun wird’s bei den Parametern aber rätselhaft, denn was trage ich bei den Parametern als Intervall ein?

verbrverh1

Das Modul rechnet dann irgendwas aus, aber was ist eine Hochrechnung und was ein Erwartungswert? Der Erwartungswert ist vom Zahlenwert für mich rätselhaft. Die Doku gibt leider keine Erklärung sondern wiederholt nur die beiden Begriffe. Hier wäre ausführlichere Doku sehr hilfreich.

Zu den grundlegenden Fragen der Berechnung (Zeiträume hoher Temperatur mit Nullverbrauch) hatte ich oben schon was geschrieben, deshalb würde mich interessieren wie man dieses Modul richtig anweden soll.

Beste Grüße
Volker

Um diese Teilfrage nochmals mit Zahlenbeispiel zu verdeutlichen:

Im letzten Monat betrug der Gasverbrauch 236qm, das wird korrekt als Wert der letzten Periode angezeigt - und auch als Hochrechnung. Soweit verständlich: Monat ist vorbei und Gesamtverbrauch=Hochrechnung … aber was bedeutet der Erwartungswert von 352qm für diesen Monat? Was fange ich damit an?

Gleiches Spiel im aktuellen Monat Mai: wir schreiben den 23. Mai und der aktuelle Verbrauch liegt bei 55,9qm. Hochrechnung auf das Monatsende mit 76,5qm klingt nicht völlig verkehrt. Aber auch hier: was will mir ein Erwartungswert von 145qm sagen?

Kann mir jemand zumindest zu dieser Teilfrage weiterhelfen?

Gerne stelle ich auch die Datensätze für Temperatur und Verbrauch bereit, müsste dann nur wissen mit welchen Einstellungen der CSV-ZIP-Export gewünscht wird. Was ich bisher mit dem CSV-ZIP-Export erzeugen konnte ist angehängt aber erscheint mir wenig hilfreich: Gaszähler mit Zähleraggregation hat jeweils den Differenzwert in der ZIP anstelle des Zählerstandes und der Temperaturwert ist ein unleserlicher Integer (war in IPS ein Float).

Ratlose Grüße
Volker

Zähler.zip (10,5 KB)
Aussentemp.zip (23,0 KB)

Ich kann dir leider nicht helfen, muß aber sagen das ich Experimente mit den beiden Modulen abgebrochen habe.
Bei mir kamen immer nur komplett sinnlose Werte raus. Auch die Fit gerade lag irgendwo oft auch unsichtbar oder außerhalb des Plotbereiches.

Ich vermute das vor der Berechnung keine Datenbereinigung durchgeführt wird und so einzelne Ausreißer alles durcheinanderbringen.
Denke die Daten sollten vorher auf 5 Sigma gefiltert werden.

schöne Grüße
Bernhard

1 „Gefällt mir“

Danke für deine Anmerkungen, Bernhard. Immerhin der Fit funktioniert bei mir soweit, wenn man die Daten vorbereitet wie oben beschrieben.

Schade dass die Doku so nichtssagend ist.

Der Teil ist gelöst, da mag mein Excel (Dezimaltrenner Punkt) das von IPS erzeugte Dateiformat nicht. Die Daten aus IPS sind aber grundsätzlich intakt.

HI, ich versuche mal die Unklarheiten zu beseitigen.

Das Modul rechnet mit den aggregierten Daten, je nach eingestellter Aggregationsstufe. Bei Aggregationsstufe Tag werden also die Mittelwerte der vergangenen Tage genutzt.

Die Variablen müssen nur geloggt sein, denn auch in diesem Modul werden die aggregierten Werte genutzt.

Beim Parameter Intervall geht es um einen Timer, welcher nach Ablauf des Intervalls die Werte neu berechnet. Intervall = 1440 Minuten => Das Modul wird automatisch einmal am Tag neu berechnet.

Ja, die Doku ist da echt recht dünn.
Die Erwartung wird mit der Linearen Regression berechnet.
Die Hochrechnung wiederum ist: Durchschnittswert für die Periode * Periodenlänge

Ich hoffe ich konnte einige Fragen klären.
Die Doku passe ich gleich noch an.
Sunnyka

Hallo Sunnyka,

vielen Dank für Deine Antwort!

So richtig verstehe ich es leider noch nicht, weil die grundlegende Funktionsweise der Berechnung bei „Verbrauchsverhalten“ unklar ist.

Bei dem Diagramm Verbrauch vs. Aussentemperatur ist es einfach, sofern ich jeweils einen Wert pro Tag in die Berechnung einfliessen lasse. Es gibt dann einen recht eindeutigen Zusammenhang (keine Schwankungen durch tageszeitliche Effekte) und alle Werte liegen vor (keine Prognose erforderlich).

Aber wie funktioniert der Algorithmus Verbrauchsverhalten, was wird da per linearer Regression berechnet? Verbrauch vs. Temperatur kann es eigentlich nicht sein, weil wir die zukünftigen Temperaturen nicht kennen? Also lineare Regression des Verbrauchs als Funktion von was wird berechnet?

Wird da einfach eine Grade durch die Verbrauchswerte meines Zeitraums gelegt? Bitte hilf mir auf die Sprünge, was die grundlegende Funktion des Algorithmus ist, damit ich die Möglichkeiten und Grenzen verstehen kann.

Und welche Anforderungen gibt es an die Eingabedaten - ich hatte oben das Problem angesprochen mit Schwankungen im Tagesverlauf, der Verbrauch schwankt im Tagesrythmus deutlich. Muss ich das selbst vorab bereinigen und dem Algorithmus jeweils einen Wert pro Tag verfüttern, oder was für Daten benötigt der?

Du schreibst: „Das Modul rechnet mit den aggregierten Daten, je nach eingestellter Aggregationsstufe. Bei Aggregationsstufe Tag werden also die Mittelwerte der vergangenen Tage genutzt.“
aber ich stelle im Modul „Verbrauchsberechnung“ als Nutzer keine Aggregationsstufe ein sondern nur die Periode meiner Berechnung (hier: Monat). Wie das Modul hinter den Kulissen meine Daten aggregiert bleibt mit als Anwender verborgen, daher meine Fragen nach den Eingabedaten.

Limit der Datensätze gibt’s auch noch, aber ohne Verständnis welchen Daten benötigt/benutzt/aggregiert werden ist der Parameter kaum sinnvoll wählbar.

Der Erwartungswert ist in allen meinen Fällen seltsam überhöht für vergangene und zukünftige Perioden. Hier wäre neben Hintergrundinfo zum Verständnis der Berechnung auch ein Beispiel hilfreich, wo man die richtige Anwendung sieht, also welche Datenintervalle man als Eingabedaten wählen soll (1 Wert pro Tag oder 1 Wert pro Stunde oder …) und welche Perioden mit welchen Datenintervallen sinnvoll auswertbar sind.

Beste Grüße
Volker

Bei der linearen Regression wird eine gerade durch die vergangenen Wertepaare gelegt. Bei vergangenen Wertepaare sind die Werte von Anfang an bis zum Start der aktuellen Periode unter berüksichtigung des eingegeben Limits gemeint.
Dann werden die Temperatur-Werte der aktuellen Periode als X Werte in die Funktion, welche durch die Liniare Regression bestimmt wurde, eingesetzt und das daraus resultierende y ist der Hochgerechnete Verbrauch der Periode.

Im optimal Fall liegen die gleiche Anzahl an Datensätzen bei dem Zähler und der Temperatur über 3 Perioden vor.
Falls es zugroße Ausreißer gibt, kann es sein das die Gerade der linearen Regression davon beeinflusst wird.

In der ersten Version des Moduls war die Periode mit der Aggregationsstufe gleichgestellt, bei deinem Beispiel wurden also die monatlichen Werte genutzt.
Nach dem Update des Moduls wird die stündlichen Aggregationen bei der Periode „Tag“ genutzt. Bei den anderen möglichen Perioden dann die tägliche Aggregation aus dem Archiv.

Das Limit steht für die maximale Anzahl an Datensätzen aus dem Archiv für die Linieare Regression. Siehe auch: AC_GetAggregatedValues

Ich hoffe, dass ich deine Fragen ausreichend beantworten konnte. Das Modul wird zeitnahe geupdatet.

Grüße
Sunnyka

Hallo Sunnyka,

vielen Dank für deine Antwort und die Details!

Was mir daran unklar ist: Die Regression dient dazu, aus der Temperatur den Verbrauch zu bestimmen, soweit ist das selbsterklärend. ABER die aktuelle Periode ist idR noch nicht abgeschlossen, es liegen also Temperaturwerte nur für einen TEIL des Zeitraums vor. Ohne Temperaturwerte nutzt die Regression nix, man benötigt also eine Vorhersage der Temperaturen für den Rest des Zeitraums um daraus einen Verbrauch zu rechnen. Dieser Teil - welche Temperaturen werden dabei angesetzt für den Rest der Periode - bleibt rätselhaft, und davon hängt die Aussagekraft der ganzen Berechnung ab.

Einer der Forumskollegen hat sich den Code angeschaut und meint, daß der Erwartungswert auf den vergangenen Temperaturen der aktuellen Periode basiert. Das würde erklären, warum dieser Erwartungswert aktuell viel zu hoch liegt: die Temperaturen steigen an und die Berechnung auf Basis zurückliegender niedriger Temperaturen fällt entsprechend zu hoch aus. Im Herbst wäre es bei fallendendem Temperaturtrend dann andersherum.

Ich werde demnächst mal versuchen, mir selbst etwas zu schreiben auf der Basis eurer Regression (Verbrauch als Funktion der Temperatur) und dann als Temperaturvorhersage die Werte der Vorjahresperiode(n) zu verwenden. Das ist auch nicht exakt, dürfte aber für monatsweise Vorhersage eine realistischere Temperaturvorhersage liefern als wenn man vergangene Temperaturen der aktuellen Periode einfach fortschreibt (ohne jahreszeitliche Trends zu berücksichtigen).

Viele Grüße
Volker

Nachtrag dazu:

Inzwischen habe ich das so umgesetzt und es funktioniert verblüffend. Die Verbräuche und Trends der letzten Jahre kommen damit gut heraus, basierend auf historischen Temperaturen und der linearen Regression für Verbrauch vs. Temperatur. Regression mit den Daten von 2020 berechnet und mit den Temperaturen von 2021 gefüttert → die Verbrauchsvorhersage trifft den tatsächlichen witterungsbedingten Mehrverbrauch in 2021 sehr gut.

Die Regression (Modul Variablenvergleich) funktioniert dafür sehr gut, mit den Randbedingungen wie in meinem ersten Post beschrieben. Danke dafür!

Und der konkrete Nutzen: mit dieser Methode kann ich nun ein geändertes Heizverhalten (neue Regression mit Daten aus diesem Frühjahr) testen mit realistischen Temperaturverläufe der Vergangenheit. Damit kann ich also die erwarteten Verbräuche einschätzen, bei geänderten Verbrauchsverhalten.
Beispiel: Vorjahr tatsächlicher Verbrauch 3350 m3 und nun mit denselben (!) Temperaturen aus 2021 ein Verbrauch von 2500m3 gemäß der geänderte Regression mit Verbrauchs/Temperaturdaten März-Mai 2022. Das wären 25% Einsparung. Mal schauen, ob das am Jahresende so hinkommt.

Der Vorteil dieser Lösung ist, dass ich auch bei identischen Temperaturen vergleichen kann, also wirklich die Auswirkung des Heizverhaltens sehe ohne überlagerte Effekte

Viele Grüße
Volker