其他答案都是好方法。 但是,R中还有一些未提及的选项,包括loess和approx,它们可能会提供更好的拟合或更快的性能。
使用备用数据集可以更轻松地证明其优势:
sigmoid
{
y
return(y)
}
dat
dat$y
这是用生成它的sigmoid曲线覆盖的数据:
在查看总体中的二元行为时,这种数据很常见。 例如,这可能是客户是否购买了某些东西(y轴上的二进制1/0)与他们在网站上花费的时间(x轴)的关系图。
大量的点用于更好地展示这些功能的性能差异。
loess,approx和Lowess都在这样的数据集上使用我尝试的任何参数产生乱码,可能是因为它们倾向于映射到每个点,这对于噪声数据不起作用。
loess,approx和Lowess函数都可以产生可用的结果,尽管只是approx。这是每个使用轻微优化参数的代码:
loessFit
loessFit
loessFit
approxFit
lowessFit
结果如下:
plot(dat,col='gray')
curve(sigmoid,0,200,add=TRUE,col='blue',)