からの出力に関数を適合させたいecdf
:
x<-rnorm(100)
z<-ecdf(x)
通常の分布ではなく、一般的な関数に適合させたいことに注意してください。私の最初のアプローチは使用することでしたが、フィットを実行するためにlm
個々の値を取得することはできません.z
組み込み関数でこれを行う方法もわかりませんでしたが、独自の関数を作成してフィッティングを行うのにecdf
使用するのは簡単です。nls
ECDF関数は次のとおりです。
ecdf2<-function(data) {
sorted.data<-data[order(data)]
return(data.frame('x'=sorted.data, 'y'=index(sorted.data)/length(sorted.data)))
}
これを使用して、フィッティングを行っています。
require("pracma") #needed for erf()
e2<-ecdf2(x)
y<-e2$y
x<-e2$x
fit<-nls(y ~ 0.5 * (1 + erf((x - mu) / (sigma * sqrt(2)))))
を見るとfit
、期待どおり、mu は ~ 0、sigma は ~ 1 になるはずです。