【心理統計】Pythonでz値を求めてみた【z検定】

大学では心理学を専攻しているので、統計学を学びます(といっても、僕の大学では必要最低限の統計手法しか学ばないので、原理・仕組みといった詳細の理解は乏しいです)。

今回は、統計的仮説検定の1つであるz検定 (1つの平均値に関する検定) をPythonで実装してみたいと思います。

では。

Pythonでz値を求めてみる

【前置き】z検定とは?

z検定は平均を0、標準偏差を1になるように整形した値 (標準化した値) をベースとして、z分布によって生起確率を求めます。これをz値という。

このz値がz分布のどこに位置するのかを求め、標本平均から推定された値が母平均値に等しいかを判断するための検定となります。

よって、分布が正規分布性を持ち、「母平均または母分散が既知であること」が前提となります。

 

例題

例題

日本人の「自尊感情」について調査している。

現段階で、おおよそ日本人 (成人) の「自損感情」の平均値 (μ) は50点、標準偏差 (σ) は15点であることがわかっている。

そして、10名を無作為に抽出し「自尊感情」を測定したところ、平均値が55点であった。

さて、この結果から、10名の「自尊感情」は、日本人の成人 (母集団) と比較して、その水準の程度は変わらないといえるだろうか?

有意水準を0.05とした両側検定で検定せよ。

 

検定の手順

検定の手順

Step1. 仮説の設定 (帰無仮説H0と対立仮説H1)

Step2. 有意水準αの設定 (例題では0.05としている)

Step3. 検定統計量 (z値) を求める

Step4. 帰無仮説の判断

 

Step1. 仮説の設定

まずは仮説を設定しましょう。以下の仮説を立てます。

仮説

帰無仮説H0:10名の自尊感情の平均値と一般の日本人成人の自尊感情の平均値には差はない

対立仮説H1:10名の自尊感情の平均値と一般の日本人成人の自尊感情の平均値には差がある

 

Step2. 有意水準の設定

例題でも有意水準は0.05と定めてあるので、0.05とします。

 

Step3. 検定統計量を求める

z検定ですのでz値を求めましょう。

z値の公式は以下の通り。

 

Xバーが標本平均、μが母平均、σが標準偏差、nがサンプルサイズである。

問題文から、

・Xバー = 55

・μ = 50

・σ = 15

・n = 10

がわかっています。

 

さて、実際にPythonで求めてみましょう。

求め方については@Hajiさんの「z検定とt検定をPythonで解く」という記事を参考にさせていただきました。

信頼区間も一緒に求められる関数式となっております。

 

import numpy as np
from scipy import stats as ss

# scipy.stats.norm.ppf -> パーセント点を返してくれるメソッド
def interval_nom(alpha, x, mu, sigma, n):
    z = (x - mu) / (sigma/np.sqrt(n))
    confidence_interval = []
    # 両側検定なので、棄却域を/2とする。
    confidence_interval.append(ss.norm.ppf(1 - alpha / 2))
    confidence_interval.append(- ss.norm.ppf(1 - alpha / 2))

    return z, confidence_interval

z, confidence_interval = interval_nom(alpha = 0.05, x = 55, mu = 50, sigma = 15, n = 10)
print("z value: {0: .3f}".format(z))
print("confidence_interval: {1: .3f} < z < {0: .3f}".format(confidence_interval[0], confidence_interval[1]))

 

出力結果

z value:1.054

confidence_interval:-1.960 < z < 1.960

 

Step4. 帰無仮説の判断

 

図で言うと、α / 2の値が1.96となります。

つまり、

1.96 (絶対値) を上回ったら、帰無仮説を棄却する、

1.96 (絶対値) を下回ったら、帰無仮説を採択する、

となります。

 

算出した値はz = 1.054であり、1.96を下回っているので、帰無仮説を採択することになります

つまり、10名の平均値55点は、一般に日本人成人の平均値とそれほど大きく異なるとは言えないと結論づけることになります。

 

余談

ちなみに、z値の公式の分母にある「標準偏差σをサンプルサイズnの平方根で割ったもの」を標準誤差 (SE:standard error) と言います。

標準誤差は推定量の標準偏差であり、標本から得られる推定量そのもののバラつき(i.e. 精度)を表すものなので、この値が小さければ小さいほど、精度が高いということになります。

つまり、標本の正規分布が母集団の正規分布に限りなく近いということになります。

精度が高くなれば、式を見てもらえれば分かるように、z値は大きくなります。

実際に実験をやれば分かるのですが、この標準誤差をいかに小さくできるかが心理学者の腕の見せ所でもあったりします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です