paint-brush
Estratifikazio-metodoa erabiltzea Esperimentuaren analisirakoarabera@nataliaogneva
33,187 irakurketak
33,187 irakurketak

Estratifikazio-metodoa erabiltzea Esperimentuaren analisirako

arabera Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

8 min 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
eu-flagEU
Irakurri ipuin hau euskaraz!
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
EU

Luzeegia; Irakurri

Laginketa estratifikatua datuen analisian esperimentuen eraginkortasuna eta sentsibilitate metrikoa areagotzeko teknika indartsua da. Zure audientzia multzokatuz eta pisu zehatzekin zatituz, esperimentuak optimiza ditzakezu, bariantza murriztu eta emaitzen fidagarritasuna hobetu.

Company Mentioned

Mention Thumbnail
Empirical
featured image - Estratifikazio-metodoa erabiltzea Esperimentuaren analisirako
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.


Esperimentu orok emaitza bizkorren eta sentsibilitate metrikoaren arteko trukaketa dakar. Aukeratutako metrika bariantzari dagokionez zabala bada, denbora luzez itxaron beharko dugu esperimentuaren emaitzak zehatzak direla ziurtatzeko. Azter dezagun metodo bat analistei esperimentuak areagotzen laguntzeko denbora edo sentsibilitate metriko gehiegi galdu gabe.


Problemaren formulazioa

Demagun esperimentu estandar bat egiten dugula sailkapen-algoritmo berri bat probatzeko, saioaren iraupena metrika nagusia dela. Gainera, kontuan hartu gure audientzia gutxi gorabehera hiru taldetan sailka daitekeela: milioi bat nerabe, 18-45 urte bitarteko 2 milioi erabiltzaile eta 45 urtetik gorako 3 milioi erabiltzaile. Sailkapen algoritmo berri baten erantzuna nabarmen aldatuko litzateke ikusle talde horien artean. Aldaera zabal honek metrikaren sentsibilitatea murrizten du.


Hau da, biztanleria hiru geruzatan bana daiteke, honela deskribatuta:

image


Demagun osagai bakoitzak banaketa normala duela. Orduan, populazioaren metrika nagusiak ere banaketa normala du.

image

Estratifikazio metodoa

Populaziotik erabiltzaile guztiak ausaz banatzen ditugu esperimentu-diseinu klasiko batean, gure erabiltzaileen arteko desberdintasunak kontuan hartu gabe. Horrela, honako espero den balio eta bariantza duen lagina kontsideratzen dugu.

image


Beste modu bat geruza bakoitzaren barruan ausaz banatzea da geruzak biztanleria orokorrean duen pisuaren arabera .

image

Kasu honetan, espero den balioa eta bariantza hauek dira.

image


Espero den balioa lehen hautapeneko berdina da. Hala ere, bariantza txikiagoa da, eta horrek sentsibilitate metriko handiagoa bermatzen du.

Orain, kontuan hartu dezagun Neymanen metodoa . Erabiltzaileak ausaz banatzea iradokitzen dute estra bakoitzaren barruan pisu zehatzekin.

image

Beraz, espero den balioa eta bariantza hurrengoaren berdinak dira kasu honetan.

image

Espero den balioa lehenengo kasuan espero den balioaren berdina da asintotikoki. Hala ere, bariantza askoz txikiagoa da.

Saiakuntza enpirikoak

Metodo honen eraginkortasuna teorikoki frogatu dugu. Simula ditzagun laginak eta proba ditzagun estratifikazio metodoa enpirikoki.

Azter ditzagun hiru kasu:

  • estratu guztiak batez besteko eta bariantza berdinak dituztenak,
  • estratu guztiak batez bestekoak eta bariantza berdinak dituztenak,
  • estratu guztiak batez bestekoak eta bariantza desberdinak dituztenak.

Hiru metodoak kasu guztietan aplikatuko ditugu eta histograma eta boxplot marraztuko ditugu horiek alderatzeko.

Kodea prestatzea

Lehenik eta behin, sor dezagun klase bat Python-en, hiru estratoz osatutako gure populazio orokorra simulatzen duena.

 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]


Ondoren, gehi ditzagun parte teorikoan deskribatutako hiru laginketa metodoetarako funtzioak.

 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


Gainera, zati enpirikorako, beti behar dugu esperimentu-prozesua simulatzeko funtzio bat.

 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


Simulazioaren emaitzak

Populazio orokorrari erreparatzen badiogu, non gure estratu guztiek balio eta bariantza berdinak dituzten, hiru metodoen emaitzak gutxi gorabehera berdinak izatea espero da.

image

Batez besteko eta bariantza berdinek emaitza zirraragarriagoak lortu zituzten. Estratifikazioa erabiltzeak bariantza nabarmen murrizten du.

image

Batez besteko berdinak eta bariantza desberdinak dituzten kasuetan, bariantza murrizketa ikusten dugu Neyman-en metodoan.

image

Ondorioa

Orain, estratifikazio-metodoa aplika dezakezu bariantza metrikoa murrizteko eta esperimentua areagotzeko zure audientzia multzokatzen baduzu eta teknikoki ausaz zatitzen badituzu kluster bakoitzaren barruan pisu zehatzekin!

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

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

ESKEGI ETIKETAK

ARTIKULU HAU AURKEZTU ZEN...

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