![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
ተንታኞች በስራቸው ወቅት በውሂብ ውስጥ ብዙ ጊዜ ያጋጥሟቸዋል፣ ለምሳሌ AB-test analysis, ግምታዊ ሞዴሎችን መፍጠር ወይም የመከታተያ አዝማሚያዎች። ውሳኔዎች ብዙውን ጊዜ በናሙና አማካኝ ላይ የተመሰረቱ ናቸው፣ ይህም ለውጫዊ አካላት በጣም ስሜታዊ እና በሚያስደንቅ ሁኔታ እሴቱን ሊለውጥ ይችላል። ስለዚህ, ትክክለኛውን ውሳኔ ለማድረግ የውጭ አካላትን ማስተዳደር በጣም አስፈላጊ ነው.
ያልተለመዱ እሴቶችን ለመስራት ብዙ ቀላል እና ፈጣን አቀራረቦችን እንመልከት።
አማካኝ የትዕዛዝ ዋጋን እንደ ዋና መለኪያ በመጠቀም የሙከራ ትንተና ማካሄድ እንዳለብህ አስብ። የእኛ መለኪያ አብዛኛውን ጊዜ መደበኛ ስርጭት አለው እንበል። እንዲሁም, በሙከራ ቡድን ውስጥ ያለው የሜትሪክ ስርጭት ከቁጥጥሩ የተለየ መሆኑን እናውቃለን. በሌላ አነጋገር በመቆጣጠሪያው ውስጥ ያለው ስርጭት አማካኝ 10 ነው, እና በፈተናው ውስጥ 12. በሁለቱም ቡድኖች ውስጥ ያለው መደበኛ ልዩነት 3 ነው.
ነገር ግን፣ ሁለቱም ናሙናዎች የናሙናውን መንገድ እና የናሙና መደበኛ ልዩነትን የሚያዛባ ውጫዊ ገጽታዎች አሏቸው።
import numpy as np N = 1000 mean_1 = 10 std_1 = 3 mean_2 = 12 std_2 = 3 x1 = np.concatenate((np.random.normal(mean_1, std_1, N), 10 * np.random.random_sample(50) + 20)) x2 = np.concatenate((np.random.normal(mean_2, std_2, N), 4 * np.random.random_sample(50) + 1))
NB ሜትሪክን ግምት ውስጥ በማስገባት ከሁለቱም ወገኖች ውጫዊ ገጽታዎች ሊኖሩት ይችላል. የእርስዎ መለኪያ ከአንድ ወገን ብቻ ወጣ ያሉ ነገሮች ሊኖሩት ከቻሉ፣ ዘዴዎች ለዛ በቀላሉ ሊለወጡ ይችላሉ።
በጣም ቀላሉ ዘዴ ከ 5% ፐርሰንታይል በፊት እና ከ 95% ፐርሰንታይል በኋላ ሁሉንም ምልከታዎች መቁረጥ ነው. በዚህ አጋጣሚ 10% መረጃውን እንደ ኮንሶ አጥተናል። ነገር ግን፣ ስርጭቶቹ የበለጠ የተፈጠሩ ይመስላሉ፣ እና የናሙና ጊዜያት ወደ ስርጭቱ ጊዜዎች ቅርብ ናቸው።
import numpy as np x1_5pct = np.percentile(x1, 5) x1_95pct = np.percentile(x1, 95) x1_cutted = [i for i in x1 if i > x1_5pct and i < x1_95pct] x2_5pct = np.percentile(x2, 5) x2_95pct = np.percentile(x2, 95) x2_cutted = [i for i in x2 if i > x2_5pct and i < x2_95pct]
ሌላው መንገድ ከተወሰነው ክልል ውጪ ምልከታዎችን ማግለል ነው. ዝቅተኛው ባንድ ከ 25% ፐርሰንታይል ከተቀነሰ የ interquartile ክልል አንድ ግማሽ ያህሉ ሲሆን ከፍተኛ ባንድ ደግሞ 75% ፐርሰንታይል እና አንድ ግማሽ እኩል ነው። እዚህ, መረጃን 0.7% ብቻ እናጣለን. ስርጭቶቹ ከመጀመሪያው የበለጠ የተፈጠሩ ይመስላሉ. የናሙና ጊዜዎች ከማከፋፈያ ጊዜዎች ጋር እኩል ናቸው።
import numpy as np low_band_1 = np.percentile(x1, 25) - 1.5 * np.std(x1) high_band_1 = np.percentile(x1, 75) + 1.5 * np.std(x1) x1_cutted = [i for i in x1 if i > low_band_1 and i < high_band_1] low_band_2 = np.percentile(x2, 25) - 1.5 * np.std(x2) high_band_2 = np.percentile(x2, 75) + 1.5 * np.std(x2) x2_cutted = [i for i in x2 if i > low_band_2 and i < high_band_2]
እዚህ ላይ የተመለከትነው ሁለተኛው ዘዴ የቡት ማሰሪያ ነው. በዚህ አቀራረብ, አማካኙ እንደ ንዑሳን ናሙናዎች ተሠርቷል. በእኛ ምሳሌ, በቁጥጥር ቡድን ውስጥ ያለው አማካይ 10.35 እኩል ነው, እና የሙከራ ቡድን 11.78 ነው. ከተጨማሪ የውሂብ ሂደት ጋር ሲነጻጸር አሁንም የተሻለ ውጤት ነው.
import pandas as pd def create_bootstrap_samples( sample_list: np.array, sample_size: int, n_samples: int ): # create a list for sample means sample_means = [] # loop n_samples times for i in range(n_samples): # create a bootstrap sample of sample_size with replacement bootstrap_sample = pd.Series(sample_list).sample(n = sample_size, replace = True) # calculate the bootstrap sample mean sample_mean = bootstrap_sample.mean() # add this sample mean to the sample means list sample_means.append(sample_mean) return pd.Series(sample_means) (create_bootstrap_samples(x1, len(x1), 1000).mean(), create_bootstrap_samples(x2, len(x2), 1000).mean())
ትክክለኛውን ውሳኔ ለማድረግ ውጫዊ ማወቂያ እና ማቀናበር ጠቃሚ ናቸው። አሁን፣ ቢያንስ ሶስት ፈጣን እና ቀጥተኛ አቀራረቦች ከመተንተን በፊት ውሂቡን ለመፈተሽ ሊረዱዎት ይችላሉ።
ነገር ግን፣ የተገኙት ወጣ ገባዎች ያልተለመዱ እሴቶች እና ለአዲስነት ተፅእኖ ባህሪ ሊሆኑ እንደሚችሉ ማስታወስ አስፈላጊ ነው። ግን ሌላ ታሪክ ነው :)