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 累積確率となっていたのを累積度数に修正