무작위화 블록 설계 구현하기
이전에 함께 작업했던 제조 회사가 여전히 작업자 생산성에 대한 실험을 진행하고자 합니다. 앞서 두 블록은 무작위로 설정했는데, 이렇게 해도 되지만, 비슷한 특성을 기준으로 피험자를 묶는 편이 더 나을 때가 있습니다.
이번에도 동일한 직원들이 불러와지지만, productivity라는 DataFrame에 1200명의 다른 동료도 포함되어 있습니다. 또한 시간당 생산 단위를 기준으로 한 작업자 'productivity_score' 열이 포함되어 있어요. 이 열은 비슷한 생산성 값을 가진 블록을 만들기 위해 세 그룹으로 구간화(binning)되었습니다. 회사는 전사적으로 세 가지 옵션('Bonus', 'Profit Sharing', 'Work from Home')의 새로운 인센티브 프로그램을 무작위로 배정하여 적용하고자 합니다.
numpy와 pandas는 각각 np, pd로 불러와져 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 실험 설계
연습 안내
block들을 섞어서 새로운 DataFrameprod_df를 만드세요.- 인덱스를 재설정하여
block이 인덱스이자 열로 동시에 존재하지 않도록 하세요. 'Treatment'열에 세 가지 처치를 무작위로 배정하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Randomly assign workers to blocks
prod_df = productivity.____('____').apply(
lambda x: x.____(____)
)
# Reset the index
prod_df = prod_df.____(____)
# Assign treatment randomly
prod_df['Treatment'] = np.random.choice(
['____', '____', '____'],
size=len(____)
)