晚上好
我用rnls函数拟合了一条四参数logistic曲线,方程如下:
y = +/(1+exp(-beta(x-mu))
我想确定这条曲线的最大斜率,为此我想计算函数的导数。你们知道怎么求这个函数的导数并用它来求最大斜率或者最大导数值吗?
提前谢谢你
罗汉
我找到了正则s型方程y = 1/1+e-x及其导数,但没有找到参数。我希望有人能帮我解一下方程的导数,还有一份能帮我求最大值的脚本。
假设您计算的参数为alpha = 1, lambda = 2, beta = 3和mu = 4。然后创建导数函数fder
,用optimize
求其最大值。显然,最大斜率出现在等于1.5处,或者将x =代入导数,我们得到最大值处的导数等于*/4,
fder <- function(x, alpha = 1, lambda = 2, beta = 3, mu = 4) {}
body(fder) <- D(expression(alpha + lambda/(1+exp(-beta*(x-mu)))), "x")
optimize(fder, c(-10, 10), maximum = TRUE)
## $maximum
## [1] 3.99999
##
## $objective
## [1] 1.5
从@G开始。Grothendieck的答案,这是为什么最大导数是lambda*beta/4
的逻辑解释。
- 在
x=0
处,未标度logistic函数的最大导数为1/4。 1/(1+exp(-beta*x))
的最大导数是beta/4
在x=0
(你可以在维基百科上查找 )- 调整中点(例如
1/(1+exp(-beta*(x-mu)))
)将最大导数的位置移动到x=mu
,但不改变其值 - 通过添加
alpha
(alpha + 1/(1+exp(-beta*(x-mu)))
)将曲线上移不会改变最大斜率或其位置 - 用
lambda
(alpha + lambda/(1+exp(-beta*(x-mu)))
)缩放曲线,用lambda
(beta/4 → lambda*beta/4
)缩放最大导数