炎症状態(C反応性たんぱく;CRP)について、グループ(3グループ)や栄養状態(問題の無い群と低い群)の影響があるのかを調べます。読み込んだデータは以下の通りです。
groups |
nutrition |
crp |
a |
low |
0.845 |
a |
low |
0.562 |
a |
low |
0.638 |
中略 |
中略 |
中略 |
b |
low |
0.469 |
b |
low |
0.286 |
b |
low |
0.393 |
中略 |
中略 |
中略 |
c |
hight |
0.276 |
c |
hight |
0.092 |
c |
hight |
0.216 |
コードと結果は以下の通りとなります。
> anova_test(data1, crp ~ groups * nutrition)
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 groups 2 54 40.368 1.9e-11 * 0.599
2 nutrition 1 54 27.590 2.6e-06 * 0.338
3 groups:nutrition 2 54 6.670 3.0e-03 * 0.198
入力したコードは、一元配置分散分析と同じanova_test関数で、( )内で二元配置の構造を指定します。最初にデータの指定です。ここでは、data1です。次に、crpとgroupsまたはnutrition を~ で結びます。ここで、2つの要因は*で結びます。crpについてgroupsのnutritionの影響を分析するという意味になります。
出力結果ですが、自由度、F値、p値、効果量に関する情報が提示さされていることに変わりはありません。ただし、それぞれ3行に渡って結果が出力されています。groupsはグループの違いによる効果、nutritionは栄養状態の違いによる効果、groups:nutritionは交互作用の結果です。有意水準を0.05とすると、グループや栄養状態による主効果は確認されましたが、同時に交互作用が有意となっています。こうなった場合、要因の水準毎に効果が異なっている可能性があるので、単純主効果を調べる必要が出てきます。そこで、今回は、栄養状態に問題の無い群と低い群で分けて、グループ毎に一元配置分散分析を行っていくことにします。
ここで、パイプ演算子とgroup_by()関数が活躍します。データをgroup_by()で行うのです。実際には以下のようなコードになります。
> data1 |> group_by(nutrition) |> anova_test(crp ~ groups)
# A tibble: 2 × 8
nutrition Effect DFn DFd F p `p<.05` ges
* <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
1 hight groups 2 27 5.20 1.2 e- 2 * 0.278
2 low groups 2 27 65.1 4.65e-11 * 0.828
結果です。1行目は、栄養状態が問題の無い群での単純主効果の結果、2行目は栄養状態が低い群での単純主効果の結果です。いずれも有意な主効果となっています。主効果が確認されたので、さらに、多重比較へ進みます。
> data1 |> group_by(nutrition) |> t_test(crp ~ groups)
# A tibble: 6 × 11
nutrition .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
* <chr> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
1 hight crp a b 10 10 2.00 12.1 0.069 0.137 ns
2 hight crp a c 10 10 2.72 11.1 0.02 0.059 ns
3 hight crp b c 10 10 1.30 17.4 0.209 0.209 ns
4 low crp a b 10 10 7.14 15.2 0.00000311 0.00000622 ****
5 low crp a c 10 10 10.3 17.0 0.0000000105 0.0000000315 ****
6 low crp b c 10 10 4.55 17.2 0.000276 0.000276 ***
結果です。1列目のnutritionは栄養状態に問題の無い群と低い群に群ごとの結果を行ごとわかるように示してあります。group1とgroup2は比較を行った群が記載されています。n1とn2は各群のサンプルサイズ、statisticはt値、dfは自由度、pは多重比較補正前のp値、p.adj pはholm法による多重比較補正後のp値を示しています。この結果をみると、栄養状態に問題の無い群ではどのグループ間でも有意差は認められませんでした。一方で、栄養状態の低い群では、全てのグループ間に有意差がありました。
コードと結果は以下の通りです。
> data1 |> group_by(groups) |> t_test(crp ~ nutrition)
# A tibble: 3 × 9
groups .y. group1 group2 n1 n2 statistic df p
* <chr> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl>
1 a crp hight low 10 10 -4.00 13.7 0.00138
2 b crp hight low 10 10 -4.06 17.2 0.000804
3 c crp hight low 10 10 -0.857 17.4 0.403
コメント