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値を、論文や図表で一般的に用いられるアスタリスク記号のラベルに置き換えます。
| オプション | 意味 | 初期値 |
|---|---|---|
| x | p値の数値ベクトル | |
| break_points | 有意水準のしきい値のベクトル | c(0.055, 0.05, 0.01, 0.001, 0) |
| symbols | break_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 <おすすめのRに関する書籍です>
ゲームス・ハウエル検定による多重比較: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-WallisREGWQ検定による多重比較: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 <おすすめのRに関する書籍です>
この記事が誰かの役に立ちますように。