1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ヨビノリの動画からt検定を実装してみる(一標本の母平均の検定)

Last updated at Posted at 2020-05-06

最近Youtubeで**ヨビノリさんの「推定・検定入門」**の動画を見ました
今まで検定というものに対してなんとなくの理解しか持っていなかったのですが、この動画を見ることで、実際にどのような原理で統計ソフトがp値や信頼区間を計算してくれていたのか、かなり詳細なレベルまで理解できた気がします

そこで今回はヨビノリさんの動画で学んだことを実用すべく、Rでt検定を実装してみたいと思います.Rを選んだ理由としては、組み込み関数で推定・検定が実装されているので自作のコードの検証がしやすいからです

みなさんもぜひ動画を見ながら追ってみてください

一標本の母平均の検定(t検定)

この検定は平均に関する検定で一番ベーシックなものですが、私自身は実践でやったことがなくてヨビノリさんの動画で初めて知った検定です
具体的には、あらかじめ決められた値とサンプルの平均を比較して、サンプルの母平均があらかじめ決められた値と異なるかどうかを検定します

問題設定

ヨビノリさんの動画で紹介されている例はこんな感じです

10年前の20台の平均身長は171.4cmだった.近年の栄養状態の改善を考えるとこの数値は増えているのではと思い9人を無作為に抽出した.抽出した結果から平均身長は増えたと言えるか.有意水準5%で検定せよ

ここで母集団(身長の分布)は正規分布に従うと仮定しています
また、ヨビノリさんの動画では問題文でサンプルの平均値と分散が与えられていますが,今回はせっかくRを使うので以下のようにサンプルを生成してみたいと思います

set.seeds(42)
x = rnorm(9, mean = 173, sd = 2)

このようなサンプルが生成されました

[1] 175.7419 171.8706 173.7263 174.2657 173.8085 172.7878 176.0230 172.8107 177.0368

さて、このサンプルから現代の20代の平均身長は171.4より大きいと言えるのでしょうか?

帰無仮説・対立仮説の記述

まずは、帰無仮説・対立仮説を記述しましょう
問題設定によれば、それぞれ以下のようになるはずです

帰無仮説 $H_0:\mu=171.4$
対立仮説 $H_1:\mu>171.4$

対立仮説の記述から、今回の検定は片側検定をすればいいことが分かります

T値の計算

サンプルの値からT値を計算してみましょう
T値は以下のような式で定義されます

$T=\frac{\bar{X}-\mu}{\frac{U}{\sqrt{n}}}$

ここでUはサンプルの不偏分散の平方根です
Rで実装してみると以下のように表現できます

mu = 171.4
# T値を計算
calcT = function(x, mu) {
  n = length(x)
  U = sqrt(var(x))
  (mean(x)-mu)/(U/sqrt(n))
}
T = calcT(x, mu)
T
[1] 4.956662

分布から確率を計算する

突然ですが、このように定義した生成値Tは自由度n-1のt分布に従うことが知られています
なんでそうなるかは動画でも詳しくは説明されてないんですが、一連の動画を見ていけばイメージはつかめます
ざっくりとした説明ですが、こんな感じでどうでしょうか.先ほどの式で不偏分散$U^2$が真の分散$\sigma^2$だった場合は生成量は正規分布に従います.ここで不偏分散はサンプルが多くなれば真の分散に近づく性質があったことを思い出してください.t分布もnが∞で正規分布に漸近する性質がありますので,理にかなっているというわけです

さっそくRに用意されているt分布の確率密度関数からT>4.95の区間の確率を求めます
これがいわゆるp値というやつです

# P値を計算
df = length(x)-1
p = 1-pt(T, df)
p
[1] 0.0005557726

仮説を棄却する

あらかじめ設定した有意水準をもとに帰無仮説か対立仮説のどちらかを棄却します
今回はp値が0.05を下回っているので帰無仮説を棄却します
どうやら10年前と比べて平均身長は増えていると結論して良さそうです

自作コードの検証

ここまで一連の流れをRの組み込み関数でやってみるとこんな感じです

> t.test(x, mu=171.4, alternative = "greater")

	One Sample t-test

data:  x
t = 4.9567, df = 8, p-value = 0.0005558
alternative hypothesis: true mean is greater than 171.4

T値、p値ともにほぼ同じ値が現れました
それにしても、自分で自作してみることでRの組み込み関数のスマートさがよくわかります

ヨビノリさんの動画をみての感想

これまでいろいろな統計の本、動画を見てきましたが、個人的な印象ではヨビノリさんの動画が圧倒的にわかりやすかったです

統計はヨビノリさんご自身の専門ではないと思うので、最初はちょっと胡散臭いかななんて思ったりしたんですが、なんてことはない、統計の専門家よりも分かりやすく、そしてコンパクトな解説で驚きました

ヨビノリさんの動画を見るまでは自分で検定を実装してみようなんて考えたこともなかったので、やはり学習教材の力は偉大です

こんなに良質な教材を日本語で用意してくれたヨビノリさんに感謝です

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?