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