ዝኾነ ፈተነ ኣብ መንጎ ቅልጡፍ ውጽኢትን ሜትሪካዊ ተነቃፍነትን ምትሕውዋስ ዘጠቓልል እዩ። እቲ ዝተመርጸ ሜትሪክ ብመንጽር ፍልልይ ሰፊሕ እንተኾይኑ፡ ውጽኢት ናይቲ ፈተነ ቅኑዕ ምዃኑ ንምርግጋጽ ነዊሕ ክንጽበ ኣለና። ተንተንቲ ብዙሕ ግዜ ወይ ሜትሪካዊ ተነቃፍነት ከይከሰሩ ፈተነታቶም ንኸዕብዩ ዝሕግዝ ሓደ ሜላ ንርአ።
ሓድሽ ደረጃ ኣልጎሪዝም ንምፍታን መደበኛ ፈተነ ንገብር ንበል፣ ንውሓት ክፍለ ግዜ ከም ቀዳማይ ሜትሪክ። ብተወሳኺ፡ ተዓዘብትና ብግምት ኣብ ሰለስተ ጉጅለታት ክምደቡ ከም ዝኽእሉ ኣብ ግምት ኣእቱ፡ 1 ሚልዮን መንእሰያት፡ 2 ሚልዮን ተጠቀምቲ ካብ 18-45 ዓመት ዝዕድሚኦም፡ ከምኡ’ውን 3 ሚልዮን ተጠቀምቲ ካብ 45 ዓመትን ልዕሊኡን ዝዕድሚኦም። ንሓድሽ ደረጃ ምሃብ ኣልጎሪዝም ዝወሃብ ምላሽ ኣብ መንጎ እዞም ጉጅለታት ተዓዘብቲ ኣዝዩ ክፈላለ እዩ። እዚ ሰፊሕ ፍልልይ እዚ ንተሃዋስነት ናይቲ ሜትሪክ ይንክዮ።
ብኻልእ ኣዘራርባ፡ እቲ ህዝቢ ኣብ ሰለስተ ጽፍሕታት ክምቀል ይኽእል፡ እዚ ድማ ከምዚ ዝስዕብ ይግለጽ፤
ነፍሲ ወከፍ ባእታ ንቡር ዝርገሐ ኣለዎ ንበል። ድሕሪኡ፡ እቲ ቀንዲ ሜትሪክ ንህዝቢ እውን ንቡር ዝርገሐ ኣለዎ።
ኣብ መንጎ ተጠቀምትና ዘሎ ፍልልይ ኣብ ግምት ከየእተና ንኹሎም ተጠቀምቲ ካብቲ ህዝቢ ብዘይ መደብ ኣብ ክላሲካል ዲዛይን ፈተነ ንመቕሎ ። በዚ ድማ ነቲ ናሙና በዚ ዝስዕብ ትጽቢት ዝግበረሉ ዋጋን ፍልልይን ንርእዮ።
ካልእ መንገዲ ድማ ኣብ ውሽጢ ነፍሲ ወከፍ ስትራት ብመሰረት ክብደት ናይቲ ኣብ ሓፈሻዊ ህዝቢ ዘሎ ስትራት ብዘይ መደብ ምምቃል እዩ።
ኣብ ከምዚ ኩነታት እቲ ትፅቢት ዝግበረሉ ዋጋን ፍልልይን እዞም ዝስዕቡ እዮም።
እቲ ትጽቢት ዝግበረሉ ዋጋ ከምቲ ኣብ ቀዳማይ ምርጫ ዝነበረ እዩ። ይኹን እምበር እቲ ፍልልይ ውሑድ ስለዝኾነ ዝለዓለ ሜትሪክ ተነቃፍነት ውሕስነት ይህብ።
ሕጂ ፡ ንኣገባብ ነይማን ንርአ . ኣብ ውሽጢ ነፍሲ ወከፍ ስትራት ብፍሉይ ክብደት ተጠቀምቲ ብዘይ መደብ ክምቀሉ ይመኽሩ።
ስለዚ፡ እቲ ትጽቢት ዝግበረሉ ዋጋን ፍልልይን ኣብዚ ጉዳይ እዚ ማዕረ እዞም ዝስዕቡ እዮም።
እቲ ትጽቢት ዝግበረሉ ዋጋ ኣብቲ ቀዳማይ ጉዳይ ብኣሲምፕቶቲክ ማዕረ እቲ ትጽቢት ዝግበረሉ ዋጋ እዩ። ይኹን እምበር እቲ ፍልልይ ኣዝዩ ውሑድ እዩ።
ብቕዓት ናይዚ ኣገባብ ብክልሰ-ሓሳብ ኣረጋጊጽናዮ ኣለና። ናሙናታት ኣምሲልና ነቲ ኣገባብ ምድብላቕ ብተሞክሮ ንፈትኖ።
ሰለስተ ጉዳያት እስከ ንርአ፤
ሰለስቲኦም ኣገባባት ኣብ ኩሉ ኩነታት ክንጥቀመሉን ንምንጽጻር ሂስቶግራምን ቦክስፕሎትን ክንስእል ኢና።
መጀመርታ ኣብ ፓይቶን ንሓፈሻዊ ህዝብና ብሰለስተ ስትራት ዝቖመ ክላስ ንፈጥር።
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
ኩሎም ስትራታትና ሓደ ዓይነት ክብርታትን ፍልልያትን ዘለዎም ሓፈሻዊ ህዝቢ እንተርኢና፡ ውጽኢት ሰለስቲኦም ኣገባባት ብውሑድ ብብዙሕ ማዕረ ክኸውን ትጽቢት ይግበር።
ዝተፈላለዩ ማእከላይ ደረጃታትን ማዕረ ፍልልያትን ዝያዳ መሳጢ ውጽኢት ረኺቦም። ስትራቲፊኬሽን ምጥቃም ንፍልልይ ብዓቢኡ ይንክዮ።
ኣብ ማዕረ ማእከላይ ደረጃን ዝተፈላለየ ፍልልይን ዘለዎም ጉዳያት፡ ኣብ ኣገባብ ነይማን ምጉዳል ፍልልይ ንርኢ።
ሕጂ፡ ንሰማዕትኻ እንተ ኣኪብካዮምን ብቴክኒካዊ መዳይ ኣብ ውሽጢ ነፍሲ ወከፍ ክላስተር ብፍሉይ ክብደት ብዘይ መደብ እንተመቒልካዮምን፡ ነቲ ሜትሪካዊ ፍልልይ ንምንካይን ነቲ ፈተነ ንምዕባይን ነቲ ናይ ምድብ ኣገባብ ክትጥቀመሉ ትኽእል ኢኻ!