paint-brush
Mampiasa ny fomba fisavana ho an'ny fanadihadiana andranany@nataliaogneva
33,155 HENOINA
33,155 HENOINA

Mampiasa ny fomba fisavana ho an'ny fanadihadiana andrana

ny Natalia Ogneva8m2024/04/19
Read on Terminal Reader
Read this story w/o Javascript

Lava loatra; Mamaky

Ny santionany stratified dia teknika mahery vaika hanamafisana ny fahombiazan'ny fanandramana sy ny fahatsapan'ny metrika amin'ny famakafakana angon-drakitra. Amin'ny alàlan'ny fanangonana ny mpihaino anao sy ny fizarana azy ireo amin'ny lanja manokana, azonao atao ny manatsara ny andrana, mampihena ny tsy fitoviana ary manatsara ny fahatokisana ny vokatra.

Company Mentioned

Mention Thumbnail
featured image - Mampiasa ny fomba fisavana ho an'ny fanadihadiana andrana
Natalia Ogneva HackerNoon profile picture
0-item


Ny fanandramana rehetra dia misy fifampiraharahana eo amin'ny vokatra haingana sy ny fahatsapana metrika. Raha midadasika amin'ny lafin'ny fahasamihafana ny metrika voafidy dia tsy maintsy miandry ela isika mba hahazoana antoka fa marina ny valin'ny fanandramana. Andeha isika handinika fomba iray hanampiana ireo mpandinika hanatsara ny andrana ataony nefa tsy mandany fotoana be loatra na fahatsapan-tena.


Famolavolana olana

Eritrereto hoe manao andrana manara-penitra isika mba hitsapana algorithm filaharana vaovao, miaraka amin'ny halavan'ny fivoriana ho metrika voalohany. Fanampin'izany, hevero fa azo sokajiana ho vondrona telo ny mpihaino anay: zatovo 1 tapitrisa, mpampiasa 2 tapitrisa 18-45 taona ary mpampiasa 3 tapitrisa 45 taona no ho miakatra. Ny valin'ny algorithm filaharana vaovao dia mety hiovaova be amin'ireo vondrona mpihaino ireo. Ity fiovaovana midadasika ity dia mampihena ny fahatsapan'ny metrika.


Raha lazaina amin'ny teny hafa, ny mponina dia azo zaraina ho strata telo, voalaza amin'ireto manaraka ireto:


Andeha hatao hoe manana fizarana ara-dalàna ny singa tsirairay. Avy eo, ny metrika lehibe ho an'ny mponina dia manana fizarana ara-dalàna ihany koa.

Stratification fomba

Zarainay kisendrasendra ny mpampiasa rehetra amin'ny mponina amin'ny endrika andrana mahazatra tsy misy fiheverana ny fahasamihafana misy eo amin'ireo mpampiasa anay. Noho izany dia dinihintsika ny santionany miaraka amin'ny sanda andrasana sy ny fahasamihafana manaraka.


Ny fomba iray hafa dia ny fizarana kisendrasendra ao anatin'ny strat tsirairay araka ny lanjan'ny strat amin'ny mponina amin'ny ankapobeny.

Amin'ity tranga ity, ny sanda andrasana sy ny fahasamihafana dia ireto manaraka ireto.


Ny sanda andrasana dia mitovy amin'ny safidy voalohany. Na izany aza, kely kokoa ny fahasamihafana, izay miantoka ny fahatsapan'ny metrika ambony kokoa.

Ankehitriny, andeha hodinihintsika ny fomba nataon'i Neyman . Manoro hevitra izy ireo ny hizara ny mpampiasa an-tsokosoko ao anatin'ny strat tsirairay miaraka amin'ny lanja manokana.

Noho izany, ny sanda andrasana sy ny variana dia mitovy amin'ireto manaraka ireto amin'ity tranga ity.

Ny sanda andrasana dia mitovy amin'ny sanda andrasana amin'ny tranga voalohany asymptotically. Na izany aza, ny variance dia kely kokoa.

Fitsapana empirika

Noporofoinay ara-teorika ny fahombiazan'ity fomba ity. Andao hanao simulate santionany ary hizaha toetra ny fomba fanasokajiana ara-pitsipika.

Andeha isika handinika tranga telo:

  • strats rehetra mitovy fomba sy variances,
  • ny strats rehetra manana fomba samy hafa sy mitovy variances,
  • strats rehetra miaraka amin'ny fomba mitovy sy variances samy hafa.

Hampihatra ireo fomba telo ireo isika amin'ny tranga rehetra ary mamolavola histograma sy boxplot mba hampitahana azy ireo.

Fanomanana kaody

Voalohany, andao hamorona kilasy iray amin'ny Python izay manahaka ny mponina amin'ny ankapobeny misy strats telo.

 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]


Avy eo, andao ampiana asa ho an'ireo fomba telo fanaovana santionany voalaza ao amin'ny ampahany teorika.

 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


Ary koa, ho an'ny ampahany empirical, mila fiasa foana isika amin'ny fanaovana simulation ny fizotran'ny fanandramana.

 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


Vokatra simulation

Raha mijery ny mponina amin'ny ankapobeny isika, izay misy ny soatoavina sy ny fiovaovan'ny strats rehetra misy antsika, ny vokatry ny fomba telo dia heverina ho mitovy na latsaka.

Nahazo vokatra mampientanentana kokoa ny fomba samy hafa sy ny tsy fitoviana mitovy. Ny fampiasana stratification dia mampihena be ny fahasamihafana.

Amin'ny tranga misy fomba mitovy sy tsy mitovy, dia mahita fihenam-bidy amin'ny fomban'i Neyman isika.

Famaranana

Ankehitriny, azonao atao ny mampihatra ny fomba fanaovana stratification mba hampihenana ny fiovaovan'ny metrika ary hanamafisana ny fanandramana raha manangona ny mpihaino anao ianao ary mizara azy ireo amin'ny fomba ara-teknika ao anatin'ny cluster tsirairay miaraka amin'ny lanjany manokana!