【R講座】マンホイットニーのU検定の方法と実践

R

研究室に配属されたばかりの新入生や、これからRで統計分析を始めたいと思っている方へ向けて、【R講座】では、RとRStudioの基本的な使い方から統計手法の選び方、基本的なデータ分析方法までを解説しています。

特にRが初めての方でも安心して学べるように、難しいコマンドやコードは少なめで、RStudioのクリック操作を中心に進めていくので、プログラミングの経験がなくても大丈夫です。

実際のコードを交えながら進めるので、これからの研究やデータ分析に、ぜひ役立ててください!

R講座の記事一覧
「R講座」の記事一覧です。

この記事では、マンホイットニーのU検定について紹介しています。

マンホイットニーのU検定

マン・ホイットニーU検定(Mann–Whitney U test)は、2つの独立したサンプルの順序平均を比較するためのノンパラメトリック検定です。データが等分散であることが前提条件となっています。

  • 帰無仮説 (H0):両母集団の分布は同一である。
  • 対立仮説 (H1):両母集団の分布は同一ではない。

マン・ホイットニー・ウィルコクソン検定、ウィルコクソン順位和検定、またはウィルコクソン・マン・ホイットニー検定とも呼ばれます。

RでマンホイットニーのU検定

Rを使って、マンホイットニーのU検定を実行する方法を紹介します。

関数と引数オプション

wilcox.test関数は、Wilcoxon順位和検定(またはウィルコクソン符号順位検定)を実行するために使用されるRの関数です。この関数は、データの2つの独立したサンプルまたは1つのペアデータサンプルの中央値を比較するために使用されます。

# ベクトルを使う方法
wilcox.test(x, y = NULL,
            alternative = c("two.sided", "less", "greater"),
            mu = 0, paired = FALSE, exact = NULL, correct = TRUE,
            conf.int = FALSE, conf.level = 0.95,
            tol.root = 1e-4, digits.rank = Inf, ...)

# データフレームを使う方法
wilcox.test(formula, data, subset, na.action, ...)
  • x: 数値ベクトル。データの値を指定します。無限大や欠損値などの非有効値は省略されます。
  • y: オプションの数値ベクトル。xと同様にデータの値を指定します。無限大や欠損値などの非有効値は省略されます。
  • alternative: 対立仮説を指定する文字列。デフォルトは"two.sided"で、"greater"または"less"も指定できます。最初の文字だけでも指定可能です。
  • mu: 帰無仮説を形成するために使用されるオプションのパラメーターを指定する数値。詳細は後述。
  • paired: 対応のある検定を行うかどうかを示す論理値。
  • exact: 正確なp値を計算するかどうかを示す論理値。
  • correct: p値の正規近似に連続性補正を適用するかどうかを示す論理値。
  • conf.int: 信頼区間を計算するかどうかを示す論理値。
  • conf.level: 信頼区間の信頼水準を指定する数値。
  • tol.root: (conf.intがTRUEの場合) uniroot(*, tol=tol.root)呼び出しで使用される正の数値トレランス。
  • digits.rank: 数値。有限の場合、テスト統計量のランクを計算するためにrank(signif(r, digits.rank))が使用されます。デフォルトはrank(r)
  • formulalhs ~ rhsの形式の数式。lhsはデータ値を与える数値変数であり、rhsは1つのサンプルまたは対応のある検定の場合は1、または対応するグループを与える2レベルのファクター。
  • data: 数式内の変数を含むオプションのマトリックスまたはデータフレーム(または類似のもの)。デフォルトでは変数はenvironment(formula)から取得されます。
  • subset: 使用する観測値のサブセットを指定するオプションのベクトル。
  • na.action: データにNAが含まれている場合にどうするかを示す関数。デフォルトはgetOption("na.action")
  • ...: メソッドに渡す追加の引数。

コード例と結果の見方

# サンプルデータの作成
group1 <- c(5, 7, 8, 5, 6)
group2 <- c(10, 15, 11, 12, 14)

# マンホイットニーのU検定の実行
wilcox.test(group1, group2)
# 結果 
   Wilcoxon rank sum test with continuity correction

data:  group1 and group2
W = 0, p-value = 0.01193
alternative hypothesis: true location shift is not equal to 0

この結果から、p値が0.01193であることがわかります。一般に、有意水準を5%とする場合、p値が0.05未満であれば、2つのグループ間に有意な差があると判断します。したがって、この場合、2つのグループの中央値に有意な差があると結論づけることができます。

Warning message:
In wilcox.test.default(group1, group2) :
 cannot compute exact p-value with ties

という警告文が出る場合は、exactRankTestsパッケージのwilcox.exact関数を使うこともできます。

現在(2024.07.10時点)、exactRankTestsは古いためcoinパッケージを使うようにメッセージが表示されるようです。また、coinパッケージのwilcox_testもエラーが発生しているようです。

Error in UseMethod("wilcox_test") · Issue #85 · kassambara/rstatix
I was using the this format for running wilcox_test() this morning and it was working: greed_wilcox % wilcox_test(match_...

rstatixパッケージが使えるようなので紹介します。

【R】Wilcoxonテスト(rstatixパッケージ)
rstatixパッケージを使用したWilcoxonテストの基本的な使い方と応用方法を紹介します。

この記事はマンホイットニーのU検定について解説しました。

次回はクラスカル・ウォリス検定の方法について紹介します。

この記事が少しでもお役に立てたら嬉しいです。

タイトルとURLをコピーしました