信頼区間と仮説検定
信頼区間とは
「この薬を飲んだ100人の平均血圧が5mmHg下がった」——でも「たまたまそういう100人を選んだだけで、全体ではどのくらいの効果があるの?」という疑問が残ります。これに答えるのが信頼区間です。
標本平均 は母平均 の点推定ですが、「どれくらい信用できるか」が分かりません。これを補うのが区間推定(信頼区間)——「真の平均はだいたいこの範囲にある」という幅を持った答えです:
母標準偏差 が既知のとき、95% 信頼区間():
「95% 信頼区間」の正確な意味
多くの人が誤解しているのが「95%信頼区間の意味」です:
同じ手順を繰り返したとき、作られる区間の 95% が真の母平均 μ を含む。
注意:特定の区間が を含む確率が 95% という意味ではありません—— は固定された値であり、「確率」の対象は「区間を生成する手順」の方です。「この区間に真の平均が入っている確率は95%」ではなく「この方法で区間を作り続けると、95%の確率で真の値を捕まえる」というのが正確な解釈です。
信頼区間シミュレーション
同じ手順で何度もサンプリングして信頼区間を作ります。青い区間は真の平均(黄色の縦線)を含んでいて、赤い区間は外れています。最終的に約95%が青(含む)になる様子を確認してください。
var MU = 50;
var SIGMA = 10;
var N = 25;
var SE = SIGMA / Math.sqrt(N);
var Z = 1.96;
var intervals = [];
var maxShow = 40;
var timer = 0;
var seed = 31;
function rand() {
seed = (seed * 1664525 + 1013904223) & 0x7fffffff;
return seed / 0x7fffffff;
}
function randNorm() {
var u1 = Math.max(rand(), 0.00001);
return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * rand());
}
function sampleMean() {
var sum = 0;
for (var i = 0; i < N; i++) sum += MU + SIGMA * randNorm();
return sum / N;
}
function addInterval() {
var xbar = sampleMean();
var lo = xbar - Z * SE;
var hi = xbar + Z * SE;
var contains = lo <= MU && MU <= hi;
intervals.push({ lo: lo, hi: hi, xbar: xbar, contains: contains });
if (intervals.length > maxShow) intervals.shift();
}
function loop() {
ctx.clearRect(0, 0, W, H);
timer += 0.016;
if (timer > 0.25 && intervals.length < maxShow * 3) {
addInterval();
timer = 0;
}
var chartL = 80, chartR = 520;
var dataMin = 30, dataMax = 70;
var rowH = 8;
var topY = 30;
function toX(v) {
return chartL + (v - dataMin) / (dataMax - dataMin) * (chartR - chartL);
}
var muX = toX(MU);
ctx.strokeStyle = '#fbbf24';
ctx.lineWidth = 2;
ctx.setLineDash([6, 4]);
ctx.beginPath();
ctx.moveTo(muX, topY - 10);
ctx.lineTo(muX, topY + maxShow * rowH + 10);
ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle = '#fbbf24';
ctx.font = 'bold 12px monospace';
ctx.textAlign = 'center';
ctx.fillText('μ=' + MU, muX, topY - 16);
for (var i = 0; i < intervals.length; i++) {
var iv = intervals[i];
var y = topY + i * rowH + rowH / 2;
var lox = toX(iv.lo), hix = toX(iv.hi), xbx = toX(iv.xbar);
ctx.strokeStyle = iv.contains ? '#3b82f6' : '#ef4444';
ctx.lineWidth = rowH - 2;
ctx.lineCap = 'round';
ctx.beginPath();
ctx.moveTo(lox, y);
ctx.lineTo(hix, y);
ctx.stroke();
ctx.lineCap = 'butt';
ctx.fillStyle = '#fff';
ctx.beginPath();
ctx.arc(xbx, y, 2, 0, Math.PI * 2);
ctx.fill();
}
var contains = intervals.filter(function(iv) { return iv.contains; }).length;
var pct = intervals.length > 0 ? (contains / intervals.length * 100).toFixed(1) : '---';
ctx.strokeStyle = '#334155';
ctx.lineWidth = 1;
var axisY = topY + maxShow * rowH + 14;
ctx.beginPath();
ctx.moveTo(chartL, axisY);
ctx.lineTo(chartR, axisY);
ctx.stroke();
for (var tick = dataMin; tick <= dataMax; tick += 10) {
var tx = toX(tick);
ctx.fillStyle = '#64748b';
ctx.font = '10px monospace';
ctx.textAlign = 'center';
ctx.fillText(tick, tx, axisY + 14);
ctx.strokeStyle = '#334155';
ctx.beginPath();
ctx.moveTo(tx, axisY);
ctx.lineTo(tx, axisY + 5);
ctx.stroke();
}
var statsY = axisY + 34;
ctx.fillStyle = '#e2e8f0';
ctx.font = 'bold 14px sans-serif';
ctx.textAlign = 'left';
ctx.fillText('区間数: ' + intervals.length, 20, statsY);
ctx.fillStyle = '#3b82f6';
ctx.fillText('含む (青): ' + contains, 20, statsY + 20);
ctx.fillStyle = '#ef4444';
ctx.fillText('外れ (赤): ' + (intervals.length - contains), 20, statsY + 40);
ctx.fillStyle = '#fbbf24';
ctx.font = 'bold 16px monospace';
ctx.fillText('含む割合: ' + pct + '%', 20, statsY + 65);
ctx.fillStyle = '#94a3b8';
ctx.font = '12px sans-serif';
ctx.textAlign = 'right';
ctx.fillText('n=' + N + ', σ=' + SIGMA + ', SE=' + SE.toFixed(2), W - 20, statsY);
ctx.fillText('95%CI: x̄ ± 1.96×SE', W - 20, statsY + 20);
requestAnimationFrame(loop);
}
loop(); 信頼区間の幅に影響する要素
| 要素 | 大きくすると幅は |
|---|---|
| 信頼水準(95%→99%) | 広くなる |
| 標本サイズ | 狭くなる |
| 母標準偏差 | 広くなる |
「より確実な答えが欲しい(99%)」ほど幅が広くなり、「より多くデータを取る(n大)」ほど幅が狭くなる——「精度を上げたければデータを増やす」という直感と一致します。
仮説検定
「この薬に本当に効果はあるのか?」「この製品は規格通りの重量か?」——こうした問いに答えるのが仮説検定です。
帰無仮説 (否定したい仮説)と対立仮説 (主張したい仮説)を設定します。「効果はない」という仮説を立てて、それを否定することで「効果がある」を主張します——「無実を証明するのが難しいように、有罪を証明する戦略」です。
検定の手順:
- を仮定する
- 検定統計量(例:)を計算する
- 値( が正しいとした場合に今回以上に極端な結果が出る確率)を求める
- (有意水準、通常 0.05)なら を棄却する
p値の意味
値は「帰無仮説が正しいとした場合に、観測された結果(またはそれ以上に極端な結果)が得られる確率」
のとき「統計的に有意」といいますが、それは「 が正しい確率が 5%」という意味ではありません——「 が正しいとしたら、こんな結果は5%以下の確率でしか起きない」という意味です。「めったに起きないことが起きた = H0はおかしいのでは」という論理です。
第一種・第二種の過誤
どんな検定でも「間違い」の可能性はゼロにできません——二種類の間違いがトレードオフの関係にあります:
| が真 | が偽 | |
|---|---|---|
| を棄却 | 第一種の過誤(偽陽性) | 正解(検出力 ) |
| を採択 | 正解 | 第二種の過誤(偽陰性) |
- 第一種の過誤(:有意水準):本当は正しい を間違って棄却——「無実の人を有罪にする」
- 第二種の過誤():本当は偽の を見逃す——「犯人を無罪にしてしまう」
- を小さくすると は大きくなる(トレードオフ)——「冤罪を減らすと、見逃しが増える」
z検定の例
問い: ある工場で製品の重量の母平均が 100g で母標準偏差が 5g と主張されています。25個の標本を取ったところ平均 102g でした。有意水準 5% で検定せよ。
「100gのはずが102g出た。これは偶然か、本当にズレているのか?」——標準誤差の何倍ズレているかで判断します:
、(両側検定)
棄却域:(両側 5%)
なので を棄却。平均が 100g であるという主張は支持されない——「2g のズレは偶然とは言い切れない」と判断します。
まとめ
- 信頼区間は「同じ手順で 95% の確率で を含む区間が作られる」という長期頻度の解釈——「特定の区間への確率ではない」
- 信頼区間の幅は を大きくすると狭くなる()——「データを増やせば精度が上がる」
- 仮説検定: なら を棄却——「まず否定したい仮説を立て、それが崩れたら主張を採用する」
- 値は が正しいとした場合の極端さの確率——「H0が正しい確率ではない」
- 第一種の過誤(偽陽性)と第二種の過誤(偽陰性)はトレードオフ——「どちらを厳しくするかは目的による」
シリーズを終えて
「確率・統計」の全15回を通じて、場合の数から始まり、確率の基本、分布論、そして推測統計まで学びました。
実生活でデータを見るとき:「このサンプルサイズは十分か」「信頼区間はどれくらい広いか」「p値が低くても効果量は十分か」——こうした問いを立てる習慣が、データに騙されないリテラシーの核心です。
数学の目で世界を見ると、至る所に確率と統計が隠れています。