概要
データ分析や統計学において、データのばらつきや分散を理解することは非常に重要です。本記事では、標本分散と標準偏差について解説し、正規分布に近いデータセットを用いてPythonでこれらの統計量を計算する方法を紹介します。文章はGPT O1-previewで書いていています。
はじめに
標本分散:サンプル内のデータが平均からどれだけ離れているかを示す指標。
標準偏差:分散の平方根で、データのばらつきを元の単位で表します。
分散と標準偏差の基礎
分散とは
分散は、データポイントが平均値からどれだけ散らばっているかを示します。各データポイントと平均値の差の二乗の平均を計算して求めます。
s^2 = \frac{1}{n - 1} \sum_{i=1}^{n} (x_i - \bar{x})^2
s^2 :標本分散
n :サンプルサイズ(データの総数)
x_i :各データポイント
\bar{x} :標本平均
標準偏差とは
標準偏差は、分散の平方根を取ったもので、データのばらつきを元の単位で示します。
s = \sqrt{s^2}
コード全文
# Import Necessary Libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Fix the seed for reproducibility
np.random.seed(0)
# Generate sample data: Normally distributed scores with mean=70 and std=10
scores = np.random.normal(loc=70, scale=10, size=1000)
# Convert data to a Pandas Series
scores_series = pd.Series(scores)
# Calculate the sample mean
mean_score = scores_series.mean()
print(f"Sample Mean: {mean_score:.2f}")
# Calculate the sample variance (unbiased estimator)
variance = scores_series.var(ddof=1)
print(f"Sample Variance: {variance:.2f}")
# Calculate the standard deviation
std_deviation = scores_series.std(ddof=1)
print(f"Standard Deviation: {std_deviation:.2f}")
# Plot the histogram
plt.hist(scores, bins=30, edgecolor='black')
plt.title('Distribution of Math Test Scores')
plt.xlabel('Score')
plt.ylabel('Frequency')
plt.grid(axis='y', alpha=0.75)
plt.show()
表示結果
結果の解釈
標本平均:約69.84で、データの中心的な傾向を示しています。
標本分散:約97.52で、データが平均からどれだけ離れているかを示します。
標準偏差:約9.87で、データポイントが平均から平均してどれだけ離れているかを示します。
ヒストグラムから、データが正規分布に従っていることが確認できます。大半の点数が平均値付近に集中しています。
分母が n−1 になる理由
分母が n−1 になるのは、データの自由度を考慮しているためです。標本平均を計算する際に1つの自由度を失うため、分母を nではなくn−1 とします。これにより、標本分散が母集団分散の不偏推定量となります。
なぜ n−2 ではないのか?
分母が n−2 となるのは、さらにもう1つの制約がある場合です。例えば、回帰分析において、データの点数
nから回帰モデルで使われる2つのパラメータ(傾きと切片)を推定する場合、自由度は n−2 となります。これは平均の代わりに2つのパラメータを推定するため、n−2 個のデータ点が自由に変動できるためです。
しかし、単純な標本分散の計算では、制約となるのは標本平均 1つだけなので、自由度は n−1 となります。
自由度とは?
自由度とは、データの中で制約を受けずに自由に変動できるデータ点の数を指します。標本平均を計算するとき、すべてのデータ点を使って平均を固定してしまうため、1つのデータ点は他のデータ点に依存することになります。その結果、自由度が1つ減り、自由度は n−1 となります。
例
もう少し具体的に考えてみましょう。
データが
( x_1 = 5 )、( x_2 = 7 )、( x_3 = 9 )
の3つだとします。これらのデータの平均は次のように計算されます。
\bar{x} = \frac{5 + 7 + 9}{3} = 7
もし、私が「このデータの平均が7であることは既に知っている」という条件で、データの1つを勝手に選べるとしたら、たとえば ( x_1 = 5 ) と決めて、次に ( x_2 = 7 ) と決めた場合、残りの ( x_3 ) は自動的に決まります。
x_3 = 3 \bar{x} - x_1 - x_2 = 3 \times 7 - 5 - 7 = 9
つまり、3つ目のデータ ( x_3 ) はもう自由に選べるわけではなく、平均値を保つために他のデータ点に依存しているということです。このように、標本平均を使って計算する場合、自由に動かせるのは ( n - 1 ) 個のデータ点しかなく、それが「自由度が1つ減る」理由です。
結論
標本平均を計算すると、データのうち1つは他のデータに依存することになります。
したがって、自由に選べるデータ点の数、つまり自由度は ( n - 1 ) となります。
分散を計算する際に分母を ( n - 1 ) にするのは、この自由度を考慮して、母集団分散の不偏推定量にするためです。