標本と母集団の違い
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 4/64。
養蜂家が5つの巣箱から採れた蜂蜜の重さをkg単位で量りました。NumPyとpandasでは標準偏差の値が異なります:
values = [18, 22, 25, 19, 26]
print(np.round(np.std(values), 2))
print(np.round(pd.Series(values).std(), 2))これは次のように出力されます:
3.16
3.54どちらも同じ偏差平方和を求めてから、割ります:
母集団にはすべての値が含まれているため、母集団では n で割るのが適切です。標本はそれ自身の平均値に寄るため、ばらつきが小さく見えます。n - 1でその分を補います。
ddof=1を指定すると、NumPyは標本用の式を使います。np.std(a, ddof=1)はpandasの結果と一致します。モデルのデータは標本なので、ツール間で標準偏差が一致しない場合、その原因はバグではなくddofです。
チャレンジ
簡単ある生物学者が、数匹のコウモリの翼幅(cm)の標準偏差を2種類の方法で計算したところ、異なる値になりました。スターターコードでは、値を配列 spans と Series column に読み込みます。チェック結果は False と表示されます。
- コウモリは標本です。両方のツールで標本標準偏差が得られるよう、NumPyの行を修正してください。
- その下に、NumPyのデフォルトの
np.std(spans)がcolumn.std()をどれだけ下回るかを、小数点以下2桁で出力してください。
翼幅が33、27、30、35、29の場合:
Sample std: 3.19 cm, tools agree: True
Dividing by n underestimated it by 0.34 cm自分で試してみよう
import numpy as np
import pandas as pd
n = int(input())
values = []
for i in range(n):
values.append(int(input()))
spans = np.array(values)
column = pd.Series(values)
# このチェックでは False と表示されます。両方のツールが標本標準偏差を返すように NumPy の行を修正してください
numpy_std = np.round(np.std(spans), 2)
pandas_std = np.round(column.std(), 2)
print(f"Sample std: {numpy_std} cm, tools agree: {numpy_std == pandas_std}")
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ