Rにおける検定と信頼区間の導入

CS1のカリキュラムの中でも、最も実践的なパートへようこそ!ペーパーAでは、手計算で検定統計量を算出したり、ゴールドスタイン表(Goldstein Tables)で値を確認したりすることに多くの時間を費やします。しかし、コンピュータベースの試験であるペーパーBでは、ソフトウェアがその重労働を肩代わりしてくれます。皆さんの役割は「計算すること」から「解釈すること」へとシフトします。

この章では、Rを使って仮説検定を行い、信頼区間を構築する方法に焦点を当てます。現実世界のデータが「教科書通りにきれい」であることは滅多になく、分析にはほぼ常にソフトウェアが必要となるため、これはアクチュアリーにとって不可欠なスキルです。Rの出力結果の読み方、帰無仮説に関する意思決定、そして真のパラメータが含まれる可能性のある値の範囲を理解する方法を学んでいきましょう。

注:これらの検定を実行する前に、平均や分散などの基本的な要約統計量を計算する方法を復習したい場合は、「Rにおける確率、分位点、および要約統計量」の章を参照してください。

核となるロジック:\(p\)値

ペーパーBにおいて、\(p\)値は皆さんの最大の味方です。ペーパーAでは棄却限界値を求めることがよく求められますが、ペーパーBの出力にはほとんどの場合\(p\)値が含まれています。

\(p\)値とは何か? それは、帰無仮説(\(H_0\))が正しいと仮定したときに、観察された結果と同じか、それよりも極端な結果が得られる確率のことです。

検定の黄金律:
\(p\)値 \( < \alpha \)(有意水準、通常は0.05)であれば、\(H_0\)を棄却します
\(p\)値 \( \ge \alpha \) であれば、\(H_0\)を棄却できません

例え話:\(p\)値を、帰無仮説に対する「証拠の強さ」と考えてみてください。この数値が小さければ小さいほど、もし\(H_0\)が正しいとしたらそのデータが得られるのは「驚くべきこと」になり、\(H_0\)を捨てる(棄却する)可能性が高まります。

t.test() による平均の検定

t.test() 関数は、Rの統計関数における「十徳ナイフ(万能ツール)」です。これは、分散が未知の場合の正規分布に関する検定に使用されます。

1. 1標本t検定

単一のグループの平均(\(\mu\))が、特定の値(\(\mu_0\))と等しいかどうかを検定するために使用します。

Rの構文: t.test(data_vector, mu = mu_0)

2. 2標本t検定

2つの独立したグループの平均(\(\mu_1\) と \(\mu_2\))を比較するために使用します。

Rの構文: t.test(group1, group2)

デフォルトでは、Rは2つのグループの分散が等しいと仮定しない「ウェルチのt検定」を実行します。試験で等分散を仮定するように求められた場合は、引数 var.equal = TRUE を追加する必要があります。

3. 対応のあるt検定

同じ対象に対して2回の測定を行った場合(例:ダイエット前後の体重など)に使用します。これはシラバスにある「対応のあるデータに対する検定」にあたります。

Rの構文: t.test(before_vector, after_vector, paired = TRUE)

出力結果の読み方

t.test() を実行すると、Rはテキストのブロックを表示します。次の3つの箇所に注目してください:
1. t: 計算された検定統計量。
2. p-value: これを有意水準(例:0.05)と比較します。
3. 95 percent confidence interval: 平均の差に関する値の範囲です。この区間に0が含まれている場合、通常その差は有意ではないことを意味します!

比率と率:二項分布とポアソン分布

シラバスでは、正規近似を含む、二項確率とポアソン平均の検定を扱うことが求められています。

二項検定

比率(例:保険金の支払いが発生する確率)を検定する場合、正確な結果を得るには binom.test() を、正規近似を用いるには prop.test() を使用します。

例: 100回の試行のうち30回成功し、\(p = 0.25\) かどうかを検定したい場合:
binom.test(x = 30, n = 100, p = 0.25)

ポアソン検定

ポアソン過程の発生率(例:1年あたりの事故件数)を検定するには、poisson.test() を使用します。

Rの構文: poisson.test(x = count_of_events, T = time_period, r = hypothesized_rate)

重要なポイント: どちらの関数でも、Rはパラメータ(\(p\) または \(\lambda\))の\(p\)値と信頼区間を表示します。\(H_0\)で設定した「仮説値」が、提示された信頼区間内に収まっているかどうかを必ず確認してください。

ノンパラメトリックな手法:置換検定とブートストラップ法

データが完全な正規分布やポアソン分布に従うと仮定したくない場合もあります。シラバスでは、2つの現代的な手法である置換検定(Permutation tests)ブートストラップ法(Bootstrapping)を強調しています。

1. 置換検定アプローチ

これはノンパラメトリックな仮説検定に使用されます。分布の公式を使う代わりに、データのラベルを何度も「シャッフル」して、得られた結果が偶然生じる可能性がどの程度あるかを確認します。

ペーパーBでは、データをシャッフルして検定統計量を繰り返し計算し、独自の分布を構築するために、簡単な for ループを書くよう求められることがあります。

2. ブートストラップ法

これは、標準的な公式が不明な場合や分布が複雑な場合に、推定量に対する信頼区間を取得するために使用されます。

仕組み:
1. データを復元抽出(重複を許す抽出)で何度も(例:1,000回)再サンプリングします。
2. 各サンプルに対して統計量(平均や分散など)を計算します。
3. これら1,000個の結果の2.5パーセンタイルと97.5パーセンタイルが、95%ブートストラップ信頼区間となります。

豆知識:「ブートストラップ(bootstrapping)」という用語は、"to pull oneself up by one's bootstraps"(自力で困難な状況を切り抜ける)という言い回しに由来しています。これは、外部の助けを借りずにデータ自身が「自らの分布を見つけ出す」というアイデアを指しています!

回帰分析の出力の解釈

回帰分析には専用の章がありますが、回帰のサマリー(summary(lm_model))の中から検定信頼区間を特定できなければなりません。

1. Standard Error(標準誤差): 傾き(\(\beta\))の信頼区間を構築するために使用されます。
2. t value(t値): \(H_0: \beta = 0\) に対する検定統計量です。
3. Pr(>|t|): その特定の変数に対する \(p\)値です。これが小さければ、その変数は有意な予測因子です。

一般化線形モデル(GLM)の場合、デビアンス(deviance)に注目し、ピアソンのカイ二乗検定尤度比検定を使用して、モデルがデータにうまく適合しているかを判断します。

避けるべきよくある間違い

1. 対立仮説の間違い: Rのデフォルトは「両側検定」です。もし仮説が「〜より大きい」(\(H_1: \mu > \mu_0\))であれば、Rのコードで alternative = "greater" を指定しなければなりません。そうしないと\(p\)値が正しくなりません!

2. 信頼区間の誤解: 95%信頼区間とは、「もし実験を何度も繰り返したら、算出された区間のうち95%が真のパラメータを含む」という意味であることを忘れないでください。パラメータがこの特定の区間に含まれる確率が95%であるという意味ではありません(これは学生が非常によくやってしまう間違いです!)。

3. 対応のあるデータと独立したデータの混同: 常に自分自身に問いかけてください。「これは2つの異なるグループ(独立)か、それとも同じグループを2回測定したもの(対応あり)か?」 t.test() でこれらを間違えると、得点を失う原因になります。

クイック復習ボックス

- p値 < 0.05: 有意な結果、\(H_0\)を棄却。
- t.test(): 平均(正規分布データ)。対応のあるデータには paired = TRUE を使用。
- binom.test() / prop.test(): 比率(二項データ)。
- poisson.test(): 率(ポアソンデータ)。
- ブートストラップ法: 信頼区間を得るための復元抽出による再サンプリング。
- 置換検定: ノンパラメトリック検定で\(p\)値を得るためのラベルのシャッフル。

最初はRのコードに圧倒されるかもしれませんが、大丈夫です。ペーパーBでは、通常Rのヘルプファイルにアクセスできます(例:?t.test と入力)。必要な引数を忘れても、そこで確認できますよ!