python PR

【pythonで統計学】t値とp値についてわかりやすく解説

python 統計学 t値
記事内に商品プロモーションを含む場合があります

統計検定を行うと出てくるのが「t値」と「p値」です

多くの場合「p値」について理解していれば、研究結果を述べることができるかと思います

私もそうですし、学会や論文なんかでも「p値」のみに言及していることが多いです

しかし、統計の勉強を進めていくと「t値」を理解しなければいけないタイミングがやってきます

今回は「p値」のおさらいと「t値」について解説をしていきたいと思います

これまでの「pythonで統計学」の一覧はこちらから見ることができるので、そちらも参考にしてください!

python 統計学
pythonで統計学を学ぶメリット〜実際の学習手順を紹介〜近年、データサイエンティストの需要が高まってきていますが、データサイエンティスト必須能力として、「プログラミング言語」「統計学」が挙げられています。pythonで統計学を扱えれば、データサイエンティストとしての道も開けるでしょう。今回はpythonで統計学を学ぶメリットや実際にどのように学習していくべきかを解説していきたいと思います。...

まとめ


t値は検定統計量の1種で、仮説検定において標本データから計算される標準化された値
t値の理解にはt分布の理解が必要

p値は帰無仮説を棄却する目安

t値とは

t値は検定統計量の1種で、t検定を行った際に出てきます

そのため「t値」と呼ばれています

マンホイットニーのU検定などをかけても「t値」は出てきません

以下を見比べるとわかります

t検定 t値 マンホイットニーのU検定

t値の算出は、

t値=標本平均-比較対象値/標準誤差

で求めることができます

t値が0である場合には標本の結果が帰無仮説と完全に一致することを示していることになります

標本データと帰無仮説との差が増加すれば、t値の絶対値は増加していきます

t値単体ではあまり判断材料にはしません

ここでt分布という理解が必要になってきます

t分布とは

t分布とは「平均𝑥¯の標本分布において,母集団の標準偏差𝜎の代わりに標本標準偏差𝑠′を用いた場合の標準化後の平均𝑥¯が従う確率分布」です

ざっくりいうと、標準正規分布の代わりになるのが、t分布ということになります

>>>標準正規分布について(…coming soon…)

言葉だけではわかりにくいので、実際にt分布をpythonで書いてみたいと思います

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# -10 から 10 の区間で200列の一次元配列を作成
x = np.linspace(-10, 10, 200)

# サブプロットを用意
fig, ax = plt.subplots(1, 1)

# 自由度(1, 3, 30)の3つのt分布をプロット
deg_of_freedom = [1, 3, 30]
for k in deg_of_freedom:
    ax.plot(x, stats.t.pdf(x, k), label=r'$k=%i$' % k)

plt.xlim(-10, 10)
plt.ylim(0, 0.4)

plt.legend()
plt.show()
t分布

kが自由度を表していますが、自由度の値が大きくなるにつれてt分布がシャープになっているのがわかるかと思います

t分布はサンプルサイズが少ない(n=30以下)場合に用いる、と言われています

サンプルサイズが増えるにつれて、予測される平均値のブレが少なくなるため、シャープになっていきます

次に標準正規分布とt分布を比較してみたいと思います

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

x = np.linspace(-10, 10, 100)
z = stats.norm.pdf(x, loc=0, scale=1)
for k in range(1, 10, 4):
    t = stats.t.pdf(x, k)
    plt.plot(x, t, label=f'$k=%i$' % k)
plt.plot(x, z, label='std norm', linewidth=3)
plt.legend()
t分布と標準正規分布

太い赤い線が標準正規分布なので、自由度が増加すると、t分布は標準正規分布に近似していくことがわかります

こういった背景があるため、サンプルサイズが増えた場合には、t分布ではなく、標準正規分布を使用してもOKだよね、となります

t分布から区間推定を行う

ではt分布から信頼区間を算出したいと思います

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

x = np.linspace(-5, 5, 100)
left, right = stats.t.interval(0.95, df=2)
t = stats.t.pdf(x, df=2)
plt.plot(x, t)
plt.axvline(left, c='r')
plt.axvline(right, c='r')
print(left, right)

>>>-4.302652729911275 4.302652729911275
t分布信頼区間

信頼区間の幅が結構大きいのがわかるかと思います

自由度が小さい(今回は自由度2)場合には、区間も広くなってしまいます

では、自由度を大きくしてみたいと思います

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

x = np.linspace(-5, 5, 100)
left, right = stats.t.interval(0.95, df=100)
t = stats.t.pdf(x, df=100)
plt.plot(x, t)
plt.axvline(left, c='r')
plt.axvline(right, c='r')
print(left, right)

>>>-1.9839715184496334 1.9839715184496334
t分布信頼区間自由度大

1枚目と2枚目の赤線の間が95%区間です

自由度が大きくなるにつれて、95%区間が狭くなるのがわかるかと思います

メモ

基本的にはt分布を使用することが推奨されています

しかし、自由度が高くなる(サンプルサイズが増える)と標準正規分布に近づくため、標準正規分布が使用されます

統計ソフトのほとんどが「正規性の検定」で正規分布をしているかを確認しているので、そちらを使うのがいいと思います

pythonなどのプログラミング言語で統計をかける場合には、t分布を用いるのがいいのかな、と思います

p値について

p値は多くの人が聞いたことのある単語だと思います

帰無仮説を棄却する値ですね

統計学の基本

95%の確率でその事象が生じると仮定した場合に、

5%未満であった場合には「滅多に起こらないことが起きた(つまり帰無仮説が間違っていたのではないか)」ということで対立仮説を採択することになります

帰無仮説・対立仮説などのややこしい考え方は、背理法が元になっているので、

興味がある方は、背理法について学んでみてください

正規分布

95%というのは、緑で塗りつぶしていない部分が該当します

基本的にはこの範囲に事象が入りうるというのが基本になっています

まとめ

  • t分布は,平均𝑥¯の標本分布において,母集団の標準偏差𝜎の代わりに標本標準偏差𝑠を用いた場合の標準化後の平均𝑥¯が従う確率分布
  • t分布は自由度n-1を唯一のパラメータとする確率分布
  • 自由度を大きくすると徐々に標準正規分布に近づく
おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.