[R]累積度数プロット

Rを使って、あるベクトルを昇順でソートして、累積度数(順位÷データ数)と値でプロットしてみた。データの分布形状を見るのに使うことを考えています。
データ数が多い場合、(グラフ表示だけでなく)配列のソートに時間がかかるかと思いましたが、10万程度であればそれほどの時間はかかりませんでした。

#グラフ設定
par(mfrow=c(1,3)) #縦1×横3に並べる

#設定
iCnt <- 10000 #乱数の個数
iMin <- 0     #最小値
iMax <- 100   #最大値

#乱数発生
r1 <- runif(iCnt, iMin, iMax)      #一様乱数
r2 <- rnorm(iCnt, iMax/2, iMax/4)  #正規分布

#ソート
s1 <- sort(r1)
s2 <- sort(r2)

#それぞれグラフに
plot(s1, rank(s1)/length(s1), type="l", col="red")
plot(s2, rank(s2)/length(s2), type="l",
 col="blue", xlim=c(iMin, iMax), ylim=c(0, 1))

#重ねる
plot(
 s1,
 rank(s1)/length(s1),
 type="l",
 xlim=c(iMin, iMax),
 ylim=c(0, 1),
 ylab="",
 xlab="",
 col="red"
)

par(new=T) #上書き指定

plot(
 s2,
 rank(s2)/length(s2),
 type="l",
 xlim=c(iMin, iMax),
 ylim=c(0, 1),
 ylab="Rank / Length",
 xlab="Value",
 col="blue"
)

legend("bottomright",
 lty=c(1, 1),
 col=c("red", "blue"),
 legend=c("一様分布", "正規分布"),
 bty="n"
)

左は一様分布(直線)、中央は正規分布(シグモイド型の曲線)
右は一様分布と正規分布を重ねて書いたもの。

累積確率プロット


2018/4/11 累積確率となっていたのを累積度数に修正