R logo

先日、共著者から送られたデータの中に、下記のようなコードがありました。

model <- lm(rank(Data$MMSETotal, ties.method = "average", na.last = "keep") ~ LATE + ADcopath + Phenotype + GlobalAgeOnset + Education + MMSEtoDeath, Data) %>%
car::Anova(type="II")

ここでひっかかったのが、

「なんで MMSE のスコアをそのまま numerical data として使わず、Rank 関数を挟んだんだんだろう?」

という事。

 

彼女に尋ねると、

「methods に書いたよ。結局ノンパラとして使ったけどね。理由は『MMSE は非正規分布だったから』」

とのこと。

 

methods には、

Because MMSE was not normally distributed, non-parametric rank transformation was applied.

とありました。

 

改めてコードを見直すと、重回帰分析のコードの前に、

tapply(rank(Data$MMSETotal, ties.method = "average", na.last = "keep"), Data$LATE, shapiro.test)
tapply(Data$MMSETotal^2, Data$LATE, shapiro.test)

という記述がありました。

 

というわけ:この機会に知った「Rank transformation」についての備忘録。

非正規分布データで Rank 関数を使用する理由

非正規分布は、相関をみたりするときに誤差が生じやすくなる。

特に、「外れ値」が、結果を大きく左右する。

この解決策として、「実際のデータを昇順に並べて、そのデータで解析する」という方法がずっと昔に提案された。

一番馴染みがあるのは、「Wilcoxon の順位和検定」だと思う。

 

そして1970年代に、Rank関数の重回帰モデルへの適応が提唱された[1, 2, 3]

R で Rank 関数を使う

Rank 関数とは、実際の値を任意の順番に並べる方法。

rank(x, na.last = TRUE,
ties.method = c("average", "first", "last", "random", "max", "min"))

のような形で使用する。

  • X: 数値、文字列、ロジカルベクター etc.
  • na.last: NA値をどう扱うかについて指定
  • ties.method: 順位がタイだったときにどう扱うかについて指定

na.last

欠損値をどう扱うかについて指定。

  • na.last = TRUE
    :欠損値は最後に配置される。
  • na.last = FALSE
    :欠損値は最初に配置される。
  • na.last = NA
    :欠損値は除外される。
  • na.last = keep
    :欠損値は「rank NA」としてキープされる。

ties.method

順位がタイだったときにどう扱うかについて指定

ties.method = "first"

最初に出てきた順に、順位が適応される。

ties.method = "last"

最後に出てきた順に、順位が適応される。

ties.method = "average"

全ての順位タイのサンプルに、順位の平均の順位が適応される。

ties.method = "random"

全ての順位タイのサンプル内で、ランダムに順位が適応される。

ties.method = "max"

全ての順位タイのサンプルに、タイ内の最後の順位が適応される。

ties.method = "min"

全ての順位タイのサンプルに、タイ内の最初の順位が適応される。

デフォルトは、

ties.method = "min"

で、スポーツの順位決めと同じ(同率2位 etc.)。

Rank関数を使って非正規分布のデータの統計解析を行う場合

冒頭で登場した ANCOVA などのモデルに Rank 関数を適応するときは、

  • na.last : "keep"
  • ties.method : "average"

を使用する。

rank(Data, ties.method = "average", na.last = "keep")

References

  1. class="anchor">Jureˇcková. Nonparametric estimate of regression coefficients. The Annals of Mathematical Statistics, 42:1328–1338, 1971.
  2. class="anchor">A. Jaeckel. Estimating regression coefficients by minimizing the dispersion of the residuals. The Annals of Mathematical Statistics, 43:1449–1458, 1972
  3. class="anchor">McKean and T. Hettmansperger. A robust analysis of the general linear model based on one step R-estimates. Biometrika, 65(3):571, 1978
  4. class="anchor">John D. Kloke and Joseph W. McKean , The R Journal (2012) 4:2, pages 57-64.
  5. class="anchor">WIREs Comput Stat 2012, 4:432–438. doi: 10.1002/wics.1216
にほんブログ村 科学ブログ 脳科学へ
にほんブログ村 子育てブログ ワーキングマザー育児へ