paint-brush
ለሙከራ ትንተና የስትራቴሽን ዘዴን መጠቀም@nataliaogneva
33,138 ንባቦች
33,138 ንባቦች

ለሙከራ ትንተና የስትራቴሽን ዘዴን መጠቀም

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

በጣም ረጅም፤ ማንበብ

የተራቀቀ ናሙና በመረጃ ትንተና ውስጥ የሙከራ ቅልጥፍናን እና ሜትሪክ ስሜትን ለማሳደግ ኃይለኛ ዘዴ ነው። ታዳሚዎችዎን በማሰባሰብ እና በተወሰኑ ክብደቶች በመከፋፈል ሙከራዎችን ማመቻቸት፣ ልዩነትን መቀነስ እና የውጤት አስተማማኝነትን ማሳደግ ይችላሉ።

Company Mentioned

Mention Thumbnail
featured image - ለሙከራ ትንተና የስትራቴሽን ዘዴን መጠቀም
Natalia Ogneva HackerNoon profile picture
0-item


ማንኛውም ሙከራ በፈጣን ውጤቶች እና በመለኪያ ትብነት መካከል የሚደረግ ልውውጥን ያካትታል። የተመረጠው መለኪያ በልዩነት ሰፊ ከሆነ፣ የሙከራው ውጤት ትክክል መሆኑን ለማረጋገጥ ረጅም ጊዜ መጠበቅ አለብን። ተንታኞች ብዙ ጊዜ ወይም ሜትሪክ ስሜታዊነት ሳያጡ ሙከራቸውን እንዲያሳድጉ የሚረዳበትን አንድ ዘዴ እንመልከት።


የችግር አፈጣጠር

አዲስ የደረጃ ስልተ-ቀመርን ለመፈተሽ መደበኛ ሙከራ አድርገናል እንበል፣ የክፍለ-ጊዜ ርዝመት እንደ ዋና መለኪያ። በተጨማሪም፣ የእኛ ታዳሚዎች በግምት በሦስት ቡድን ሊከፋፈሉ እንደሚችሉ አስቡበት፡ 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


የማስመሰል ውጤቶች

አጠቃላይ ህዝቦቻችንን ከተመለከትን ፣ ሁሉም የእኛ ስትራቶች ተመሳሳይ እሴቶች እና ልዩነቶች ያላቸው ፣ የሦስቱም ዘዴዎች ውጤቶች የበለጠ ወይም ያነሰ እኩል ይሆናሉ ተብሎ ይጠበቃል።

የተለያዩ ዘዴዎች እና እኩል ልዩነቶች የበለጠ አስደሳች ውጤቶችን አግኝተዋል. ስትራቲፊሽን መጠቀም ልዩነትን በእጅጉ ይቀንሳል።

በተመጣጣኝ መንገድ እና የተለያዩ ልዩነቶች ባሉበት ሁኔታ በኔይማን ዘዴ ልዩነት መቀነስ እናያለን።

ማጠቃለያ

አሁን፣ ታዳሚዎችዎን ካሰባሰቡ እና በየክላስተር ውስጥ በዘፈቀደ በተወሰነ ክብደቶች ከከፋፈሏቸው እና ሙከራውን ለማሳደግ የስታቲፊኬሽን ዘዴውን መተግበር ይችላሉ።