在 sigmoid 曲线中的不同点处找到斜率
机器算法验证
r
曲线拟合
不可缺少的
结石
S形曲线
2022-04-06 02:20:57
1个回答
你的问题非常广泛。有很多方法可以做到这一点,即使没有假设特定的功能。对于以下内容,我假设您有充分的理由使用 Gompertz 模型。
首先让我们拟合模型:
y <- c(0.5,3.0,22.2,46.0,77.3,97.0,98.9,100.0)
x <- seq_along(y)
plot(x, y)
fit <- nls(y ~ SSgompertz(x, Asym, b2, b3), data = data.frame(x, y))
curve(predict(fit, newdata = data.frame(x)), add = TRUE)
现在,为了获得所需的斜率,您需要计算拟合函数的一阶导数。那是简单的高中数学。事实上,它非常简单,即使 R 也能做到,尽管它不是计算机代数系统。
#assign coefficients into global environment
list2env(as.list(coef(fit)), .GlobalEnv)
#create function that returns the gradient
dGomp <- deriv((y ~ Asym*exp(-b2*b3^x)), "x", func = TRUE)
#the model slopes:
c(attr(dGomp(x), "gradient"))
##[1] 0.1010109 6.9594864 27.3791349 31.0194397 20.4539646 10.6588397 5.0141801 2.2561393
其它你可能感兴趣的问题