هره تجربه د ګړندي پایلو او میټریک حساسیت ترمینځ تجارت لري. که چیرې غوره شوی میټریک د توپیر له مخې پراخه وي، موږ باید ډیر وخت انتظار وکړو ترڅو ډاډ ترلاسه کړو چې د تجربې پایلې سمې دي. راځئ چې یو میتود په پام کې ونیسو چې له شنونکو سره مرسته وکړي چې د دوی تجربې ته وده ورکړي پرته لدې چې ډیر وخت یا میټریک حساسیت له لاسه ورکړي. د ستونزې جوړښت فرض کړئ چې موږ د نوي درجه بندي الګوریتم ازموینې لپاره معیاري تجربه ترسره کوو، د لومړني میټریک په توګه د ناستې اوږدوالی سره. برسیره پردې، په پام کې ونیسئ چې زموږ لیدونکي تقریبا په دریو ډلو ویشل کیدی شي: 1 ملیون تنکي ځوانان، 2 ملیون کاروونکي چې عمرونه 18-45، او 3 ملیون کاروونکي چې عمرونه یې 45 او پورته وي. د نوي درجه بندي الګوریتم ځواب به د دې لیدونکو ډلو ترمنځ د پام وړ توپیر ولري. دا پراخه توپیر د میټریک حساسیت کموي. په بل عبارت، نفوس په دریو برخو ویشل کیدی شي، چې په لاندې ډول تشریح شوي: راځئ چې ووایو چې هره برخه نورمال توزیع لري. بیا، د نفوس لپاره اصلي میټریک هم یو نورمال ویش لري. د جوړښت طریقه موږ . په دې توګه، موږ نمونه د لاندې متوقع ارزښت او توپیر سره په پام کې نیسو. په تصادفي ډول د خلکو څخه ټول کارونکي د کلاسیک تجربې ډیزاین کې پرته له دې چې زموږ د کاروونکو ترمینځ توپیرونه په پام کې نیولو سره وویشو بله لاره دي. په تصادفي ډول په عمومي نفوس کې د سټراټ وزن سره سم د هر سټراټ دننه ویشل په دې حالت کې، متوقع ارزښت او توپیر په لاندې ډول دی. متوقع ارزښت په لومړي انتخاب کې ورته دی. په هرصورت، توپیر لږ دی، کوم چې د لوړ میټریک حساسیت تضمینوي. اوس راځئ چې په پام کې ونیسو. دوی وړاندیز کوي چې کاروونکو ته په تصادفي ډول د هر سټراټ دننه د ځانګړي وزنونو سره تقسیم کړي. د نییمان طریقه نو، متوقع ارزښت او توپیر په دې قضیه کې د لاندې سره برابر دی. متوقع ارزښت په لومړي حالت کې په غیر متناسب ډول د متوقع ارزښت سره مساوي دی. په هرصورت، توپیر خورا لږ دی. تجربوي ازموینه موږ د دې میتود موثریت په تیوریکي توګه ثابت کړی دی. راځئ چې نمونې تقلید کړو او د استخراج میتود په تجربوي ډول و ازمو. راځئ چې درې قضیې په پام کې ونیسو: ټول د مساوي وسیلو او توپیرونو سره، ټول سټراټونه د مختلف وسیلو او مساوي توپیرونو سره، ټول سټریټونه د مساوي وسیلو او مختلف توپیرونو سره. موږ به په ټولو قضیو کې ټولې درې میتودونه پلي کړو او د پرتله کولو لپاره به یو هسټوګرام او بکس پلاټ جوړ کړو. د کوډ چمتو کول لومړی، راځئ چې په 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 د سمولو پایلې که موږ عمومي نفوس ته وګورو، چیرته چې زموږ ټول سټراټونه ورته ارزښتونه او توپیرونه لري، د ټولو دریو میتودونو پایلې تمه کیږي چې لږ یا لږ مساوي وي. مختلف وسیلې او مساوي توپیرونه ډیرې په زړه پوري پایلې ترلاسه کړې. د سټراټیفیکیشن کارول په ډراماتیک ډول توپیر کموي. په هغو قضیو کې چې د مساوي وسیلو او مختلف توپیرونو سره وي، موږ د نییمان په طریقه کې د توپیر کمښت ګورو. پایله اوس، تاسو کولی شئ د میټریک توپیر کمولو او تجربې ته وده ورکولو لپاره د سټراټیفیکیشن میتود پلي کړئ که تاسو خپل لیدونکي کلستر کړئ او په تخنیکي ډول یې په تصادفي ډول د هر کلستر دننه د ځانګړي وزنونو سره وویشئ!