设置实验

Python 实验设计

James Chapman

Curriculum Manager, DataCamp

实验设计的定义

 

  • 一种流程
  • 客观可控的方法
  • 得出明确结论
    • 针对一个假设

experimental-design.png

1 https://www.sciencedirect.com/topics/earth-and-planetary-sciences/experimental-design
Python 实验设计

形成有力的结论表述

X 可能影响了 Y。存在较小可能的误差风险

 

  • 精确、量化的表述

P 值分析表明,X 对 Y 有影响I 类错误风险为 10%

  • I 类错误:错误地拒绝原假设

 

  • 目标:实验设计统计分析
Python 实验设计

为何进行实验设计?

 

适用于多个领域:

  • 医学研究
  • 市场营销
  • 产品分析
  • 农业
  • 政府政策

why.png

Python 实验设计

一些术语…

     

  • 受试对象(Subjects) = 我们实验的对象(人、员工、用户等)

受试对象:此处为一位人。

Python 实验设计

一些术语…

     

  • 受试对象(Subjects) = 我们实验的对象(人、员工、用户等)
  • 处理(Treatment) = 给一组实施的某种改变

对一组受试对象实施处理。

Python 实验设计

一些术语…

     

  • 受试对象(Subjects) = 我们实验的对象(人、员工、用户等)
  • 处理(Treatment) = 给一组实施的某种改变

对处理组实施处理。

Python 实验设计

一些术语…

     

  • 受试对象(Subjects) = 我们实验的对象(人、员工、用户等)
  • 处理(Treatment) = 给一组实施的某种改变
  • 对照(Control) = 未实施改变的一组

将受试对象分为处理组和对照组。

Python 实验设计

将受试对象分组

     

  • 如何将受试对象分组?
    • 选项1——非随机("切分"DataFrame)
    • 选项2——随机分配

     

  • 示例:200名受试者身高在 heights DataFrame 中
    id  height
0    0  177.98
1    1  174.17
2    2  178.89
Python 实验设计

非随机分配

 

按 DataFrame 切片分配

group1_nonrandom = heights.iloc[0:100,:]
group2_nonrandom = heights.iloc[100:,:]

compare_df = pd.concat( [group1_nonrandom['height'].describe(), group2_nonrandom['height'].describe()], axis=1) compare_df.columns = ['group1', 'group2'] print(compare_df)
  • 差异很大!(均值相差9cm)

 

 

       group1  group2
count  100.00  100.00
mean   170.32  179.19 <--
std      3.28    3.50
min    159.28  175.03
25%    168.06  176.57
50%    170.75  178.03
75%    173.09  180.79
max    174.92  191.32
Python 实验设计

随机分配

     

  • 使用 .sample()
    • nfrac(比例 0-1)
group1 = heights.sample(frac=0.5,
                        replace=False,
                        random_state=42)

group2 = heights.drop(group1.index)
print(compare_df)
  • 近得多!(<1cm)

 

       group1  group2
count  100.00  100.00
mean   175.10  174.41 <--
std      5.39    5.78
min    163.07  159.28
25%    171.32  170.17
50%    175.22  174.86
75%    178.32  177.85
max    189.78  191.32
Python 实验设计

分配小结

 

  • 应将受试对象_随机_分配到各组
    • 才能将观测到的变化正确归因

 

  • 随机分配受试对象.sample()
  • 核验差异.describe()

将受试对象随机分配到处理组和对照组。

Python 实验设计

让我们来练习!

Python 实验设计

Preparing Video For Download...