paint-brush
Хэт ихийг илрүүлэх: Та юу мэдэх хэрэгтэй вэby@nataliaogneva
54,633 уншилтууд
54,633 уншилтууд

Хэт ихийг илрүүлэх: Та юу мэдэх хэрэгтэй вэ

by Natalia Ogneva4m2024/04/23
Read on Terminal Reader
Read this story w/o Javascript

Хэтэрхий урт; Унших

Шинжээчид ажлын явцад өгөгдөлд хэт давсан үзүүлэлттэй байнга тулгардаг. Шийдвэрийг ихэвчлэн түүврийн дундаж дээр үндэслэн гаргадаг бөгөөд энэ нь хэт давсан үзүүлэлтүүдэд маш мэдрэмтгий байдаг. Зөв шийдвэр гаргахын тулд хэт давсан үзүүлэлтүүдийг удирдах нь маш чухал юм. Ер бусын утгуудтай ажиллах хэд хэдэн энгийн бөгөөд хурдан аргыг авч үзье.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Хэт ихийг илрүүлэх: Та юу мэдэх хэрэгтэй вэ
Natalia Ogneva HackerNoon profile picture

Шинжээчид AB тестийн шинжилгээ хийх, урьдчилан таамаглах загвар бий болгох, чиг хандлагыг хянах зэрэг ажлын явцад өгөгдөлд хэт давчуу үзүүлэлттэй тааралддаг. Шийдвэрүүд нь ихэвчлэн түүврийн дундаж дээр суурилдаг бөгөөд энэ нь хэт давсан үзүүлэлтүүдэд маш мэдрэмтгий бөгөөд утгыг эрс өөрчилдөг. Тиймээс зөв шийдвэр гаргахын тулд хэт их хүчин зүйлийг удирдах нь маш чухал юм.


Ер бусын утгуудтай ажиллах хэд хэдэн энгийн бөгөөд хурдан аргыг авч үзье.

Асуудлын томъёолол

Та үндсэн хэмжигдэхүүн болгон дундаж захиалгын утгыг ашиглан туршилтын шинжилгээ хийх хэрэгтэй гэж төсөөлөөд үз дээ. Манай хэмжүүр ихэвчлэн хэвийн тархалттай байдаг гэж хэлье. Түүнчлэн, туршилтын бүлгийн хэмжүүрийн тархалт нь хяналтын бүлгийнхээс өөр гэдгийг бид мэднэ. Өөрөөр хэлбэл хяналт дахь тархалтын дундаж нь 10, тестийн хувьд 12. Хоёр бүлгийн стандарт хазайлт 3 байна.


Гэсэн хэдий ч хоёр түүвэрт түүврийн дундаж болон түүврийн стандарт хазайлтыг хазайсан хэтийн үзүүлэлтүүд байна.

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

Метрикийг харгалзан үзэхэд хоёр талаас хэт давсан үзүүлэлт гарч болзошгүйг анхаарна уу . Хэрэв таны хэмжигдэхүүн зөвхөн нэг талаасаа хэт давчуу үзүүлэлттэй байвал энэ зорилгоор аргуудыг хялбархан өөрчилж болно.

Сүүлийг таслах

Хамгийн хялбар арга бол 5%-ийн хувь болон 95%-ийн дараах бүх ажиглалтыг таслах явдал юм. Энэ тохиолдолд бид мэдээллийн 10% -ийг хууран мэхэлж алдсан. Гэсэн хэдий ч хуваарилалт нь илүү бүрдсэн харагдаж, түүврийн мөчүүд нь түгээлтийн мөчүүдэд ойр байдаг.

 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]


Өөр нэг арга бол тодорхой хүрээнээс гадуурх ажиглалтыг оруулахгүй байх явдал юм. Доод зурвас нь 25% -ийн хувиас дөрөвний нэгийг хассантай тэнцэх ба өндөр зурвас нь 75% нэмэх нэг хагастай тэнцүү байна. Энд бид зөвхөн 0.7% мэдээлэл алдах болно. Хуваарилалт нь анхныхаасаа илүү хэлбэртэй харагдаж байна. Түүврийн моментууд нь хуваарилалтын моментуудтай илүү тэнцүү байна.

 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 юм. Энэ аргын хувьд дундаж утгыг дэд түүврийн дундаж шиг байгуулна. Бидний жишээн дээр хяналтын бүлгийн дундаж нь 10.35, тестийн бүлэг 11.78 байна. Энэ нь нэмэлт өгөгдөл боловсруулахтай харьцуулахад илүү сайн үр дүн хэвээр байна.

 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())

Дүгнэлт

Зөв шийдвэр гаргахад хэт өндөр үзүүлэлтийг илрүүлэх, боловсруулах нь чухал юм. Одоо дор хаяж гурван хурдан бөгөөд ойлгомжтой арга нь танд дүн шинжилгээ хийхээс өмнө өгөгдлийг шалгахад тусална.


Гэсэн хэдий ч, илрүүлсэн хэт их хэмжигдэхүүн нь ер бусын үнэ цэнэ, шинэлэг нөлөө үзүүлэх шинж чанар байж болохыг санах нь чухал юм. Гэхдээ энэ бол өөр түүх :)