先日、共著者から送られたデータの中に、下記のようなコードがありました。
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
-
:欠損値は「rank NA」としてキープされる。na.last = keep
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
- Jureˇcková. Nonparametric estimate of regression coefficients. The Annals of Mathematical Statistics, 42:1328–1338, 1971.
- A. Jaeckel. Estimating regression coefficients by minimizing the dispersion of the residuals. The Annals of Mathematical Statistics, 43:1449–1458, 1972
- McKean and T. Hettmansperger. A robust analysis of the general linear model based on one step R-estimates. Biometrika, 65(3):571, 1978
- John D. Kloke and Joseph W. McKean , The R Journal (2012) 4:2, pages 57-64.
- WIREs Comput Stat 2012, 4:432–438. doi: 10.1002/wics.1216
-
Returns the sample ranks of the values in a vector. Ties (i.e., equal values) and missing values can be handled in several ways.