【R講座】クラスカル・ウォリス検定

R講座

研究室に配属されたばかりの新入生や、これからRで統計分析を始めたいと思っている方へ向けて、【R講座】では、RとRStudioの基本的な使い方から統計手法の選び方、基本的なデータ分析方法を解説しています。特にRが初めての方でも安心して学べるように、RStudioのクリック操作も紹介していきます。実際のコード例を交えながら進めるので、これからの研究やデータ分析に、役立てていただけたら嬉しいです。

みなさん、こんにちは!

ここでは、この回で紹介したクラスカル・ウォリス検定について解説しています。

今回の内容
  • クラスカル・ウォリス検定の概要
  • クラスカル・ウォリス検定の方法
  • 結果の見方

クラスカル・ウォリス検定とは

クラスカル・ウォリス検定は、3群以上の順位データを比較するためのノンパラメトリック検定です。この検定は、一元配置分散分析のノンパラメトリック版とも言えます。

前提条件

クラスカル・ウォリス検定を実施する際には以下の条件を確認します。

  • 対応の有無:独立した群
  • 正規性:不要
  • 等分散性:等分散を仮定
  • 群数:2群以上
  • データ尺度:順序尺度または比例尺度・間隔尺度
仮説の設定

クラスカル・ウォリス検定では次の仮説を設定します。

  • 帰無仮説(H0:全ての群の分布が同じである
  • 対立仮説(H1:少なくとも1つの群の分布が他と異なる

関数の構造と引数オプション

Rでクラスカル・ウォリス検定を行うには、kruskal.test()関数を使用します。

関数の構造

# ベクトルを使う方法
kruskal.test(x, g)

# フォーミュラを使う方法
kruskal.test(formula, data, subset, na.action, ...)

引数オプション
  • x : 数値データのベクトル、または数値データのリスト
  • g : x に対応するグループを示すベクトルまたは因子
  • formula : 応答変数 ~ グループ の形でデータを指定する式
  • data : formula を適用するデータフレームまたは行列
  • subset : 使用するデータの一部を指定するためのオプション
  • na.action : 欠損値 (NA) をどのように扱うかを指定する関数
  • ... : その他の引数

分析の実践

次のステップでデータを分析していきます。

Rでクラスカル・ウォリス検定の手順
  • STEP 1
    データの読み込み

    csvファイルからデータを読み込みます。

  • STEP 2
    データの型変換(キャスト)

    読み込んだデータの要因データを、Factor型に変更します。

  • STEP 3
    クラスカル・ウォリス検定の実行

    kruskal.test関数でクラスカル・ウォリス検定を実行します。

  • STEP 4
    結果の出力

    計算された結果がコンソールペインに出力されます。

使用するデータ

この講座では、説明のために同じ CSV データを使い回しています。
実際には、データの性質(分布・尺度・サンプル数など)に合わせて、適切な統計検定を選びましょう。

csvファイル

このcsvファイルには次のデータが含まれています。

Temperature (°C)Height (cm)Weight (g)
2511.40856335683434.032819857028
259.4582396378988954.9096737259706
2510.278664724106454.2160336538475
259.806027255329768.739038985953
2511.576158181218760.3451432394433
258.5244523647394850.8181031035401
259.8553917926894649.1747623798284
258.9249898091818356.060734308621
2510.406542731944941.125798546829
2512.229262201640951.0542139019377
3013.4855029917497103.528744733185
3014.938292577988105.503933584551
3014.85272920996188.6566903148316
3016.541593068827114.623515387464
3014.0181443311961107.021167106676
3015.4965781726617125.071111484834
3016.696947880723181.0997285637598
3014.739263691431994.1018720980883
3014.294071414332382.8549770315418
3014.838821493827795.790021021833
3515.501321827723778.1014137650469
3513.986460329505292.025705860145
3516.614752235468170.5661519563607
3515.005641984852563.0140291668191
3512.095100939654471.926190857745
3513.892835181031381.2105420273818
3516.547566932618376.8190219140427
3514.023169649653388.1840093119247
3514.898496552368372.0109068656934
3515.042650249796758.5177825784117

データの読み込み

まずは、次のコードを使って、オブジェクト「data」にread.csv()関数でcsvファイルのデータを代入します。

# データの読み込み
data <- read.csv(file.choose(),
                 check.names = F)

データの前処理

次に、データの因子変換をします。

Rでは説明変数をFactor型のデータとします。今回の分析ではTemperature (°C)を説明変数とするので、as.factor()関数でデータ型をinteger型からFactor型に変更します。

# 説明変数をデータ型をFactor型に変更
data$`Temperature (°C)` <- as.factor(data$`Temperature (°C)`)

実行結果は、Environmentタブで確認できます。Temperature (°C)のデータ型がinteger型(左図)からFactor型(右図)に変わります。

バッククォート「`」について、少しだけ補足します。

R言語においてバッククォート「 ` 」で文字列を挟むと、通常は予約語や空白、特殊文字を含む名前を使うことができます。これにより、通常は無効な識別子として扱われる文字列を有効なオブジェクト名として扱うことができます。

ヘッダー名であるHeight (cm)は、スペース「 」や括弧「()」が含まれているため、そのままオブジェクト名として使用できませんが、バッククォートを使うことでオブジェクト名として使用できます。

クラスカル・ウォリス検定

入力法方はフォーミュラ型で、目的変数はHeight (cm)のデータ、説明変数はTemperature (°C)としています。目的変数を変更すれば、Weight (g)のデータを検定できます。

# クラスカル・ウォリス検定の実行
kruskal.test(data$`Height (cm)` ~ data$`Temperature (°C)`)

結果の見方

検定を実行した結果は、コンソールペインに表示されます。

	Kruskal-Wallis rank sum test

data:  data$`Height (cm)` by data$`Temperature (°C)`
Kruskal-Wallis chi-squared = 18.97, df = 2, p-value = 7.597e-05

この結果から、p値が0.05より小さいため、少なくとも1つのグループの中央値に有意な差があると判断することができます。

有意水準・p値・信頼区間
項目説明
有意水準 (α)帰無仮説を棄却する基準。通常 0.05(5%) や 0.01(1%) を使用する。
例: α = 0.05なら、5%未満の確率で偶然起こる差を「有意」と判断する。
p値検定統計量が観測された値以上になる確率。
p値 < 有意水準 (α) なら、統計的に有意と判断し、帰無仮説を棄却する。
統計的に有意とは?「偶然の変動では説明できない差がある」と判断すること。ただし「実験的に重要」や「因果関係がある」とは限らない。
信頼区間 (Confidence Interval, CI)母集団の真の値(2つのグループの平均値の差)が含まれる範囲を示す。例えば 95%信頼区間 は、繰り返し実験したときに95%の確率で真の値(平均値の差)を含む。
信頼区間と有意性の関係もし信頼区間が ゼロ(または比較対象の値)を含まなければ、統計的に有意と判断できる。
例:平均差の95%信頼区間が (0.5, 2.3) なら、有意水準5%で有意。
注意点統計的有意でも「効果の大きさ(実用的な意味)」とは異なる。
p値が大きくても「差がない」とは言えない(サンプル数が少ない可能性)。

まとめ

まとめ
  • クラスカル・ウォリス検定の概要
    • ノンパラメトリック・等分散・3群以上
    • 間隔・比例・順序尺度
  • クラスカル・ウォリス検定の方法
    • ベクトル型の場合:kruskal.test(ベクトル1,ベクトル2)
    • フォーミュラ型の場合:kruskal.test(目的変数 ~ 説明変数)
  • 結果の見方
    • 有意水準・p値・信頼区間から判断
    • 統計的な意味と実用的な意味に注意

ここでは、Rを使用してクラスカル・ウォリス検定を行う方法について解説しました。

配布したcsvデータにはWeight (g)のデータもあるので、コードを書き換えて練習してみてください。

Rでは、コードの文法が正しければどんな統計手法でも計算が実行されてしまうため、結果が出たからといって安心するのは危険です。統計解析では、データの種類や前提条件に適した手法を選ぶことが重要であり、誤った検定を適用すると意味のない結果を得てしまう可能性があります。

そのため、単にコードを動かすだけでなく、

  • データの分布(正規分布かどうか)
  • 変数の尺度(カテゴリーデータか、連続データか)
  • サンプルサイズ(母数が少ないと適さない検定もある)

などを考慮し、統計の知識をもとに適切な解析方法を選択する必要があります。

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