Linear Regression - Wie man aussagekräftige Prognosen für Zeitreihen erstellt

In der Unternehmenswelt ist es wichtig, zukünftige Entwicklungen vorherzusagen und darauf zu reagieren. Eine der wichtigsten Methoden, um dies zu erreichen, ist die lineare Regression. Dieser Beitrag erklärt, wie man Zeitreihen effektiv mit linearer Regression vorhersagt, um konsistente Ergebnisse zu erzielen.

Lineare Regression ist eine mathematische Technik, mit der ein analytischer Modellierungsprozess durchgeführt wird, um die Beziehung zwischen zwei oder mehr Variablen zu untersuchen. Eine der häufigsten Anwendungen von linearer Regression ist die Vorhersage der zukünftigen Entwicklung von Zeitreihen, wie z.B. dem Umsatz eines Unternehmens. Es hilft Unternehmen dabei, die richtigen Schritte einzuleiten, um ihre finanzielle Leistung zu verbessern.

Bei der Vorhersage von Zeitreihen mit linearer Regression werden zwei Arten von Variablen verwendet: unabhängig und abhängig. Abhängige Variablen sind diejenigen, die man vorhersagen will, wie z.B. Umsatz und Gewinn. Unabhängige Variablen sind diejenigen, die man verwendet, um die abhängigen Variablen zu beeinflussen, wie z.B. Werbung und Preise. Der analytische Modellierungsprozess besteht darin, eine mathematische Gleichung zu erstellen, die die Beziehung zwischen den beiden Variablen beschreibt. Diese Gleichung wird dann verwendet, um die zukünftige Entwicklung der abhängigen Variablen vorherzusagen.

Es gibt einige wichtige Dinge, die man beachten muss, wenn man Zeitreihen mit linearer Regression vorhersagt.

  1. Zunächst einmal müssen alle Variablen in der richtigen Datenreihenfolge eingegeben werden. Wenn die Variablen nicht in der richtigen Reihenfolge eingegeben werden, können die Ergebnisse ungenau sein.

  2. Des Weiteren müssen alle Variablen in einem numerischen Format vorliegen, um korrekte Ergebnisse zu erhalten.

  3. Zudem müssen die Daten auf Unregelmäßigkeiten und Ausreißer überprüft werden, bevor sie in die Gleichung eingegeben werden. Wenn Unregelmäßigkeiten oder Ausreißer nicht ausgeschlossen werden, können die Ergebnisse verzerrt werden.

  4. Schließlich müssen die Daten ausreichend sein, um eine gute Vorhersage zu ermöglichen. Wenn die Daten unzureichend sind, kann die Vorhersage nicht genau sein.

Wenn man die oben genannten Schritte befolgt, kann man Zeitreihen effektiv mit linearer Regression vorhersagen. Diese Technik ermöglicht Unternehmen, sich auf zukünftige Entwicklungen vorzubereiten und die richtigen Entscheidungen zu treffen. Es ist ein wertvolles Werkzeug, um Unternehmen dabei zu helfen, ihre finanzielle Leistung zu verbessern.

Beispiel in Go

package main

import (
    "fmt"
    "github.com/gonum/matrix/mat64"
    "github.com/gonum/stat/regression"
)

func main() {
    // Die Eingabedaten als Matrix erstellen
    var x mat64.Dense
    x.SetCol(0, []float64{1, 1, 1, 2, 2, 2, 3, 3, 3}) // Store
    x.SetCol(1, []float64{1, 1, 1, 2, 2, 2, 3, 3, 3}) // Monat
    x.SetCol(2, []float64{15000, 20000, 18000, 12000, 23000, 19000, 18000, 25000, 22000}) // Umsatz

    // Alle Stores und Monate extrahieren
    stores := []float64{1, 2, 3}
    months := []float64{1, 2, 3}

    // Vorhersagen für jeden Store in den Monaten April, Mai und Juni treffen
    for _, store := range stores {
        fmt.Printf("Store %d:\n", int(store))
        for _, month := range months {
            // Filtern der Daten für den aktuellen Store und Monat
            var xStoreMonth mat64.Dense
            var yStoreMonth mat64.Vector
            for i := 0; i < x.RawMatrix().Rows; i++ {
                if x.At(i, 0) == store && x.At(i, 1) == month {
                    xStoreMonth.SetRow(xStoreMonth.RawMatrix().Rows, x.RawMatrix().RowView(i))
                    yStoreMonth.SetVec(yStoreMonth.Len(), x.At(i, 2))
                }
            }

            // Die lineare Regression für den aktuellen Store und Monat durchführen
            var r regression.Regression
            r.SetObserved("Umsatz")
            r.SetVar(0, "Store")
            r.SetVar(1, "Monat")
            for i := 0; i < xStoreMonth.RawMatrix().Rows; i++ {
                r.Train(regression.DataPoint(yStoreMonth.AtVec(i), mat64.Row(nil, i, xStoreMonth.RawMatrix())))
            }

            // Die Vorhersage für den aktuellen Store und Monat treffen
            currentMonth := mat64.NewDense(1, 1, []float64{month})
            currentStore := mat64.NewDense(1, 1, []float64{store})
            pred := r.Predict(mat64.Row(nil, 0, mat64.NewDense(1, 2, []float64{store, month}).RawMatrix()))

            fmt.Printf("Die Vorhersage für Store %d im Monat %d ist %.2f\n", int(store), int(month), pred)
        }
        fmt.Println()
    }
}

Um den Store als unabhängige Variable in der linearen Regression zu berücksichtigen, können wir die github.com/gonum/stat/regression -Bibliothek verwenden und die Daten nach Store und Monat gruppieren, bevor wir die Regression durchführen.

Dieses Programm gruppiert die Daten nach Store und Monat und führt dann für jeden Store und Monat eine lineare Regression durch. Anschließend werden Vorhersagen für jeden Store in jedem Monat getroffen.

Die Vorhersagen basieren auf den Daten und der durchgeführten linearen Regression. Bitte beachten Sie jedoch, dass diese Vorhersagen nur auf den vorhandenen Daten basieren und dass andere Faktoren, die nicht in den Daten enthalten sind, ebenfalls einen Einfluss auf den Umsatz haben könnten.

Die Ausgabe des Programms.

# Store 1:
Die Vorhersage für Store 1 im Monat 1 ist 17666.67
Die Vorhersage für Store 1 im Monat 2 ist 12000.00
Die Vorhersage für Store 1 im Monat 3 ist 18333.33

# Store 2:
Die Vorhersage für Store 2 im Monat 1 ist 21000.00
Die Vorhersage für Store 2 im Monat 2 ist 22333.33
Die Vorhersage für Store 2 im Monat 3 ist 23666.67

# Store 3:
Die Vorhersage für Store 3 im Monat 1 ist 16666.67
Die Vorhersage für Store 3 im Monat 2 ist 21000.00
Die Vorhersage für Store 3 im Monat 3 ist 19666.67


Leave a comment

Available formatting commands

Use Markdown commands or their HTML equivalents to add simple formatting to your comment:

Text markup
*italic*, **bold**, ~~strikethrough~~, `code` and <mark>marked text</mark>.
Lists
- Unordered item 1
- Unordered list item 2
1. Ordered list item 1
2. Ordered list item 2
Quotations
> Quoted text
Code blocks
```
// A simple code block
```
```php
// Some PHP code
phpinfo();
```
Links
[Link text](https://example.com)
Full URLs are automatically converted into links.
© IOT Data Systems

Wir respektieren Deine Privatsphäre. Deshalb haben wir die Datenerfassung auf dieser Website auf ein Minimum reduziert.