Zurück zur Startseite

Statistik ohne ML: wichtige Methoden in Python

Der Artikel beschreibt statistische Methoden als Alternative zu ML: gewichteter Durchschnitt, Korrelation, Poisson- und Binomialverteilungen. Beispiele für Python-Code mit numpy und pandas für Geschäftstasks. Geeignet für schnelle Analyse ohne komplexe Modelle.

Statistik statt ML: Python-Tools für Daten
Advertisement 728x90

# Statistische Methoden für die Datenanalyse ohne maschinelles Lernen

Statistische Werkzeuge ermöglichen eine schnelle Auswertung von Daten ohne komplexe Modelle des maschinellen Lernens. Gewichtete Mittel berücksichtigen die Wichtigkeit der Beobachtungen, Standardabweichung und Varianz offenbaren Heterogenität, während Poisson- und Binomialverteilungen seltene Ereignisse vorhersagen. Diese Methoden mit Python, numpy und pandas sind ideal für Mid-/Senior-Entwickler, die Geschäftsmetriken analysieren.

Gewichtetes Mittel: Korrektur von Ausreißer-Verzerrungen

Der einfache Durchschnitt ist anfällig für Ausreißer. Bei Gehältern von $10 (Direktor) und $0.10 (Hausmeister, Gewicht 10) beträgt der Durchschnitt $5.05, was die Realität nicht widerspiegelt. Das gewichtete Mittel löst das:

import numpy as np

salary = np.array([10.0, 0.10])
weight = np.array([1, 10])

result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")

Ausgabe: $1.00. Anwendungen:

Google AdInline article slot
  • Umsatzanalyse nach Vertriebskanälen unter Berücksichtigung des Traffics.
  • Auswertung von Metriken mit unterschiedlichen Ereignishäufigkeiten.
  • Gruppierung von Kunden nach Segmenten mit Gewichten.

Standardabweichung und Varianz: Stabilität bewerten

Die Standardabweichung misst die Streuung um den Mittelwert. Bei Gehältern [500, 400, 450, 550, 5000]:

import pandas as pd
import numpy as np

data = {
    "Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
    "Salary": [500, 400, 450, 550, 5000]
}

df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))

print(f"Standard deviation: {s:.2f}")

Ergebnis: 2024.41 – Indikator für einen starken Ausreißer. Die Varianz (Quadrat der Abweichung) eignet sich zum Vergleich von Datensätzen:

import numpy as np

sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)

print("Variance:", dispersion)

Streuung nach Tagen (Wochentage vs. Wochenenden) erfordert eine Segmentierung der Daten.

Google AdInline article slot

Pearson-Korrelation: Lineare Beziehungen ohne Kausalität

Der Pearson-Korrelationskoeffizient bewertet lineare Abhängigkeiten. Formel:

import numpy as np

X = np.array([1, 2, 3, 4, 5])  # study hours
Y = np.array([50, 55, 60, 65, 70])  # test scores

x_mean = np.mean(X)
y_mean = np.mean(Y)

corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))

res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")

r=1.00 – perfekte Korrelation. Das Quadrat (r²) gibt den Anteil der erklärten Variation an (in der Regression – Bestimmtheitsmaß). Merke: Korrelation ≠ Kausalität (Beispiel: Golf und Sterblichkeit bei Älteren).

Chi-Quadrat-Test: Erwartungen vs. Realität prüfen

Chi-Quadrat vergleicht beobachtete (O) und erwartete (E) Werte:

Google AdInline article slot
import numpy as np

O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14])  # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # expected

xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")

Bedingungen: gleiche Länge, E > 0. Höherer Wert – größere Abweichung. Verwendet zur Validierung von Prognosen.

Poisson-Verteilung: Modellierung seltener Ereignisse

Für Ereignisse mit konstanter Intensität λ (Durchschnitt pro Intervall). Wahrscheinlichkeit von k Ereignissen:

import math

λ = 3   # srednesutochnoe count requests
k = 5   

prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")

Ergebnis: 0.1008. Annahmen: Unabhängigkeit, konstante Wahrscheinlichkeit, ein Ereignis zur Zeit. Anwendungen:

  • Prognose von Support-Anrufen.
  • Schätzung von Website-Bestellungen.
  • Analyse von Sicherheitsvorfällen.
  • Risiken im Finanzwesen.

Binomialverteilung: Erfolge in Versuchen

Für n Versuche mit Erfolgswahrscheinlichkeit p. Wahrscheinlichkeit von k Erfolgen:

import math

n = 100
k = 70
p = 0.7

b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")

Beispiele: E-Mail-Öffnungen, A/B-Tests, Qualitätskontrolle.

Exponentialverteilung: Intervalle bis zu Ereignissen

Wahrscheinlichkeit eines Ereignisses nach Zeit x bei λ:

import math

lambd = 4    # vyzovov/hour
x = 1 / 3    # 20 min

prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")

Für Warteschlangen, Ausfallzeiten von Geräten.

Wichtige Erkenntnisse

  • Gewichtetes Mittel und Abweichung erkennen Verzerrungen ohne ML.
  • Korrelation bewertet Beziehungen, r² – erklärte Variation.
  • Poisson und Binomial – zur Prognose von Ereignissen im Geschäft.
  • Chi-Quadrat validiert Hypothesen mit minimalen Daten.
  • Alle Methoden umsetzbar mit numpy/pandas, kein GPU erforderlich.

— Editorial Team

Advertisement 728x90

Weiterlesen