偶然の可能性は?
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 43/64。
サンセリフ体で読んだ5人の読者は、セリフ体で読んだ5人の読者より6.6秒速く読みました。フォントが何の影響も与えなかったとすれば、どの時間もどちらのグループに入ってもおかしくありません。シャッフルして、それを再現してみましょう。
rng.permutation(a) はシャッフルしたコピーを返します。これを1000回繰り返し、偽の差をすべて記録します。
serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
shuffled = rng.permutation(pooled)
diffs.append(shuffled[5:].mean() - shuffled[:5].mean())偶然による差は0の周辺に積み重なり、本当の差は端の近くに位置します。これは置換検定です。
あるモデルが別のモデルより優れていると判断する前に、シャッフルによってそれほど大きな差が生じることがめったにないか確認しましょう。
チャレンジ
中級犬は2つの方法でおすわりを覚えました。clickerとtreatsには、それぞれの犬のセッション数が入っています。スターターコードではrngとshufflesを作成します。
- 実際の差を計算します。treatsの平均からclickerの平均を引きます。
clicker、次にtreatsをプールし、shuffles回シャッフルして、len(clicker)の位置で分割します。各模擬差は同じ引き算の順序で求めます。他の乱数抽出は行いません。- 実際の差、最初の模擬差、最小値、最大値を小数第2位まで表示します。
ほかの犬の場合:
Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67自分で試してみよう
import numpy as np
# 各犬が"sit"を覚えるのに必要だったトレーニング回数
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# 以下の行は変更しないでください
rng = np.random.default_rng(12)
shuffles = 1000
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ