paint-brush
Detekce odlehlých hodnot: Co potřebujete vědětpodle@nataliaogneva
54,644 čtení
54,644 čtení

Detekce odlehlých hodnot: Co potřebujete vědět

podle Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

4 min read2024/04/23
Read on Terminal Reader
Read this story in a terminal
Print this story
Read this story w/o Javascript
Read this story w/o Javascript
tldt arrow
cs-flagCS
Přečtěte si tento příběh v češtině!
en-flagEN
Read this story in the original language, English!
ln-flagLN
Tanga lisolo oyo na lingala!
lo-flagLO
ອ່ານເລື່ອງນີ້ເປັນພາສາລາວ!
ps-flagPS
دا کیسه په پښتو ژبه ولولئ!
lt-flagLT
Skaitykite šią istoriją lietuvių kalba!
hr-flagHR
Pročitajte ovu priču na hrvatskom!
lv-flagLV
Izlasi šo stāstu latviešu valodā!
ht-flagHT
Li istwa sa a an kreyòl ayisyen!
hu-flagHU
Olvasd el ezt a történetet magyarul!
hy-flagHY
Կարդացեք այս պատմությունը հայերեն։
uk-flagUK
Читайте цю історію українською!
mg-flagMG
Vakio amin'ny teny malagasy ity tantara ity!
More
CS

Příliš dlouho; Číst

Analytici se během své práce často setkávají s odlehlými hodnotami v datech. Rozhodnutí jsou obvykle založena na průměrném vzorku, který je velmi citlivý na odlehlé hodnoty. Pro správné rozhodnutí je důležité řídit odlehlé hodnoty. Podívejme se na několik jednoduchých a rychlých přístupů pro práci s neobvyklými hodnotami.

Companies Mentioned

Mention Thumbnail
effect
Mention Thumbnail
Series
featured image - Detekce odlehlých hodnot: Co potřebujete vědět
Natalia Ogneva HackerNoon profile picture
Natalia Ogneva

Natalia Ogneva

@nataliaogneva

Statistics lover

Analytici se během své práce často setkávají s odlehlými hodnotami v datech, například během analýzy AB-testu, vytváření prediktivních modelů nebo sledování trendů. Rozhodnutí jsou obvykle založena na průměrném vzorku, který je velmi citlivý na odlehlé hodnoty a může dramaticky změnit hodnotu. Pro správné rozhodnutí je tedy klíčové řídit odlehlé hodnoty.


Podívejme se na několik jednoduchých a rychlých přístupů pro práci s neobvyklými hodnotami.

Formulace problému

Představte si, že potřebujete provést analýzu experimentu s použitím průměrné hodnoty objednávky jako primární metriky. Řekněme, že naše metrika má obvykle normální rozdělení. Také víme, že rozložení metrik v testovací skupině je jiné než v kontrolní skupině. Jinými slovy, průměr distribuce v kontrole je 10 a v testu je 12. Směrodatná odchylka v obou skupinách je 3.


Oba vzorky však mají odlehlé hodnoty, které zkreslují průměr vzorku a směrodatnou odchylku vzorku.

image

 import numpy as np N = 1000 mean_1 = 10 std_1 = 3 mean_2 = 12 std_2 = 3 x1 = np.concatenate((np.random.normal(mean_1, std_1, N), 10 * np.random.random_sample(50) + 20)) x2 = np.concatenate((np.random.normal(mean_2, std_2, N), 4 * np.random.random_sample(50) + 1))

Všimněte si , že zvažování metriky může mít odlehlé hodnoty na obou stranách. Pokud by vaše metrika mohla mít odlehlé hodnoty pouze z jedné strany, metody by mohly být pro tento účel snadno transformovány.

Uříznout ocasy

Nejjednodušší metodou je odříznout všechna pozorování před 5% percentilem a po 95% percentilu . V tomto případě jsme jako podvod ztratili 10 % informací. Distribuce však vypadají formovaněji a vzorové momenty jsou blíže distribučním momentům.

image

 import numpy as np x1_5pct = np.percentile(x1, 5) x1_95pct = np.percentile(x1, 95) x1_cutted = [i for i in x1 if i > x1_5pct and i < x1_95pct] x2_5pct = np.percentile(x2, 5) x2_95pct = np.percentile(x2, 95) x2_cutted = [i for i in x2 if i > x2_5pct and i < x2_95pct]


Dalším způsobem je vyloučení pozorování mimo specifický rozsah . Nízké pásmo se rovná 25% percentilu mínus jedna polovina mezikvartilového rozsahu a vysoké pásmo se rovná 75% percentilu plus jedna polovina. Zde ztratíme pouze 0,7 % informací. Distribuce vypadají formovaněji než původní. Vzorové momenty jsou ještě více rovnocenné distribučním momentům.

image

 import numpy as np low_band_1 = np.percentile(x1, 25) - 1.5 * np.std(x1) high_band_1 = np.percentile(x1, 75) + 1.5 * np.std(x1) x1_cutted = [i for i in x1 if i > low_band_1 and i < high_band_1] low_band_2 = np.percentile(x2, 25) - 1.5 * np.std(x2) high_band_2 = np.percentile(x2, 75) + 1.5 * np.std(x2) x2_cutted = [i for i in x2 if i > low_band_2 and i < high_band_2]

Bootstrap

Druhou metodou, kterou jsme zde zvažovali, je bootstrap. V tomto přístupu je průměr konstruován jako průměr dílčích vzorků. V našem příkladu se průměr v kontrolní skupině rovná 10,35 a testovací skupině je 11,78. Ve srovnání s dodatečným zpracováním dat je to stále lepší výsledek.

 import pandas as pd def create_bootstrap_samples( sample_list: np.array, sample_size: int, n_samples: int ): # create a list for sample means sample_means = [] # loop n_samples times for i in range(n_samples): # create a bootstrap sample of sample_size with replacement bootstrap_sample = pd.Series(sample_list).sample(n = sample_size, replace = True) # calculate the bootstrap sample mean sample_mean = bootstrap_sample.mean() # add this sample mean to the sample means list sample_means.append(sample_mean) return pd.Series(sample_means) (create_bootstrap_samples(x1, len(x1), 1000).mean(), create_bootstrap_samples(x2, len(x2), 1000).mean())

Závěr

Detekce a zpracování odlehlých hodnot jsou důležité pro správné rozhodnutí. Nyní vám mohou pomoci zkontrolovat data před analýzou alespoň tři rychlé a přímočaré přístupy.


Je však nezbytné pamatovat na to, že zjištěné odlehlé hodnoty mohou být neobvyklými hodnotami a rysem efektu novosti. Ale to už je jiný příběh :)

L O A D I N G
. . . comments & more!

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

ZAVĚŠIT ZNAČKY

TENTO ČLÁNEK BYL PŘEDSTAVEN V...

Permanent on Arweave
Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite

Mentioned in this story

companies
X REMOVE AD