見出し画像

9-2-2 期待度数・独立性検定 ~ アンケート集計値から変数間の違いを掴む

統計的仮説検定のトピック「独立性の検定」の第2回です。
$${\chi^2}$$を用いた検定の手続きに慣れてきた頃でしょう。
どんどん進めましょう!


公式問題集の準備

「公式問題集」の問題を利用します。お手元に公式問題集をご用意ください。
公式問題集が無い場合もご安心ください!
「知る」「実践する」の章で、のんびり統計をお楽しみください!

問題を解く


今回の記事の構成

この記事は、通常の記事構成と違う章立てにいたします。
「知る」「実践する」を1つの章にまとめます。
最初に「問題を解く」の章で、出題箇所にピンポイントで解答を検討します。
続く「知る・実践する」の章で、適合度の検定の一連の流れを手作業・EXCEL・Pythonで実践いたします。

📘公式問題集のカテゴリ

カイ二乗検定の分野 ~独立性検定の分野
問2 期待度数・独立性検定(性別・CM要否のアンケート)

試験実施年月
調査中

問題

公式問題集をご参照ください。

解き方

題意
与えられた条件を紐解き、検定統計量と棄却限界値を明らかにして、独立性の検定の結果(結論)を解答します。

【条件】
・「性別」2行・「要否」3列の2元クロス集計表に基づいて独立性の検定を行う
・有意水準は$${5\%}$$
・帰無仮説は「CMの要・不要は性別と無関係である」(独立である)
・帰無仮説の下でクロス集計表の各セルの期待度数を求めて、各セルの「(観測度数-期待度数)$${^2}$$/期待度数」を計算した結果は、次の表のとおり。

公式問題集の記述を改変
(観測度数-期待度数)^2/期待度数の表

この問題の統計的仮説検定の概要を図示します。

作戦会議
ひとまず、出題箇所にフォーカスを当てて、ピンポイントで解答します。

①検定統計量

独立性の検定における検定統計量は$${\chi^2}$$です。
検定統計量$${\chi^2}$$は「(観測度数-期待度数)$${^2}$$/期待度数」の合計です。

カイ二乗検定統計量の計算式

「(観測度数-期待度数)^2/期待度数の表」を見てみましょう。

カイ二乗検定統計量

合計値は$${6.60}$$です。
よって、検定統計量の値$${\chi^2}$$値は$${6.60}$$です。

解答の一部は「総合計$${6.60}$$が$${\chi^2}$$値である」です。

②棄却限界値
まず、検定統計量$${\chi^2}$$が従う$${\chi^2}$$分布の自由度を確認します。
2元クロス集計表を用いて、独立性の検定を行う場合、自由度の計算式は次のようになります。

■自由度の公式
(行のカテゴリの数-1)×(列のカテゴリの数-1)
もしくは
$${(r-1)(c-1)}$$
ただし、$${r}$$:行のカテゴリの数、$${c}$$:列のカテゴリの数

クロス集計表はこちらです。

クロス集計表:観測度数

行は横、列は縦です。
行のカテゴリ$${r}$$は「男」と「女」の2つです。
列のカテゴリ$${c}$$は「要」・「どちらでも」・「不要」の3つです。
従いまして、自由度は$${(r-1)(c-1)=(2-1)(3-1)=1 \times 2=2}$$です。

検定統計量$${\chi^2}$$は自由度$${2}$$の$${\chi^2}$$分布に従うことが分かりました。

続いて、有意水準$${5\%}$$に基づき、$${\chi^2}$$分布のパーセント点表から上側確率$${5\%}$$点を取得します。
独立性の検定は片側・上側検定ですので、上側確率$${5\%}$$点を取得します。

カイ二乗分布のパーセント点表

自由度$${2}$$の上側確率$${5\%}$$点は$${5.99}$$です。

解答の一部は「自由度$${2}$$の$${\chi^2}$$分布の上側$${5\%}$$点$${5.99}$$」です。

③結論を出す
$${\chi^2}$$値$${=6.60}$$と上側確率$${5\%}$$点$${=5.99}$$を比べます。
$${\chi^2}$$値は上側確率$${5\%}$$点より大きいため、棄却域の区間内です。
よって、帰無仮説「CMの要・不要は性別と無関係である」は棄却されます。
対立仮説「CMの要・不要は性別によって異なる」と言えます。

解答を繋げましょう。
「総合計$${6.60}$$が$${\chi^2}$$値である。自由度$${2}$$の$${\chi^2}$$分布の上側$${5\%}$$点$${5.99}$$と比べると大きいので、帰無仮説を棄却し、CMの要・不要は性別によって異なる、と結論する」です。

解答

② です。

難易度 やさしい

・知識:独立性の検定、$${\chi^2}$$分布のパーセント点表
・計算力:数式組み立て(低)
・時間目安:1分


知る・実践する


おしながき

公式問題集の問題について、適合度の検定の一連の流れを手作業・EXCEL・Pythonで実践していきましょう。

📕公式テキスト:6.3 独立性の検定(205ページ~)

読み解き

条件から統計的仮説検定の主題を読み解きます。

  • 条件より、有意水準$${5\%}$$「独立性の検定」を行います。
    独立性の検定は「片側検定(上側)」です。

  • クロス集計表の観測度数は下の表を参照。

  • クロス集計表の2つの「変数は独立である」との帰無仮説の下で、期待度数を計算します。

  • 観測度数と期待度数を用いて、検定統計量$${\chi^2}$$を計算します。

  • 検定統計量$${\chi^2}$$が従う$${\chi^2}$$分布の自由度を計算します。

  • $${\chi^2}$$分布のパーセント点表より、有意水準$${5\%}$$のパーセント点を取得して、帰無仮説を棄却できるかどうか結論づけます。

観測度数

この問題の統計的仮説検定の概要を図示します(再掲)。


手計算で検定

ステップ1:期待度数を計算する

期待度数は、帰無仮説が正しいと仮定してカウントする度数です。
独立性の検定の場合、クロス集計表の2変数は独立である、と仮定して期待度数を計算します。

帰無仮説を独立な2つの事象の確率の数式を用いて表します。

帰無仮説 $${H_0 : P(A_i \cap B_j)=P(A_i)P(B_j)}$$

ただし、$${i,j}$$:クロス集計表の行と列、$${A_i}$$:性別のカテゴリ、$${B_i}$$:要否のカテゴリ、$${P(A_i \cap B_j)}$$:性別と要否の積事象の確率(同時確率)、$${P(A_i), P(B_i)}$$:性別の確率と要否の確率(周辺確率)

この数式をクロス集計表にマッピングしてみます。
期待度数の確率が見えてきました。

期待度数の確率(数式)

横計$${P(A_i)}$$と縦計$${P(B_i)}$$を計算しましょう。
これらの比率は周辺確率と呼ばれるものです。

$$
P(A_1)=30/50=0.6 \\
P(A_2)=20/50=0.4 \\
P(B_1)=15/50=0.3 \\
P(B_2)=15/50=0.3 \\
P(B_3)=20/50=0.4
$$

計算結果を表にします。

期待度数・周辺確率

期待度数の確率は、縦計の比率(周辺確率)と横計の比率(周辺確率)を掛け算した値です。
期待度数の確率を計算しましょう。

期待度数の確率

期待度数の確率と標本サイズ(合計)$${100}$$を掛け算して、期待度数を算出します。

期待度数

【時短計算法】
次の表のように観測度数の「縦計」「横計」「総合計」から期待度数を計算できます。

観測度数の縦計・横計・総合計から期待度数を計算

次の計算で観測度数と期待度数を用いるので、両方の度数をまとめて掲載しましょう。

観測度数と期待度数

棒グラフで観測度数と期待度数の違いを可視化しましょう。

観測度数と期待度数の棒グラフ

観測度数には、男性と女性との間に「要と不要の偏りのようなもの」が見られます。
はたして、適合度検定の結果はいかに・・・。

ステップ2:検定統計量$${\boldsymbol{\chi^2}}$$を計算する

カテゴリ(分類)ごとに「観測度数と期待度数の差の2乗」を「期待度数で割り」、全カテゴリを合計します。

カイ二乗検定統計量の計算式

本問のカテゴリは行2×列3で合計6のカテゴリがあります。
・行:「男」と「女」の2つ
・列:「要」「どちらでも」「不要」の3つ

検定統計量$${\chi^2}$$は次の計算式を用いて計算します。

6カテゴリから、カイ二乗検定統計量を計算する

先程まとめた観測度数と期待度数の値を当てはめて、検定統計量$${\chi^2}$$を計算しましょう。

検定統計量の計算

検定統計量の計算で得られた$${\chi^2}$$値は$${6.60}$$です。

ステップ3:検定統計量$${\boldsymbol{\chi^2}}$$が従う$${\boldsymbol{\chi^2}}$$分布の自由度

2元クロス集計表を用いて、独立性の検定を行う場合、自由度の計算式は次のようになります。

■自由度の公式
(行のカテゴリの数-1)×(列のカテゴリの数-1)
もしくは
$${(r-1)(c-1)}$$
ただし、$${r}$$:行のカテゴリの数、$${c}$$:列のカテゴリの数

本問で取り扱う観測度数のカテゴリ数は「行$${r}$$:男・女の2つ」「列$${c}$$:要・どちらでも・不要の3つ」です。
自由度は、$${(r-1)(c-1)=(2-1)\times(3-1)=1\times3=3}$$で、$${3}$$です。

ステップ4:検定統計量$${\boldsymbol{\chi^2}}$$が従う$${\boldsymbol{\chi^2}}$$分布の上側パーセント点

続いて上側パーセント点を取得して棄却域を確認します。
ここで重要なお知らせ。

【重要ポイント】
・独立性の検定は片側・上側検定です。

独立性の検定は片側・上側検定ですので、有意水準$${5\%}$$の棄却域を求める際には、自由度$${2}$$の$${\chi^2}$$分布のパーセント点表より上側確率$${5\%}$$点を取得します。

カイ二乗分布のパーセント点表

自由度$${2}$$の上側確率$${5\%}$$点は$${5.99}$$です。

$${\chi^2}$$分布の確率密度関数をグラフで確認しましょう。

自由度2のカイ二乗分布、上側確率5%点、棄却域

なだらかな曲線です。

ステップ5:結論を出す

$${\chi^2}$$値$${=6.60}$$と上側確率$${5\%}$$点$${=5.99}$$を比べます。
$${\chi^2}$$値は上側確率$${5\%}$$点より大きいため、棄却域の区間内です。
よって、帰無仮説は棄却されます。

具体的には、帰無仮説「CMの要・不要は性別と無関係である」(独立である)は棄却され、対立仮説「CMの要・不要は性別によって異なる」(独立ではない)と言えます。

最後にグラフで棄却域と$${\chi^2}$$値の関係を確認しましょう。

カイ二乗値と棄却域

確かに$${\chi^2}$$値は棄却域に含まれています。

手計算は以上となります。



EXCELで検定

計算シートを用いて独立性の検定を行います。

計算シートの全体像
左側の表には、観測度数を登録します。
紙面の関係上、クロス集計表の行と列を入れ替えて作成しました。

観測度数に基づいて期待度数を計算しています。
また、カテゴリごとに$${(観測度数-期待度数)^2/期待度数}$$の計算を行って合計を取り、$${\chi^2}$$値にしています。
右側の入力パラメータは「有意水準」です。

観測度数・期待度数・有意水準より、$${\chi^2}$$値、上側確率%点、$${p}$$値を求めて、判定します。

適合度検定の実行

上記の計算シートには既に必要なデータ、パラメータを設定済みです。
計算値によると、自由度は$${2}$$、$${\chi^2}$$値は$${6.597}$$、上側確率$${5\%}$$点は$${5.991}$$です。
$${\chi^2}$$値が上側確率$${5\%}$$点よりも大きいので、帰無仮説は棄却されます。
$${p}$$値は$${0.037}$$でした。

まとめ

$${\chi^2}$$値は$${6.597}$$、$${p}$$値は$${0.037}$$です。
有意水準$${5\%}$$で帰無仮説は棄却され、対立仮説「CMの要・不要は性別によって異なる」(独立ではない)と言えます。

EXCELの関数

EXCELの CHISQ.TEST 関数を用いて、適合度検定の$${p}$$値を算出できます。
引数は、CHISQ.TEST ( 観測度数のデータ範囲, 期待度数のデータ範囲 ) です。
2元クロス集計表の場合も、観測度数の期待度数の行と列を揃えておくことで、データ範囲の指定を容易に行なえます。
シンプルなのでぜひ使ってみてください!

CHISQ.TEST関数

EXCELは以上となります。

EXCELサンプルファイルのダウンロード
こちらのリンクからEXCELサンプルファイルをダウンロードできます。



Pythonで検定

scipy.stats の chi2_contingency を用いて、クロス集計表に基づく独立性の検定を実行します。

①インポート

### インポート
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Meiryo'

②データとパラメータの設定
問題で与えられたクロス集計表(観測度数)を登録して、pandasのデータフレーム observed_tab を作成します。

### データとパラメータの設定

## データ、パラメータの登録
# 観測度数 行:性別、列:回答
observed_array = np.array([[5, 10, 15], [10, 5, 5]])
# 有意水準
alpha = 0.05

## データフレーム化
observed_tab = pd.DataFrame(observed_array,
                            columns=['要', 'どちらも', '不要'],
                            index=['男', '女'])
observed_tab
出力イメージ

③独立性の検定の実施
scipy.stats の chi2_contingency を用いて独立性の検定を行います。
最初の1行だけで独立性の検定を処理できています。

引数は、chi2_contingency ( 観測データのクロス集計表, correction ) です。
期待度数を用意する必要が無いので、とても手軽に検定を実行できます。
correction=False はイエーツの補正を実施しない、というオマジナイです。
戻り値は、$${\chi^2}$$値、$${p}$$値、自由度、期待度数です。

### 独立性の検定の実施 クロス集計表をインプット
chi2_value, p_value, df, expected = stats.chi2_contingency(observed_tab,
                                                           correction=False)

# 期待度数のデータフレーム化
expected_tab = pd.DataFrame(expected, columns=observed_tab.columns,
                              index=observed_tab.index)
# 期待度数の表示
print('期待度数:')
display(expected_tab)

# カイ二乗統計量、p値、自由度の表示
print(f'χ^2値:{chi2_value:.3f}, p値:{p_value:.3f}, 自由度:{df}')
出力イメージ

④結論の表示
有意水準と$${p}$$値を比較して、帰無仮説を棄却できるかどうかを判定します。

### 結論の表示

# 有意水準のカイ二乗分布の上側パーセント点の取得
critical_value = stats.chi2.isf(alpha, df)

if p_value < alpha:  # p値が有意水準より小さい場合:棄却できる
    result = ('棄却される', '言える')
else:                # p値が有意水準以上の場合:棄却できない
    result = ('棄却されない', '言えない')
print(f'結論\n有意水準{alpha:.1%}で帰無仮説は{result[0]}\n'
      f'対立仮説「各変数は独立でない(関連がある)」と{result[1]}')

### 統計量の表示
print('\n統計量')
print(f'自由度{df}のカイ二乗分布の上側{alpha:.1%}点:{critical_value:.3f}, '
      f'カイ二乗値:{chi2_value:.3f}')
print(f'有意水準{alpha:.3f}, p値:{p_value:.3f}')
出力イメージ

帰無仮説を棄却できました。

まとめ
観測度数のクロス集計表データを整えて、scipy.stats の chi2_contingency を実行するだけで、$${p}$$値を取得して独立性の検定の結論を出せることが分かりました。

$${p}$$値が有意水準$${5\%}$$より小さいので、有意水準$${5\%}$$で帰無仮説は棄却され、対立仮説「CMの要・不要は性別によって異なる」(独立ではない)と言えます。

Pythonサンプルファイルのダウンロード
こちらのリンクからJupyter Notebook形式のサンプルファイルをダウンロードできます。

以上で終了です。
お疲れ様でした。



おわりに

独立性の検定の第2回目、いかがだったでしょう。
適合度の検定以降、同じ記事フォーマットを続けています。
作成効率はとてもよいのですが、なにか欠けている感じもいたします。
何かははっきりしないのですが・・・。

最後までお読みいただきまして、ありがとうございました。


のんびり統計シリーズの記事

次の記事

前の記事

目次

この記事が気に入ったらサポートをしてみませんか?