無作為化ブロック計画の実装
以前に一緒に作業した製造会社は、引き続き作業者の生産性に関する実験に関心があります。前回は、2つのブロックをランダムに設定しました。これでも機能しますが、被験者を類似した特性に基づいてグループ化したほうが良い場合があります。
同じ従業員データを、今回は 1,200 人の同僚を含む productivity という DataFrame に読み込みました。1時間あたりの生産数に基づく作業者の 'productivity_score' 列も含まれています。この列は、類似した生産性に基づいてブロックを作るために3つのグループにビン分割されています。会社は、新しいインセンティブ制度('Bonus'、'Profit Sharing'、'Work from Home' の3種類)を全社で、処置はランダムに適用したいと考えています。
numpy と pandas はそれぞれ np と pd として読み込まれています。
この演習はコースの一部です
Pythonで学ぶ実験計画法
演習の手順
blockをシャッフルして、新しい DataFrameprod_dfを作成します。- インデックスをリセットし、
blockがインデックスと列の両方にならないようにします。 'Treatment'列に、3つの処置をランダムに割り当てます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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(____)
)