1

我想为以下输出拟合一个函数ecdf

x<-rnorm(100)
z<-ecdf(x)

请注意,我不想适合常规分布,而是适合通用函数。我最初的方法是使用lm,但我无法检索z用于执行拟合的单个值。

4

1 回答 1

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,正如预期的那样。

于 2015-02-12T16:28:18.460 回答