paint-brush
تجرباتی تجزیہ کے لیے Stratification طریقہ استعمال کرناکی طرف سے@nataliaogneva
33,187 ریڈنگز
33,187 ریڈنگز

تجرباتی تجزیہ کے لیے Stratification طریقہ استعمال کرنا

کی طرف سے Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

8 منٹ 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
ur-flagUR
اس کہانی کو اردو میں پڑھیں!
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
UR

بہت لمبا؛ پڑھنے کے لئے

اعداد و شمار کے تجزیہ میں تجرباتی کارکردگی اور میٹرک حساسیت کو بڑھانے کے لیے اسٹریٹیفائیڈ سیمپلنگ ایک طاقتور تکنیک ہے۔ اپنے سامعین کو کلسٹر کرکے اور انہیں مخصوص وزن کے ساتھ تقسیم کرکے، آپ تجربات کو بہتر بنا سکتے ہیں، تغیرات کو کم کر سکتے ہیں، اور نتائج کی بھروسے کو بڑھا سکتے ہیں۔

Company Mentioned

Mention Thumbnail
Empirical
featured image - تجرباتی تجزیہ کے لیے Stratification طریقہ استعمال کرنا
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.


کسی بھی تجربے میں تیز رفتار نتائج اور میٹرک حساسیت کے درمیان تجارت شامل ہوتی ہے۔ اگر منتخب کردہ میٹرک تغیر کے لحاظ سے وسیع ہے، تو ہمیں تجربہ کے نتائج کے درست ہونے کو یقینی بنانے کے لیے طویل انتظار کرنا چاہیے۔ آئیے تجزیہ کاروں کو بہت زیادہ وقت یا میٹرک حساسیت کھونے کے بغیر اپنے تجربات کو بڑھانے میں مدد کرنے کے لیے ایک طریقہ پر غور کریں۔


مسئلہ کی تشکیل

فرض کریں کہ ہم ایک نئے درجہ بندی الگورتھم کو جانچنے کے لیے ایک معیاری تجربہ کرتے ہیں، جس میں سیشن کی لمبائی بنیادی میٹرک کے طور پر ہوتی ہے۔ مزید برآں، اس بات پر غور کریں کہ ہمارے سامعین کو تقریباً تین گروہوں میں تقسیم کیا جا سکتا ہے: 1 ملین نوعمر، 2 ملین صارفین جن کی عمریں 18-45، اور 3 ملین صارفین جن کی عمریں 45 اور اس سے زیادہ ہیں۔ نئے درجہ بندی الگورتھم کا ردعمل ان سامعین گروپوں میں نمایاں طور پر مختلف ہوگا۔ یہ وسیع تغیر میٹرک کی حساسیت کو کم کرتا ہے۔


دوسرے الفاظ میں، آبادی کو تین حصوں میں تقسیم کیا جا سکتا ہے، جس کی تفصیل درج ذیل ہے:

image


ہم کہتے ہیں کہ ہر جزو کی ایک عام تقسیم ہوتی ہے۔ پھر، آبادی کے لیے مرکزی میٹرک کی بھی ایک عام تقسیم ہوتی ہے۔

image

استحکام کا طریقہ

ہم اپنے صارفین کے درمیان فرق پر غور کیے بغیر کلاسیکی تجرباتی ڈیزائن میں آبادی سے تمام صارفین کو تصادفی طور پر تقسیم کرتے ہیں ۔ اس طرح، ہم مندرجہ ذیل متوقع قدر اور تغیر کے ساتھ نمونے پر غور کرتے ہیں۔

image


ایک اور طریقہ یہ ہے کہ عام آبادی میں سٹریٹ کے وزن کے مطابق ہر اسٹریٹ کے اندر تصادفی طور پر تقسیم کیا جائے ۔

image

اس صورت میں، متوقع قدر اور تغیرات درج ذیل ہیں۔

image


متوقع قدر وہی ہے جو پہلے انتخاب میں ہے۔ تاہم، تغیر کم ہے، جو میٹرک کی اعلیٰ حساسیت کی ضمانت دیتا ہے۔

اب، Neyman کے طریقہ کار پر غور کریں. وہ صارفین کو مخصوص وزن کے ساتھ ہر اسٹریٹ کے اندر تصادفی طور پر تقسیم کرنے کا مشورہ دیتے ہیں۔

image

لہذا، متوقع قدر اور تغیر اس معاملے میں درج ذیل کے برابر ہیں۔

image

متوقع قدر غیر علامتی طور پر پہلی صورت میں متوقع قدر کے برابر ہے۔ تاہم، فرق بہت کم ہے.

تجرباتی جانچ

ہم نے اس طریقہ کار کی افادیت کو نظریاتی طور پر ثابت کیا ہے۔ آئیے نمونوں کی تقلید کرتے ہیں اور اسٹریٹیفکیشن کے طریقہ کار کو تجرباتی طور پر جانچتے ہیں۔

آئیے تین صورتوں پر غور کریں:

  • مساوی ذرائع اور تغیرات کے ساتھ تمام پٹیاں،
  • تمام اسٹریٹس مختلف ذرائع اور مساوی تغیرات کے ساتھ،
  • تمام اسٹریٹس مساوی ذرائع اور مختلف تغیرات کے ساتھ۔

ہم تینوں طریقوں کو تمام صورتوں میں لاگو کریں گے اور ان کا موازنہ کرنے کے لیے ایک ہسٹوگرام اور باکس پلاٹ بنائیں گے۔

کوڈ کی تیاری

سب سے پہلے، آئیے 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


نقلی نتائج

اگر ہم عام آبادی پر نظر ڈالیں، جہاں ہمارے تمام طبقوں کی قدریں اور تغیرات یکساں ہیں، تینوں طریقوں کے نتائج کم و بیش برابر ہونے کی توقع ہے۔

image

مختلف ذرائع اور مساوی تغیرات نے مزید دلچسپ نتائج حاصل کیے۔ استحکام کا استعمال ڈرامائی طور پر تغیر کو کم کرتا ہے۔

image

مساوی ذرائع اور مختلف تغیرات والے معاملات میں، ہم Neyman کے طریقہ کار میں تغیرات میں کمی دیکھتے ہیں۔

image

نتیجہ

اب، اگر آپ اپنے سامعین کو کلسٹر کرتے ہیں اور تکنیکی طور پر انہیں مخصوص وزن کے ساتھ ہر کلسٹر کے اندر تصادفی طور پر تقسیم کرتے ہیں تو آپ میٹرک تغیر کو کم کرنے اور تجربے کو فروغ دینے کے لیے درجہ بندی کا طریقہ استعمال کر سکتے ہیں!

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

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

ہینگ ٹیگز

یہ مضمون اس میں پیش کیا گیا تھا۔...

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