Menu
CoddyTech

標本平均のばらつき

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 20/64。

30個の小包からなる1つの標本で、平均重量を1つ推定できます。もう一度抽出すると、別の推定値が得られます。40個の標本を示します:

30個の小包からなる各標本につき1つ、合計40個の点。すべての小包の真の平均である8.05 kgの破線の周囲に、約7.2~8.8 kgの範囲で散らばっている

これらを集めるには、ループでサンプリングを繰り返し、各平均をリストに追加してから、そのリストを配列にします:

means = []
for i in range(5):
    sample = rng.choice(parcels, size=30, replace=False)
    means.append(sample.mean())
means = np.array(means)
print(np.round(means, 2))

これは次のように出力されます:

[7.98 8.05 8.12 8.19 8.76]

標本平均自体もランダムであり、means.std()はその変動の大きさを測定します。モデルのテストスコアもそのような平均の1つです。別のテストセットを使えば、その値は変わるでしょう。

challenge icon

チャレンジ

中級

ある苗木園では、園芸家が毎週、1800本の竹から無作為標本を測定します。標本平均は週ごとにどの程度変動するでしょうか?

sample_means(data, size, count)を完成させましょう。dataからsize個の値を含む標本をcount個抽出します。各標本内で同じ値を2回抽出せず、各標本の平均を追加します。スターターコードの最後の行では、この関数を呼び出して結果を出力します。

別の苗木園で、標本のサイズが10の場合:

200 means of 10 plants: 105.25 to 137.13 cm
Spread of the means (std): 5.27 cm

自分で試してみよう

import numpy as np

size = int(input())

# 以下の行は変更しないでください:各竹の高さ(cm)
rng = np.random.default_rng(20)
heights = np.round(rng.normal(95, 15, size=1800), 1)


def sample_means(data, size, count):
    means = []
    # 以下にコードを書いてください:size 個の値からなる標本を count 個作り、それぞれの平均値を保存します

    return np.array(means)


# 以下の行は変更しないでください
means = sample_means(heights, size, 200)
print(f"200 means of {size} plants: {np.round(means.min(), 2)} to {np.round(means.max(), 2)} cm")
print(f"Spread of the means (std): {np.round(means.std(), 2)} cm")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ