経験分布関数

観測データの分布の具合を知るのに、分位点を求めることがある。この関数はquantile関数。
今、valuesが観測データの値のリストとし、知りたい分位点のリストをlist={0,25,0.5,0.75}のようにすれば、

quantile(values,list)

のようにして、分位点にある観測データが得られる。
他方、ある値(興味ある値)が、観測データの中でどのくらいの位置にあるかを知りたいこともあり、それは、「観測データ全体のうち、興味ある値以下のものの比率」として捉える。
それは、Rの標準ライブラリの一つであるstepfun ライブラリのecdf(empirical cumulative distribution function)によって求められる→こちらを参照
こんな風にしてもよい。もう少し、なにか、便利な書き方がありそうな気もするが、みつからない・・・
valuesは観測データの値のリスト
levelsは、値のリスト、cumulprob関数は、levelsの要素ごとに、その値以下の割合を返す。

cumulprob<-function(values,levels){
 ret<-rep(1,length(levels));
 sortedv<-sort(values);
 counter<-1;
 for(i in 1:length(sortedv)){
  if(sortedv[i]>levels[counter]){ret[counter]<-i/length(sortedv);counter<-counter+1}
  if(counter>length(levels))break
 }
 return(ret)
}