本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:多重比較や頑健な手法を網羅的に実行できる「oneway」パッケージ

実験データや調査結果を比較する際、単に有意差を検定するだけでなく、前提条件の確認や効果量の算出といった一連の解析を正確に行う必要があります。

本パッケージは、正規性や等分散性の検定から、分散分析やノンパラメトリック検定、多重比較、さらには効果量の推定までを一貫した操作感で実行できます。一貫したインターフェースを備えているため、解析の再現性を保ちながらスムーズなワークフローを構築できるのが強みです。

パッケージバージョンは0.0.2。Windows 11 x64 (build 26200)のR version 4.6.1で確認しています。

パッケージのインストール

下記コマンドを実行してください。

# パッケージのインストール
install.packages("oneway")

# パッケージの読み込み
library("oneway")
スポンサーリンク

コマンド例

詳細はコメント、パッケージのヘルプを確認してください。

正規性や等分散性の検定は、データの前提条件を確認するための検定です。

データの形式を変換して解析に適した形に整えた後、さまざまな統計検定や多重比較検定を実行するための関数群です。

データフレームの横持ちから縦持ちへの変換:df_wide_to_longコマンド

横持ちのデータフレームを、ggplot2などで扱いやすい縦持ちの形式に変換します。

オプション意味初期値
dfデータフレーム
columns縦持ち形式に変換する列の指定
names_to元の列名を含む新しい列の名前“grp”
values_to変換後の値を含む新しい列の名前“val”
keep指定した列以外を結果に含めるか否かFALSE
# サンプルサイズを10に設定
n <- 10

# 3つのグループを含むワイド形式のデータフレームを作成
df0 <- data.frame(
  G1 = stats::rnorm(n, 6, 1),
  G2 = stats::rnorm(n, 6, 1),
  G3 = stats::rnorm(n, 3, 1)
)

# 指定した列をロング形式に変換
df_wide_to_long(df0, c("G1", "G2"))

実行結果:

grp      val
1   G1 4.802864
2   G1 5.446521
3   G1 3.643414
4   G1 5.544890
5   G1 6.581401
6   G1 5.912251
7   G1 6.032688
8   G1 5.241119
9   G1 4.821985
10  G1 6.191957
11  G2 4.686363
12  G2 6.399116
13  G2 5.631785
14  G2 7.711291
15  G2 7.104590
16  G2 6.981949
17  G2 7.041900
18  G2 6.563399
19  G2 6.038800
…(以下略)

p値を有意性を示す記号へ変換:pval2asteriskコマンド

計算されたp値を、論文や図表で一般的に用いられるアスタリスク記号のラベルに置き換えます。

オプション意味初期値
xp値の数値ベクトル
break_points有意水準のしきい値のベクトルc(0.055, 0.05, 0.01, 0.001, 0)
symbolsbreak_pointsに対応する有意性のラベル“ns”(候補: “ns”, “.”, “*”, ““, “*”)
# p値のベクトルを定義
p <- c(0.20, 0.04, 0.008, 0.0005, 1e-6)
# p値をアスタリスクに変換
pval2asterisk(p)

# カスタムの有意性ラベルを適用
pval2asterisk(
  p,
  break_points = c(0.05, 0.01, 0),
  symbols = c("Not significant", "Significant", "Highly significant")
)

実行結果:

[1] "ns"  "*"   "**"  "***" "***"
[1] "Not significant"    "Significant"        "Highly significant"
[4] "Highly significant" "Highly significant"

統計解析用のシミュレーションデータの生成:simulated_dataコマンド

統計解析の練習やシミュレーションのために、あらかじめ定義された特定の構造を持つ擬似データセットを生成します。

# O_O_Oデータセットを読み込み
data(O_O_O)

# O_O_Oデータの箱ひげ図をプロット
boxplot(val ~ grp, data = O_O_O)

# X_X_Xデータセットを読み込み
data(X_X_X)

# X_X_Xデータの箱ひげ図をプロット
boxplot(val ~ grp, data = X_X_X)

# O_O_Oデータのグループごとの平均値を計算
aggregate(val ~ grp, data = O_O_O, FUN = mean)

# X_X_Xデータのグループごとの平均値を計算
aggregate(val ~ grp, data = X_X_X, FUN = mean)

実行結果:

grp      val
1  G1 4.641624
2  G2 5.948743
3  G3 3.106485
4  G4 4.880083
5  G5 6.375095
  grp       val
1  G1  9.667313
2  G2  4.302930
3  G3  1.566811
4  G4  6.490958
5  G5 11.823754
6  G6  3.790654

ダン検定による多重比較:Dunn_testコマンド

多重比較を行う際に、分散の等質性が仮定できない場合に適したDunnの検定を実行します。

オプション意味初期値
data応答変数とグループ変数を取得するデータフレームまたはKruskal_Wallis_testの結果オブジェクト
formula応答変数とグループ変数を指定する式(”oneway_aov”オブジェクトの場合は無視される)NULL
alpha有意水準を指定する0から1の間の数値0.05
p_adjust_method多重比較のp値調整方法を指定する文字列(”holm”など)“holm”
rounding出力に表示する小数点以下の桁数を指定する整数4
verbose警告やメッセージを表示するかどうかの論理値TRUE
# X_X_Oデータに対するDunn検定を実行
out <- Dunn_test(X_X_O, val ~ grp)

実行結果:

-------------------------------------
Dunn's multiple comparison procedure
-------------------------------------
Data: X_X_O ; Formula: val ~ grp

  GROUP CLD  N     AVG     SD     MED
1    G1   a 20 11.9633 0.7985 11.9720
2    G2  bc 20  8.1905 2.5801  8.8330
3    G3   d 20  5.5526 0.5113  5.3966
4    G4   b 20  9.7142 1.3761  9.5068
5    G5  bc 20  9.2874 1.1111  9.1363
6    G6  cd 20  7.7708 4.9047  6.9180

ゲームス・ハウエル検定による多重比較:Games_Howell_testコマンド

等分散を仮定しない多重比較を行うため、分散の異なる群間での有意差を検定する際に適しています。

オプション意味初期値
data応答変数とグループ変数を取得するデータフレームまたはoneway_anovaの結果オブジェクト
formula応答変数とグループ変数を指定する式(”oneway_aov”オブジェクトの場合は無視される)NULL
alpha有意水準を指定する0から1の間の数値0.05
rounding出力に表示する小数点以下の桁数を指定する整数4
verbose警告やメッセージを表示するかどうかの論理値TRUE
# O_X_Xデータに対するGames-Howell検定を実行
out <- Games_Howell_test(O_X_X, val ~ grp)

実行結果:

-------------------------------------------
Games-Howell multiple comparison procedure
-------------------------------------------
Data: O_X_X ; Formula: val ~ grp

  GROUP CLD  N     AVG     SD     MED
1    G1   a 27 15.8754 1.9604 15.5641
2    G2  cd 24 10.4570 2.5398 10.1372
3    G3  cd 16  9.0211 1.6341  9.0953
4    G4   e 30  5.2209 0.9513  5.2100
5    G5  bc 11 10.4630 3.3207 10.6098
6    G6   b 20 13.8619 0.7809 13.8442

クラスカル・ウォリス検定による一元配置分散分析:Kruskal_Wallis_testコマンド

正規性の仮定が満たされない場合に、3群以上の比較を行うための非パラメトリックな一元配置分散分析を実行します。

オプション意味初期値
data応答変数とグループ変数を含むデータフレーム
formula応答変数とグループ変数を指定する式
alpha有意水準(0から1の範囲の数値)0.05
rounding出力に表示する小数点以下の桁数4
verbose警告やメッセージを表示するかどうかの論理値TRUE
# 3つのグループの値をリスト形式で定義
lst <- list(
    "depressant" = c(55, 0, 1, 0, 50, 60, 44),
    "stimulant" = c(73, 85, 51, 63, 85, 85, 66, 69),
    "placebo" = c(61, 54, 80, 47)
)
# 各グループの正規性を検定
normality::is_normal(lst)
# リストデータに対してKruskal-Wallis検定を実行
Kruskal_Wallis_test(lst)

# anorexiaデータに対するKruskal-Wallis検定を実行
Kruskal_Wallis_test(anorexia, weight_gain ~ therapy)

実行結果:

[1] FALSE
          DF      SS MS       H  Hcrit Pvalue signif p_omega2         method
Group      2 328.125 NA 10.4075 5.9915 0.0055     **       NA Kruskal-Wallis
Residuals 16      NA NA      NA     NA     NA   <NA>       NA Kruskal-Wallis
Total     18      NA NA      NA     NA     NA   <NA>       NA Kruskal-Wallis
          DF       SS MS      H  Hcrit Pvalue signif p_omega2         method
Group      2 3973.747 NA 9.0731 5.9915 0.0107      *       NA Kruskal-Wallis
Residuals 69       NA NA     NA     NA     NA   <NA>       NA Kruskal-Wallis
Total     71       NA NA     NA     NA     NA   <NA>       NA Kruskal-Wallis

REGWQ検定による多重比較:REGWQ_testコマンド

正規分布に従わないデータにおいて、多重比較を行う際に頑健な結果を得るためのREGWQ検定を実行します。

オプション意味初期値
data応答変数とグループ変数を取得するデータフレームまたはoneway_anovaの結果オブジェクト
formula応答変数とグループ変数を指定する式(”oneway_aov”オブジェクトの場合は無視される)NULL
alpha有意水準を指定する0から1の間の数値0.05
rounding出力に表示する小数点以下の桁数を指定する整数4
verbose警告やメッセージを表示するかどうかの論理値TRUE
# morphineデータに対するREGWQ検定を実行
out <- REGWQ_test(morphine, tolerance ~ grp)

実行結果:

------------------------------------
REGWQ multiple comparison procedure
------------------------------------
Data: morphine ; Formula: tolerance ~ grp

  GROUP CLD N AVG     SD  MED
1   McM   a 8  29 6.1644 28.5
2    MM   b 8  10 5.1270 10.5
3    MS   c 8   4 3.1623  3.5
4    SM   a 8  24 6.3696 23.0
5    SS   b 8  11 6.7188 10.5

テューキーの正直な有意差検定による多重比較:Tukey_HSD_testコマンド

正規分布を仮定するデータにおいて、3群以上の比較を行う際の標準的な多重比較検定を実行します。

オプション意味初期値
data応答変数とグループ変数を取得するデータフレームまたはoneway_anovaの結果オブジェクト
formula応答変数とグループ変数を指定する式(”oneway_aov”オブジェクトの場合は無視される)NULL
alpha有意水準を指定する0から1の間の数値0.05
rounding出力に表示する小数点以下の桁数を指定する整数4
verbose警告やメッセージを表示するかどうかの論理値TRUE
# O_O_Oデータに対するTukey HSD検定を実行
out <- Tukey_HSD_test(O_O_O, val ~ grp)

実行結果:

----------------------------------------
Tukey-HSD multiple comparison procedure
----------------------------------------
Data: O_O_O ; Formula: val ~ grp

  GROUP CLD  N    AVG     SD    MED
1    G1   b 20 4.6416 0.9727 4.6200
2    G2   a 20 5.9487 0.8299 5.8601
3    G3   c 20 3.1065 0.9573 2.9643
4    G4   b 20 4.8801 0.9731 4.7882
5    G5   a 20 6.3751 0.8290 6.3585

この記事が誰かの役に立ちますように。

スポンサーリンク
価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。