第4章では統計の中でも検定を扱っています。

ここまでいろいろな検定を行ってきましたが、グラフを作る時はどうするでしょうか?

スクリーンショット 2019-10-27 21.42.47

これは【4-1】Rでt検定を行う方法で行ったt検定の結果です。
p値があり、下には95%信頼区間、その下には各グループの平均が記載されています。

p = 0.00975
95%信頼区間:-12.154877 〜 -1.745123
A:28.12
B:35.07

この数値をグラフなどにするには手で打ち直すかコピペをすることが多いと思います。
今回はこの数値がどこに入っているのか?どうやって取り出せばいいのかという話です。

今回は架空のデータを使いますがもし第4章を実践された方はそのデータでも大丈夫です。


1.使うデータ

こんなデータを作りました。
男性:50人、平均170cm、標準偏差10cm
女性:50人、平均165cm、標準偏差10cm

set.seed(2019)
male <- rnorm(50, 170, 10)
set.seed(2019)
female <- rnorm(50, 165, 10)
height <- c(male, female)
sex <- c(rep("male", length(male)), rep("female", length(female)))
dat_height <- tibble(height, sex)
head(dat)

rnorm関数(個数、平均、標準偏差)を指定すると疑似データを作ってくれます。
heightの列に男女のデータをc関数でくっつけ100人のデータにします。
sexの列は(男性,男性,男性,,,,女性,女性,女性,,,,,)としたいのでrep関数を使いました。
rep(繰り返したいもの, 回数)と使います。
tibble関数でheightとsexをつなげました。

2.t検定をする

これをt検定してみます。
t検定は【4-1】Rでt検定を行う方法で紹介しています。


等分散かどうかはそもそも等分散になるようデータを作りましたのでvar = TRUEを付けます。

t.test(height ~ sex, var = TRUE, data = dat_height)
スクリーンショット 2019-11-06 20.37.39

ここまでできました。

このままだとデータは取り出せません。結果を変数に入れます。
今回はres_heightとします
res_height <- t.test(height ~ sex, var = TRUE, data = dat_height)

3.結果からデータを取り出す

すると右上のEnvironmentタブに結果が格納されます。
スクリーンショット 2019-11-06 20.59.45


スクリーンショット 2019-11-06 21.05.31

データをみるとList of 10とあります。
リストというのはExcelのシートが10個あって、それぞれにデータが入っているというイメージです。
一番左がExcelでいうシート名です。
スクリーンショット 2019-11-07 0.13.47


リストの各データを呼び出すのは$もしくは[[ ]]を使います。
p値はp.valueに入っていますのでこうなります。
スクリーンショット 2019-11-07 0.30.11
res_height$p.value

res_height[["p.value"]]
スクリーンショット 2019-11-07 1.06.18

もし小数点以下を四捨五入したい場合はround関数を使います。

round(res_height$p.value, 3)

round(res_height[["p.value"]], 3)
スクリーンショット 2019-11-07 1.06.07


95%信頼区間はconf.intに入っています。
ただそのまま出すと2つのデータが出てきます(95%信頼区間の最小と最大)。
それぞれの値を取り出すには[ ] を使います。[[ ]]ではないので注意してください。
[ ]は【1-12】Rで特定の条件にあう要素を抜き出す方法で紹介しましたが、条件式ではなくただの数値をいれると◯番目のデータを取り出してくれます。

[1]だと1つ目のデータ(つまり最小)
[2]だと2つ目のデータ(つまり最大)が取り出せます。

res_height$conf.int[1]
res_height[["conf.int"]][2]
スクリーンショット 2019-11-07 1.03.41

そして点推定である各平均はestimateに入っています。
res_height$estimate
res_height$estimate[1]
res_height[["estimate"]][2]
スクリーンショット 2019-11-07 2.04.43



4.データを取り出すメリット
結果をコピペしても問題はないのですが、こうすることでのメリットがあります。

それはもし後でデータが変わったとしてもコード自体は何も変えなくていいことです。
考えたくはありませんが、後でデータが増えた、実は個々の数値が間違ってた等あると結果も変わります。しかしデータをコードで取り出しておくと、データが変わっても自動的に数値が更新されるのでミスする可能性が減ります。元データを修正するだけでいいというのはExcelやEZRでは簡単にはできません。

5.まとめ
今回は検定の結果からデータを取り出す方法を紹介しました。
検定の種類によっては取り出し方が違うこともありますが、まずは結果が格納されたデータをみるとヒントがあるかもしれません。

次回は取り出した値を使って95%信頼区間のグラフを作る方法を紹介します。