【发布时间】:2020-05-02 19:44:20
【问题描述】:
我有现有代码用于将 sigmoid 曲线拟合到 R 中的数据。如何使用 selfstart(或其他方法)自动查找回归的起始值?
sigmoid = function(params, x) {
params[1] / (1 + exp(-params[2] * (x - params[3])))
}
dataset = data.frame("x" = 1:53, "y" =c(0,0,0,0,0,0,0,0,0,0,0,0,0,0.1,0.18,0.18,0.18,0.33,0.33,0.33,0.33,0.41,0.41,0.41,0.41,0.41,0.41,0.5,0.5,0.5,0.5,0.68,0.58,0.58,0.68,0.83,0.83,0.83,0.74,0.74,0.74,0.83,0.83,0.9,0.9,0.9,1,1,1,1,1,1,1) )
x = dataset$x
y = dataset$y
# fitting code
fitmodel <- nls(y~a/(1 + exp(-b * (x-c))), start=list(a=1,b=.5,c=25))
# visualization code
# get the coefficients using the coef function
params=coef(fitmodel)
y2 <- sigmoid(params,x)
plot(y2,type="l")
points(y)
【问题讨论】:
-
一个简单的双参数反指数方程,“y = a * exp(b/x)”似乎可以很好地拟合数据,参数 a = 2.2757248107168646E+00 和 b = -4.1867657807394536E+01 产生 RMSE = 0.0504 和 R 平方 = 0.980。
标签: r regression sigmoid