paint-brush
Usando o método de estratificación para a análise do experimentopor@nataliaogneva
33,187 lecturas
33,187 lecturas

Usando o método de estratificación para a análise do experimento

por 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
gl-flagGL
Le esta historia en galego!
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
GL

Demasiado longo; Ler

A mostraxe estratificada é unha técnica poderosa para aumentar a eficiencia dos experimentos e a sensibilidade métrica na análise de datos. Ao agrupar a túa audiencia e dividila con pesos específicos, podes optimizar os experimentos, reducir a varianza e mellorar a fiabilidade dos resultados.

Company Mentioned

Mention Thumbnail
Empirical
featured image - Usando o método de estratificación para a análise do experimento
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.


Calquera experimento implica unha compensación entre resultados rápidos e sensibilidade métrica. Se a métrica escollida é ampla en termos de varianza, debemos esperar moito tempo para asegurarnos de que os resultados do experimento sexan precisos. Consideremos un método para axudar aos analistas a impulsar os seus experimentos sen perder demasiado tempo ou sensibilidade métrica.


Formulación de problemas

Supoñamos que realizamos un experimento estándar para probar un novo algoritmo de clasificación, coa duración da sesión como métrica principal. Ademais, ten en conta que a nosa audiencia pódese clasificar aproximadamente en tres grupos: 1 millón de adolescentes, 2 millóns de usuarios de 18 a 45 anos e 3 millóns de usuarios de 45 ou máis anos. A resposta a un novo algoritmo de clasificación variaría significativamente entre estes grupos de público. Esta ampla variación reduce a sensibilidade da métrica.


Noutras palabras, a poboación pódese dividir en tres estratos, que se describen a continuación:

image


Digamos que cada compoñente ten unha distribución normal. Entón, a métrica principal para a poboación tamén ten unha distribución normal.

image

Método de estratificación

Dividimos aleatoriamente a todos os usuarios da poboación nun deseño experimental clásico sen ter en conta as diferenzas entre os nosos usuarios. Así, consideramos a mostra co seguinte valor esperado e varianza.

image


Outra forma é dividir ao azar dentro de cada estrato segundo o peso da estrat na poboación xeral.

image

Neste caso, o valor esperado e a varianza son os seguintes.

image


O valor esperado é o mesmo que na primeira selección. Non obstante, a varianza é menor, o que garante unha maior sensibilidade métrica.

Agora, consideremos o método de Neyman . Suxiren dividir os usuarios aleatoriamente dentro de cada estrato con pesos específicos.

image

Polo tanto, o valor esperado e a varianza son iguais ao seguinte neste caso.

image

O valor esperado é igual ao valor esperado no primeiro caso asintóticamente. Non obstante, a varianza é moito menor.

Ensaios empíricos

Demostramos a eficacia deste método teoricamente. Imos simular mostras e probar empíricamente o método de estratificación.

Consideremos tres casos:

  • todas as estratos con iguais medias e varianzas,
  • todas as estratos con diferentes medias e iguais varianzas,
  • todas as estratos con iguais medias e diferentes varianzas.

Aplicaremos os tres métodos en todos os casos e trazaremos un histograma e un diagrama de caixa para comparalos.

Preparación do código

En primeiro lugar, imos crear unha clase en Python que simule a nosa poboación xeral composta por tres estratos.

 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]


Despois, imos engadir funcións para os tres métodos de mostraxe descritos na parte teórica.

 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


Ademais, para a parte empírica, sempre necesitamos unha función para simular o proceso experimental.

 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


Resultados da simulación

Se observamos a poboación xeral, onde todos os nosos estratos teñen os mesmos valores e varianzas, espérase que os resultados dos tres métodos sexan máis ou menos iguais.

image

Medias diferentes e varianzas iguais obtiveron resultados máis interesantes. Usar a estratificación reduce drasticamente a varianza.

image

En casos con medias iguais e varianzas diferentes, vemos unha redución da varianza no método de Neyman.

image

Conclusión

Agora, podes aplicar o método de estratificación para reducir a varianza métrica e aumentar o experimento se agrupas á túa audiencia e divídese tecnicamente de forma aleatoria dentro de cada grupo con pesos específicos.

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

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

Etiquetas colgantes

ESTE ARTIGO FOI PRESENTADO EN...

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