我想将函数拟合到ecdf
的输出:
x<-rnorm(100)
z<-ecdf(x)
请注意,我不想使用常规发行版,而是通用函数。我最初的方法是使用lm
,但我无法检索z
的单个值来执行适合。
答案 0 :(得分:0)
我无法弄清楚如何使用内置的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,正如预期的那样。