실험 설정

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에 영향을 줌. 제1종 오류 위험 10%

  • 제1종 오류: 귀무가설을 잘못 기각

 

  • 목표: 실험 설계통계 분석
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() 사용
    • n 또는 frac(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...