RとJMPを行ったり来たりしてデータを解析してるんですが、Rで0.5%と99.5%の分位点を出した時にあれ?ってなったのでメモ。
データはみんな大好きiris
ちゃんを使いました。
JMPにも同じサンプルデータが入ってるんですね。ずっと使ってるのに知らなかった〜
参考:あやめの測定値を検討する
動作環境 (2021/01/08 追記)
- macOS Catalina 10.15.7
- R version 4.0.2 (2020-06-22)
- R Studio Version 1.3.1093
- JMP® Pro 15.0.0
【JMP】一変量の分布
iris.jmpのデータを開いたら、シンプルに一変量の分布でがくの長さ
の分位点を出してみます。
0.5%が4.3、99.5%が7.9でした。
【R】stats::quantile()
深く考えず、irisを読み込んでquantile()で0.5%と99.5%の分位点を出します
data("iris")
iris$Sepal.Length %>% quantile(c(0.005, 0.995))
> iris$Sepal.Length %>% quantile(c(0.005, 0.995))
0.5% 99.5%
4.3745 7.7510
おや…?
どゆことやねん!とおもって?quantile
で確認。
どうやら分位点は求め方がいくつかあるようですね。ここでtype =
を指定しないといけないのか…と気づく。
分位点の説明は藤本先生のHPがめちゃくちゃ参考になりました。
とりあえず全部のtypeを出してみた
WikipediaをみてもJMPがどれに該当するかよくわからなかったので、とりあえず全typeで結果を出してみることにしました。
x <- iris$Sepal.Length
results <- list()
for(i in 1:9){
results[[i]] <- quantile(x, c(0.005, 0.995), type = i)
}
bind_rows(lapply(results, as.data.frame.list))
> bind_rows(lapply(results, as.data.frame.list))
X0.5. X99.5.
1 4.300000 7.90000
2 4.300000 7.90000
3 4.300000 7.70000
4 4.300000 7.75000
5 4.325000 7.85000
6 4.300000 7.90000
7 4.374500 7.75100
8 4.308500 7.88300
9 4.312625 7.87475
どうやらデフォルトはtype = 7
みたいですね。
そして、JMPで出した分位点と同じ値になったのはtype = 1, 2, 6
でした。
試しに0.25%と97.5%の値も確認しましたが、こちらも同じ。
というわけで、xをiris$Sepal.Width
に変えてみます。0.05%、0.25%、97.5%、99.5%の値も見てみることにします。
x <- iris$Sepal.Width
results2 <- list()
for (i in 1:9) {
results2[[i]] <- quantile(x, c(0.005, 0.025, 0.975, 0.995), type = i)
}
bind_rows(lapply(results2, as.data.frame.list))
> bind_rows(lapply(results2, as.data.frame.list))
X0.5. X2.5. X97.5. X99.5.
1 2.00000 2.200000 4.000000 4.40000
2 2.00000 2.200000 4.000000 4.40000
3 2.00000 2.200000 3.900000 4.20000
4 2.00000 2.200000 3.925000 4.25000
5 2.05000 2.225000 3.975000 4.35000
6 2.00000 2.200000 4.022500 4.40000
7 2.14900 2.272500 3.927500 4.25100
8 2.01700 2.209167 3.990833 4.38300
9 2.02525 2.213125 3.986875 4.37475
type = 1,2
とtype = 6
で異なる値になりました!
JMPでもがくの幅
の分位点を出してみます。
type = 6
と同じ値になってますね。
結論
どうやらJMPでの分位点の求め方はRのtype = 6に該当するようです。