Zpět na domů

Statistika bez ML: klíčové metody v Pythonu

Článek popisuje statistické metody jako alternativu k ML: vážený průměr, korelaci, Poissonovo a binomické rozdělení. Uvádí příklady kódu v Pythonu s numpy a pandas pro business úkoly. Vhodné pro rychlou analýzu bez složitých modelů.

Statistika místo ML: Python nástroje pro data
Advertisement 728x90

Statistické metody pro analýzu dat bez strojového učení

Statistické nástroje umožňují rychle hodnotit data bez složitých modelů strojového učení. Vážený průměr bere v úvahu důležitost pozorování, standardní odchylka a variance odhalují nejednotnost, zatímco distribuce Poissonova a binomická predikují vzácné události. Tyto metody v Pythonu s numpy a pandas jsou vhodné pro middle/senior vývojáře, kteří analyzují obchodní metriky.

Vážený průměr: korekce zkreslení od odlehlých hodnot

Běžný průměr je zranitelný vůči odlehlým hodnotám. Při mzdách 10$ (ředitel) a 0.10$ (úklidkyně, váha 10) průměr dává 5.05$, což neodráží realitu. Vážený průměr to řeší:

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}")

Výstup: 1.00$. Použití:

Google AdInline article slot
  • Analýza příjmů podle prodejních kanálů s ohledem na provoz.
  • Hodnocení metrik s různou frekvencí událostí.
  • Seskupení klientů do segmentů s váhami.

Standardní odchylka a variance: hodnocení stability

Standardní odchylka měří rozptyl kolem průměru. Pro mzdy [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}")

Výsledek: 2024.41 — indikátor silné odlehlé hodnoty. Variance (čtverec odchylky) je užitečná pro srovnání sad:

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)

Rozptyl podle dnů (pracovní dny vs víkendy) vyžaduje segmentaci dat.

Google AdInline article slot

Korelace Pearsonova: lineární vztahy bez kauzality

Koeficient korelace Pearsonovy hodnotí lineární závislost. Vzorec:

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 — ideální souvislost. Čtverec (r²) dává podíl vysvětlené variance (v regresi — koeficient determinace). Pamatujte: korelace ≠ kauzalita (příklad: golf a úmrtnost u starších lidí).

Test chi-kvadrát: kontrola očekávání vs realita

Chi-kvadrát porovnává pozorované (O) a očekávané (E) hodnoty:

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}")

Podmínky: stejná délka, E > 0. Vyšší hodnota — větší rozdíl. Používá se pro validaci předpovědí.

Distribuce Poissonova: modelování vzácných událostí

Pro události s konstantní intenzitou λ (průměr za interval). Pravděpodobnost k událostí:

import math

λ = 3   # srednesutochnoe count requests
k = 5   

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

Výsledek: 0.1008. Předpoklady: nezávislost, konstantní pravděpodobnost, jedna událost najednou. Použití:

  • Předpověď volání na podporu.
  • Odhad objednávek na webu.
  • Analýza bezpečnostních incidentů.
  • Rizika ve financích.

Binomická distribuce: úspěchy v pokusech

Pro n pokusů s pravděpodobností úspěchu p. Pravděpodobnost k úspěchů:

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}")

Příklady: otevírání e-mailů, A/B testy, kontrola kvality.

Exponenciální distribuce: intervaly do událostí

Pravděpodobnost události po čase x při λ:

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}")

Pro fronty, prostoje zařízení.

Co je důležité

  • Vážený průměr a odchylka odhalují zkreslení bez ML.
  • Korelace hodnotí souvislosti, r² — vysvětlenou varianci.
  • Poissonova a binomická — pro předpovídání událostí v podniku.
  • Chi-kvadrát validuje hypotézy s minimálními daty.
  • Všechny metody lze realizovat v numpy/pandas, bez GPU.

— Editorial Team

Advertisement 728x90

Číst dál