統計的推測の基本
母集団と標本
「日本人全員の平均身長を知りたい」——でも全員を測定するのは不可能です。そこで1000人を無作為に選んで測り、その平均から全体を推定します。これが統計的推測の基本発想です。
母集団(population):調べたい対象全体(例:日本人全員の身長)
標本(sample):母集団から取り出した一部(例:1000人を無作為抽出)
実際には母集団全体を調べることはほぼ不可能なので、標本から母集団の特徴を推定します。これが統計的推測(statistical inference)です。
| 量 | 母集団 | 標本 |
|---|---|---|
| 平均 | (母平均、未知) | (標本平均、計算可能) |
| 分散 | (母分散、未知) | (標本分散、計算可能) |
| 大きさ | (通常は未知) | (既知) |
標本平均の性質
「1000人を選んで身長の平均を計算する」——この「標本平均」は、どんな1000人を選ぶかによって毎回少し異なります。つまり標本平均 自体が確率変数なのです:
重要: 標本サイズ を4倍にすると、標準誤差は半分になります——「より多くのデータを取るほど推定は精密になるが、4倍のデータで精度は2倍」という関係です。
中心極限定理
統計学で最も重要な定理の一つです——「母集団がどんな形の分布でも、標本平均は正規分布に近づく」という驚きの定理です:
母集団が一様分布でも、指数分布でも、二峰性でも、標本平均を繰り返し取ると正規分布に近づくのです。「どんな形の元データでも、平均を繰り返し計算すると必ずベルカーブになる」——これが中心極限定理の神秘的な美しさです。
目安: で多くの場合に十分な近似になります。
中心極限定理シミュレーション
上のグラフが「母集団(右に歪んだ分布)」、下が「同じ母集団から5個ずつサンプリングして平均を繰り返し計算した分布」です。最初は歪んでいた形が、繰り返すうちにだんだんと正規分布(黄色の曲線)に近づいていく様子を確認してください。
var sampleSize = 5;
var sampleMeans = [];
var timer = 0;
var popBins = [];
var meanBins = [];
var numBins = 30;
var maxPop = 0, maxMean = 0;
for (var b = 0; b < numBins; b++) {
popBins.push(0);
meanBins.push(0);
}
var seed = 99;
function rand() {
seed = (seed * 1664525 + 1013904223) & 0x7fffffff;
return seed / 0x7fffffff;
}
function skewedRand() {
var u = rand();
return u * u;
}
function takeSample() {
var vals = [];
for (var i = 0; i < sampleSize; i++) {
var v = skewedRand();
vals.push(v);
var bi = Math.floor(v * numBins);
if (bi >= numBins) bi = numBins - 1;
popBins[bi]++;
if (popBins[bi] > maxPop) maxPop = popBins[bi];
}
var sum = 0;
for (var j = 0; j < vals.length; j++) sum += vals[j];
var mean = sum / vals.length;
sampleMeans.push(mean);
var bi2 = Math.floor(mean * numBins);
if (bi2 >= numBins) bi2 = numBins - 1;
meanBins[bi2]++;
if (meanBins[bi2] > maxMean) maxMean = meanBins[bi2];
}
function drawHistogram(bins, max, x0, y0, w, h, color) {
var bw = w / bins.length;
for (var i = 0; i < bins.length; i++) {
var bh = max > 0 ? (bins[i] / max) * h : 0;
ctx.fillStyle = color;
ctx.fillRect(x0 + i * bw, y0 + h - bh, bw - 1, bh);
}
ctx.strokeStyle = '#334155';
ctx.lineWidth = 1;
ctx.strokeRect(x0, y0, w, h);
}
function gauss(x, mu, sigma) {
return Math.exp(-0.5 * ((x - mu) / sigma) ** 2) / (sigma * Math.sqrt(2 * Math.PI));
}
function loop() {
ctx.clearRect(0, 0, W, H);
timer += 0.016;
if (timer > 0.06 && sampleMeans.length < 800) {
for (var k = 0; k < 5; k++) takeSample();
timer = 0;
}
var histX = 40, histW = W - 60;
ctx.fillStyle = '#94a3b8';
ctx.font = 'bold 12px sans-serif';
ctx.textAlign = 'left';
ctx.fillText('母集団(右歪み分布 x²型)', histX, 16);
drawHistogram(popBins, maxPop, histX, 22, histW, 100, '#8b5cf655');
ctx.fillStyle = '#94a3b8';
ctx.font = 'bold 12px sans-serif';
ctx.fillText('標本平均の分布(n=' + sampleSize + ')', histX, 140);
drawHistogram(meanBins, maxMean, histX, 148, histW, 140, '#3b82f6');
if (sampleMeans.length > 10) {
var s2 = 0;
for (var i = 0; i < sampleMeans.length; i++) s2 += sampleMeans[i];
var meanOfMeans = s2 / sampleMeans.length;
var varOfMeans = 0;
for (var i2 = 0; i2 < sampleMeans.length; i2++) {
varOfMeans += (sampleMeans[i2] - meanOfMeans) * (sampleMeans[i2] - meanOfMeans);
}
varOfMeans /= sampleMeans.length;
var stdOfMeans = Math.sqrt(varOfMeans);
ctx.strokeStyle = '#fbbf24';
ctx.lineWidth = 2;
ctx.beginPath();
for (var step = 0; step <= 100; step++) {
var xv = step / 100;
var yv = gauss(xv, meanOfMeans, stdOfMeans);
var px = histX + xv * histW;
var py = 148 + 140 - yv * (maxMean > 0 ? (140 / maxMean) * (sampleMeans.length / numBins * 2) : 1);
if (step === 0) ctx.moveTo(px, py);
else ctx.lineTo(px, py);
}
ctx.stroke();
ctx.fillStyle = '#fbbf24';
ctx.font = '12px monospace';
ctx.textAlign = 'right';
ctx.fillText('正規分布フィット(黄線)', W - 20, 305);
ctx.fillStyle = '#e2e8f0';
ctx.font = '13px monospace';
ctx.textAlign = 'left';
ctx.fillText('標本数: ' + sampleMeans.length + ' 平均の平均: ' + meanOfMeans.toFixed(3) + ' SE: ' + stdOfMeans.toFixed(3), histX, 330);
}
ctx.fillStyle = '#64748b';
ctx.font = '12px sans-serif';
ctx.textAlign = 'center';
ctx.fillText('母集団の形にかかわらず、標本平均は正規分布に近づく(中心極限定理)', W / 2, 378);
requestAnimationFrame(loop);
}
loop(); 標準誤差と信頼区間(予告)
標本平均 の標準誤差 を使うと、母平均 の推定区間を作れます(次回詳しく学ぶ)。「この標本平均から、真の平均はこの範囲にあると95%の確信を持って言える」というのが信頼区間の意味です:
を使うと 95% 信頼区間になります。
不偏推定量
母分散の推定では、標本分散 を使います( で割る)。
「なぜ ではなく で割るの?」—— で割ると系統的に小さく推定してしまうため(偏り)、 で割ることで不偏推定量になります。これをベッセルの補正といいます。「平均を計算するのに1個のデータを使い切ってしまう、だから自由度は 」というのが直感的な理解です。
まとめ
- 母集団:調べたい全体(通常は観測不能)、標本:取り出した一部(観測可能)——「部分から全体を推測する」
- 標本平均の期待値は母平均 、標準誤差は ——「サンプルを増やすほど精密になる」
- 中心極限定理: が大きければ は正規分布に近づく(母集団の形によらず)——「統計学最大の定理」
- 標本サイズを大きくするほど推定の精度は上がる()——「4倍取れば誤差が半分」
最終回は信頼区間と仮説検定——推測統計の実践的な使い方を学びます。