paint-brush
Эксперименттик талдоо үчүн стратификация ыкмасын колдонуутарабынан@nataliaogneva
33,187 окуулар
33,187 окуулар

Эксперименттик талдоо үчүн стратификация ыкмасын колдонуу

тарабынан Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

8 мин read2024/04/19
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
ky-flagKY
Бул окуяны кыргызча окуңуз!
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
KY

өтө узун; Окуу

Стратификацияланган үлгү алуу - бул маалыматтарды талдоодо эксперименттин эффективдүүлүгүн жана метрикалык сезимталдыкты жогорулатуунун күчтүү ыкмасы. Аудиторияңызды топтоо жана аларды белгилүү бир салмактарга бөлүү менен, сиз эксперименттерди оптималдаштырып, дисперсияны азайтып, натыйжанын ишенимдүүлүгүн жогорулата аласыз.

Company Mentioned

Mention Thumbnail
Empirical
featured image - Эксперименттик талдоо үчүн стратификация ыкмасын колдонуу
Natalia Ogneva HackerNoon profile picture
Natalia Ogneva

Natalia Ogneva

@nataliaogneva

Statistics lover

0-item

STORY’S CREDIBILITY

Original Reporting

Original Reporting

This story contains new, firsthand information uncovered by the writer.


Ар кандай эксперимент тез натыйжалар менен метрикалык сезгичтиктин ортосундагы соодалашууну камтыйт. Тандалган метрика дисперсия жагынан кенен болсо, эксперименттин жыйынтыгы так болушу үчүн биз көпкө күтүшүбүз керек. Келгиле, аналитиктерге убакытты же метрикалык сезгичтикти жоготпостон эксперименттерин өркүндөтүүгө жардам берүү үчүн бир ыкманы карап көрөлү.


Проблеманы түзүү

Негизги метрика катары сессиянын узундугу менен жаңы рейтинг алгоритмин сыноо үчүн стандарттуу эксперимент жүргүздүк дейли. Кошумчалай кетсек, биздин аудиторияны болжол менен үч топко бөлүүгө болот: 1 миллион өспүрүм, 18-45 жаштагы 2 миллион колдонуучу жана 45 жана андан жогорку жаштагы 3 миллион колдонуучу. Жаңы рейтинг алгоритмине жооп бул аудитория топторунун арасында олуттуу айырмаланат. Бул кең вариация метриканын сезгичтигин азайтат.


Башка сөз менен айтканда, калкты үч катмарга бөлүүгө болот, төмөндөгү сүрөттөлгөн:

image


Ар бир компоненттин нормалдуу бөлүштүрүлүшү бар дейли. Андан кийин, калктын негизги көрсөткүчү да нормалдуу бөлүштүрүүгө ээ.

image

Стратификация ыкмасы

Колдонуучуларыбыздын ортосундагы айырмачылыктарды эске албастан, классикалык эксперимент дизайнында бардык колдонуучуларды кокусунан бөлөбүз . Ошентип, биз төмөнкү күтүлгөн маани жана дисперсия менен үлгүнү карап чыгабыз.

image


Дагы бир жолу - жалпы популяциядагы катмардын салмагына жараша ар бир катмардын ичине туш келди бөлүү .

image

Бул учурда, күтүлгөн маани жана дисперсия төмөнкүдөй болот.

image


Күтүлгөн маани биринчи тандоодогудай. Бирок дисперсия азыраак, бул жогорку метрикалык сезгичтикти кепилдейт.

Эми Неймандын ыкмасын карап көрөлү. Алар колдонуучуларды белгилүү бир салмак менен ар бир страттын ичинде туш келди бөлүүнү сунушташат.

image

Ошентип, күтүлгөн маани жана дисперсия бул учурда төмөнкүгө барабар.

image

Күтүлгөн маани асимптотикалык түрдө биринчи учурда күтүлгөн мааниге барабар. Бирок, дисперсия бир топ азыраак.

Эмпирикалык тестирлөө

Биз бул ыкманын натыйжалуулугун теориялык жактан далилдедик. Келгиле, үлгүлөрдү окшоштуруп, стратификация ыкмасын эмпирикалык түрдө сынап көрөлү.

Келгиле, үч ишти карап көрөлү:

  • бирдей каражаттар жана дисперсиялар менен бардык катмарлар,
  • ар кандай каражаттар жана бирдей дисперсиялар менен бардык страттар,
  • бирдей каражаттар жана ар кандай дисперсиялар менен бардык страт.

Биз бардык учурда үч ыкманы тең колдонобуз жана аларды салыштыруу үчүн гистограмма менен кутучаны түзөбүз.

Код даярдоо

Биринчиден, келгиле, Pythonдо үч страттан турган жалпы калкыбызды окшоштурган класс түзөлү.

 class GeneralPopulation: def __init__(self, means: [float], stds: [float], sizes: [int], random_state: int = 15 ): """ Initializes our General Population and saves the given distributions :param means: List of expectations for normal distributions :param stds: List of standard deviations for normal distributions :param sizes: How many objects will be in each strata :param random_state: Parameter fixing randomness. Needed so that when conducting experiment repeatedly with the same input parameters, the results remained the same """ self.strats = [st.norm(mean, std) for mean, std in zip(means, stds)] self._sample(sizes) self.random_state = random_state def _sample(self, sizes): """Creates a general population sample as a mixture of strata :param sizes: List with sample sizes of the corresponding normal distributions """ self.strats_samples = [rv.rvs(size) for rv, size in zip(self.strats, sizes)] self.general_samples = np.hstack(self.strats_samples) self.N = self.general_samples.shape[0] # number of strata self.count_strats = len(sizes) # ratios for every strata in GP self.ws = [size/self.N for size in sizes] # ME and Std for GP self.m = np.mean(self.general_samples) self.sigma = np.std(self.general_samples) # ME and std for all strata self.ms = [np.mean(strat_sample) for strat_sample in self.strats_samples] self.sigmas = [np.std(strat_sample) for strat_sample in self.strats_samples]


Андан кийин, теориялык бөлүгүндө сүрөттөлгөн үч тандап алуу ыкмалары үчүн функцияларды кошолу.

 def random_subsampling(self, size): """Creates a random subset of the entire population :param sizes: subsample size """ rc = np.random.choice(self.general_samples, size=size) return rc def proportional_subsampling(self, size): """Creates a subsample with the number of elements, proportional shares of strata :param sizes: subsample size """ self.strats_size_proport = [int(np.floor(size*w)) for w in self.ws] rc = [] for k in range(len(self.strats_size_proport)): rc.append(np.random.choice(self.strats_samples[k], size=self.strats_size_proport[k])) return rc def optimal_subsampling(self, size): """Creates a subsample with the optimal number of elements relative to strata :param sizes: subsample size """ sum_denom = 0 for k in range(self.count_strats): sum_denom += self.ws[k] * self.sigmas[k] self.strats_size_optimal = [int(np.floor((size*w*sigma)/sum_denom)) for w, sigma in zip(self.ws, self.sigmas)] if 0 in self.strats_size_optimal: raise ValueError('Strats size is 0, please change variance of smallest strat!') rc = [] for k in range(len(self.strats_size_optimal)): rc.append(np.random.choice(self.strats_samples[k], size=self.strats_size_optimal[k])) return rc


Ошондой эле, эмпирикалык бөлүгү үчүн, биз ар дайым эксперимент жараянын моделдөө үчүн функцияны керек.

 def run_experiments(self, n_sub, subsampling_method, n_experiments=1000): """Conducts a series of experiments and saves the results :param n_sub: size of sample :param subsampling_method: method for creating a subsample :param n_experiments: number of experiment starts """ means_s = [] if(len(self.general_samples)<100): n_sub = 20 if(subsampling_method == 'random_subsampling'): for n in range(n_experiments): rc = self.random_subsampling(n_sub) mean = rc.sum()/len(rc) means_s.append(mean) else: for n in range(n_experiments): if(subsampling_method == 'proportional_subsampling'): rc = self.proportional_subsampling(n_sub) elif(subsampling_method == 'optimal_subsampling'): rc = self.optimal_subsampling(n_sub) strats_mean = [] for k in range(len(rc)): strats_mean.append(sum(rc[k])/len(rc[k])) # Mean for a mixture means_s.append(sum([w_k*mean_k for w_k, mean_k in zip(self.ws, strats_mean)])) return means_s


Симуляция натыйжалары

Эгерде биздин бардык катмарларыбыз бирдей баалуулуктарга жана дисперсияларга ээ болгон жалпы калкты карасак, үч ыкманын тең натыйжалары аздыр-көптүр бирдей болушу күтүлөт.

image

Ар кандай каражаттар жана бирдей дисперсиялар кызыктуу натыйжаларды алды. Стратификацияны колдонуу дисперсияны кескин азайтат.

image

Бирдей каражаттар жана ар түрдүү дисперсиялар болгон учурларда, Нейман методунда дисперсиянын азайышын көрөбүз.

image

Корутунду

Эми, сиз аудиторияңызды кластер кылып, аларды ар бир кластердин ичинде кокустук түрдө белгилүү бир салмак менен бөлсөңүз, метрикалык дисперсияны азайтуу жана экспериментти күчөтүү үчүн стратификация ыкмасын колдоно аласыз!

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

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

ТАГИП АЛУУ

БУЛ МАКАЛА БЕРИЛГЕН...

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