Thiết lập thí nghiệm

Thiết kế thí nghiệm với Python

James Chapman

Curriculum Manager, DataCamp

Định nghĩa Experimental Design

 

  • Một quy trình
  • Cách tiếp cận có mục tiêukiểm soát
  • Rút ra kết luận cụ thể
    • Dựa trên một giả thuyết

thiết kế thí nghiệm.png

1 https://www.sciencedirect.com/topics/earth-and-planetary-sciences/experimental-design
Thiết kế thí nghiệm với Python

Tạo lập phát biểu vững chắc

X có lẽ đã ảnh hưởng đến Y. Nhiều khả năng vẫn có một rủi ro nhỏ sai số

 

  • Ngôn ngữ chính xác và định lượng

Phân tích P-value cho thấy X ảnh hưởng đến Y với rủi ro 10% của lỗi Loại I

  • Lỗi Loại I: bác bỏ sai giả thuyết không

 

  • Mục tiêu: thiết kế thí nghiệmphân tích thống kê
Thiết kế thí nghiệm với Python

Vì sao cần experimental design?

 

Hữu ích trong nhiều lĩnh vực:

  • Nghiên cứu y học
  • Marketing
  • Phân tích sản phẩm
  • Nông nghiệp
  • Chính sách công

vì sao.png

Thiết kế thí nghiệm với Python

Một số thuật ngữ...

     

  • Đối tượng (subjects) = cái chúng ta thí nghiệm lên (người, nhân viên, người dùng, v.v.)

Một đối tượng: ở đây là một người.

Thiết kế thí nghiệm với Python

Một số thuật ngữ...

     

  • Đối tượng (subjects) = cái chúng ta thí nghiệm lên (người, nhân viên, người dùng, v.v.)
  • Xử lý (treatment) = một thay đổi áp dụng cho một nhóm

Áp dụng xử lý cho một nhóm đối tượng.

Thiết kế thí nghiệm với Python

Một số thuật ngữ...

     

  • Đối tượng (subjects) = cái chúng ta thí nghiệm lên (người, nhân viên, người dùng, v.v.)
  • Xử lý (treatment) = một thay đổi áp dụng cho một nhóm

Áp dụng xử lý cho nhóm được xử lý.

Thiết kế thí nghiệm với Python

Một số thuật ngữ...

     

  • Đối tượng (subjects) = cái chúng ta thí nghiệm lên (người, nhân viên, người dùng, v.v.)
  • Xử lý (treatment) = một thay đổi áp dụng cho một nhóm
  • Đối chứng (control) = nhóm không nhận thay đổi nào

Chia đối tượng thành nhóm xử lý và đối chứng.

Thiết kế thí nghiệm với Python

Gán đối tượng vào nhóm

     

  • Gán đối tượng vào các nhóm thế nào?
    • Cách 1 - không ngẫu nhiên ('cắt' DataFrame)
    • Cách 2 - gán ngẫu nhiên

     

  • Ví dụ: 200 chiều cao đối tượng trong DataFrame heights
    id  height
0    0  177.98
1    1  174.17
2    2  178.89
Thiết kế thí nghiệm với Python

Gán không ngẫu nhiên

 

Gán bằng cách cắt (slicing) 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)
  • Khác biệt lớn! (Trung bình lệch 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
Thiết kế thí nghiệm với Python

Gán ngẫu nhiên

     

  • Dùng .sample()
    • n hoặc frac (tỷ lệ 0-1)
group1 = heights.sample(frac=0.5,
                        replace=False,
                        random_state=42)

group2 = heights.drop(group1.index)
print(compare_df)
  • Gần nhau hơn nhiều! (<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
Thiết kế thí nghiệm với Python

Tóm tắt việc gán nhóm

 

  • Nên ngẫu nhiên gán đối tượng vào nhóm
    • Gán như vậy giúp quy kết đúng thay đổi quan sát được

 

  • Gán đối tượng ngẫu nhiên: .sample()
  • Kiểm tra khác biệt: .describe()

Gán ngẫu nhiên đối tượng vào nhóm xử lý và đối chứng.

Thiết kế thí nghiệm với Python

Cùng luyện tập nào!

Thiết kế thí nghiệm với Python

Preparing Video For Download...