Randomized block design: वैरिएंस नियंत्रित करना

Python में Experimental Design

James Chapman

Curriculum Manager, DataCamp

ब्लॉकिंग समझना

 

  • मिलते-जुलते यूनिट्स को समूहित कर वैरिएंस घटाएँ
  • हर ब्लॉक को सभी ट्रीटमेंट मिलें
  • ब्लॉक इफेक्ट्स को नियंत्रित कर ट्रीटमेंट इफेक्ट्स पर फोकस करें

ब्लॉक रैंडमाइज़ेशन का उदाहरण, जिसमें नारंगी और सफेद वर्गों की दो ग्रिड दिखाई गई हैं

Python में Experimental Design

ब्लॉक डिज़ाइन डेटा उदाहरण

athletes.head()
   Athlete_ID Initial_Fitness_Level  Muscle_Gain_kg
0         113              Beginner        3.225102
1          30              Advanced        3.976548
2         183          Intermediate        5.165449
3         200              Beginner        2.188297
4         194              Beginner        4.724162
Python में Experimental Design

Randomized block design लागू करना

  • ब्लॉक्स के भीतर शफ़ल करने के लिए .groupby() इस्तेमाल करें
blocks = athletes.groupby('Initial_Fitness_Level').apply(

lambda x: x.sample(frac=1)
)
blocks = blocks.reset_index(drop=True) blocks
     Athlete_ID Initial_Fitness_Level  Muscle_Gain_kg
0           198              Advanced           5.742
1           146              Advanced           6.248
2           157              Advanced           6.049
..          ...                   ...             ...
198         164          Intermediate           6.134
199         178          Intermediate           6.591
Python में Experimental Design

Randomized ब्लॉक्स लागू हो चुके हैं

  • ब्लॉक्स के भीतर रैंडम ट्रीटमेंट असाइनमेंट के लिए numpy.random.choice()
blocks['Treatment'] = np.random.choice(
    ['Cardio', 'Strength Training', 'Mixed'],
    size=len(blocks))

blocks.sample(n=5)
     Athlete_ID  Initial_Fitness_Level  Muscle_Gain_kg          Treatment
 87         194               Beginner           4.724             Cardio
 54           3               Advanced           3.731  Strength Training
177          80           Intermediate           6.758              Mixed
146         183           Intermediate           5.165  Strength Training          
 60         190               Advanced           3.763             Cardio
Python में Experimental Design

ब्लॉक्स के भीतर ट्रीटमेंट इफेक्ट्स का विज़ुअलाइज़ेशन

import seaborn as sns
sns.boxplot(x='Initial_Fitness_Level', y='Muscle_Gain_kg', hue='Treatment', data=blocks)
plt.show()

ब्लॉक्स के भीतर बॉक्सप्लॉट

Python में Experimental Design

ब्लॉक्स के भीतर ANOVA

  • सिग्निफिकेंस लेवल $\alpha$ = 0.05 मानें
from scipy.stats import f_oneway
blocks.groupby('Initial_Fitness_Level').apply(
  lambda x: f_oneway(x[x['Treatment'] == 'Cardio']['Muscle_Gain_kg'], 
                     x[x['Treatment'] == 'Mixed']['Muscle_Gain_kg'],
                     x[x['Treatment'] == 'Strength Training']['Muscle_Gain_kg'])
)
Block
Initial_Fitness_Level
Advanced        (0.7951054385317405, 0.4555687666120679)
Beginner        (0.1085790370950905, 0.8972754969684291)
Intermediate    (0.5678877824942661, 0.5698403547950377)
dtype: object
Python में Experimental Design

ब्लॉक्स के पार इफेक्ट्स का विज़ुअलाइज़ेशन

import seaborn as sns
sns.boxplot(x='Initial_Fitness_Level', y='Muscle_Gain_kg', data=blocks)
plt.show()

ब्लॉक्स के पार बॉक्सप्लॉट

Python में Experimental Design

ब्लॉक्स के बीच ANOVA

f_oneway(
  blocks[blocks['Initial_Fitness_Level'] == "Advanced"]['Muscle_Gain_kg'], 
  blocks[blocks['Initial_Fitness_Level'] == "Beginner"]['Muscle_Gain_kg'], 
  blocks[blocks['Initial_Fitness_Level'] == "Intermediate"]['Muscle_Gain_kg']
)
F_onewayResult(statistic=2.325058605244051, pvalue=0.10045536062209368)
Python में Experimental Design

अभ्यास करते हैं!

Python में Experimental Design

Preparing Video For Download...