Statystyczne metody analizy danych bez uczenia maszynowego
Narzędzia statystyczne pozwalają szybko analizować dane bez skomplikowanych modeli uczenia maszynowego. Średnia ważona uwzględnia znaczenie poszczególnych obserwacji, odchylenie standardowe i wariancja wskazują na niejednorodność, a rozkłady Poissona i dwumianowy prognozują rzadkie zdarzenia. Te metody w Pythonie z numpy i pandas są odpowiednie dla programistów middle/senior analizujących metryki biznesowe.
Średnia ważona: korekta zniekształceń od wartości odstających
Zwykła średnia jest wrażliwa na wartości odstające. Przy pensjach 10$ (dyrektor) i 0.10$ (sprzątaczka, waga 10) średnia daje 5.05$, co nie odzwierciedla rzeczywistości. Średnia ważona rozwiązuje ten problem:
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}")
Wynik: 1.00$. Zastosowania:
- Analiza przychodów według kanałów sprzedaży z uwzględnieniem natężenia ruchu.
- Ocena metryk o różnej częstości zdarzeń.
- Grupowanie klientów według segmentów z wagami.
Odchylenie standardowe i wariancja: ocena stabilności
Odchylenie standardowe mierzy rozproszenie wokół średniej. Dla pensji [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}")
Wynik: 2024.41 — wskaźnik silnego odstania. Wariancja (kwadrat odchylenia) jest przydatna do porównywania zbiorów:
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)
Rozproszenie według dni (dni robocze vs weekendy) wymaga segmentacji danych.
Korelacja Pearsona: liniowe zależności bez przyczynowości
Współczynnik korelacji Pearsona ocenia liniową zależność. Wzór:
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 — idealna zależność. Kwadrat (r²) podaje udział wyjaśnionej wariancji (w regresji — współczynnik determinacji). Pamiętaj: korelacja ≠ przyczynowość (przykład: golf i śmiertelność wśród osób starszych).
Test chi-kwadrat: sprawdzanie oczekiwań vs rzeczywistość
Chi-kwadrat porównuje obserwowane (O) i oczekiwane (E) wartości:
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}")
Warunki: taka sama długość, E > 0. Większa wartość — większe rozbieżności. Stosowany do walidacji prognoz.
Rozkład Poissona: modelowanie rzadkich zdarzeń
Dla zdarzeń o stałej intensywności λ (średnia na interwał). Prawdopodobieństwo k zdarzeń:
import math
λ = 3 # srednesutochnoe count requests
k = 5
prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")
Wynik: 0.1008. Założenia: niezależność, stała prawdopodobieństwo, jedno zdarzenie na raz. Zastosowania:
- Prognoza połączeń do wsparcia.
- Ocena zamówień na stronie.
- Analiza incydentów bezpieczeństwa.
- Ryzyka w finansach.
Rozkład dwumianowy: sukcesy w próbach
Dla n prób z prawdopodobieństwem sukcesu p. Prawdopodobieństwo k sukcesów:
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}")
Przykłady: otwarcia e-maili, testy A/B, kontrola jakości.
Rozkład wykładniczy: interwały do zdarzeń
Prawdopodobieństwo zdarzenia po czasie x przy λ:
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}")
Dla kolejek, przestojów sprzętu.
Co ważne
- Średnia ważona i odchylenie wykrywają zniekształcenia bez ML.
- Korelacja ocenia zależności, r² — wyjaśnioną wariancję.
- Poissona i dwumianowy — do prognozowania zdarzeń w biznesie.
- Chi-kwadrat waliduje hipotezy przy minimalnych danych.
- Wszystkie metody implementowalne na numpy/pandas, bez GPU.
— Editorial Team
Brak komentarzy.