- 分散分析
3つのグループに対しbmiを測定したデータについて、グループ間の平均値に下がるのかを分散分析で調べます。読み込んだデータは以下の通りです。
groups |
bmi |
a |
18.3 |
a |
17.89 |
a |
17.55 |
中略 |
中略 |
b |
20.23 |
b |
21.03 |
b |
19.1 |
中略 |
中略 |
c |
22.87 |
c |
21.96 |
c |
22.37 |
コードと結果は以下の通りです。
> anova_test(data1, bmi ~ groups)
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 groups 2 57 121.351 2.86e-21 * 0.81
このコードでは、anova_test関数を( )内の内容にしたがって実行しています。( )内では、データの指定と解析対象の目的変数と説明変数の指定を行います。最初にデータの指定です。ここでは、data1です。次に、bmiとgroupsを ~ で結びます。bmiについてgroupsの影響を分析するという意味になります。
結果ですが、DFnとDFdは自由度で、FはF値、pはp値です。gesは効果量です。p値は極めて小さい値となっており、0.05を有意水準と設定した場合、主効果がある、と判断できます。
- 多重比較
ここからさらに水準間での差を確認したい場合、多重比較を行ってきます。2群間の比較になるので、基本的にはt検定を行い、p値を補正していきます。rstatixパッケージでは、多重比較補正はholm法がデフォルトです。なおholm法はRのベースパッケージでもデフォルトになっています。
コードと結果は以下の通りです。
> t_test(data1, bmi ~ groups)
# A tibble: 3 × 10
.y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
* <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
1 bmi a b 20 20 -9.30 31.4 1.55e-10 3.10e-10 ****
2 bmi a c 20 20 -16.4 30.4 1.18e-16 3.54e-16 ****
3 bmi b c 20 20 -6.29 37.9 2.29e- 7 2.29e- 7 ****
コードは、対応のないt検定と全く変わりません。多重比較の指定をしなくても、t検定の関数を知っているだけで、シンプルにできてしまうのがこの関数のすばらしいところです。水準が3(グループが3つ)の場合、組み合わせは3つ(a vs b、 a vs c、 b vs c)になりますが、特にそのことをコードで指定しなくても、結果として組み合わせを検出し、t検定を行います。
結果です。group1とgroup2は比較した2群を、n1とn2を、statisticはt値、dfは、pはp値、p.adjはholm補正後のp値です。この結果から、すべての群間に有意差があることが理解できます。
コメント