R で累積相対度数分布 (累積分布関数) を描く方法

R で累積相対度数分布 (累積分布関数) を描く方法ですが、大きく分けて、(1) 手書き (2) ecdf() 関数を使う の2とおりがあります。細かなところの設定がしやすいのは (1) 手書きかもしれませんね。あとは、好みですかね。

いつものように iris のデータセットで、1行目 Sepal.Length の累積相対度数分布 (累積分布関数) を描いてみましょう。

その1

iris の1行目 Sepal.Length の行を hoge の1回格納してから、描画しています。hoge をソートして、小さい順に並べて、小さい方から n 番目の hoge の値で、n/(hogeの総数) が y軸に描画されるようにします。値に、"0" を加えるのが肝心です。

  > data(iris)
  > hoge <- iris[,1]
  > plot(c(0, sort(hoge) ), c(0:length(hoge))/length(hoge) , type="s")

この場合は、 type="s" のオプション指定が良いでしょう。もし、type="l" の書き方だと階段状の表記にならず、近似的な表現にります。ただし、標本数が十分に多ければ大きな問題にはならないでしょう。

ちなみに、Y軸のデータであるところの c(0:length(hoge))/length(hoge) というのを、hoge の標本数 length(hoge)で割るのをやめ c(0:length(hoge)) だけにしたら、累積度数分布の図になります。Y軸の値が、x軸値までの個数に置き代りますね。

  > data(iris)
  > plot(c(0, sort(hoge) ), c(0:length(hoge)) , type="s")

その2

  > plot(ecdf(iris[,1]), col="blue")

ecdf() を使うと書式は単純になりますね。 xlim, ylim のオプションを付けることは可能でした。ただ、type="l" は許されないようです。

B! LINE