You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从nls拟合的Logistic曲线反推x值结果异常的问题排查

问题诊断与修复

你的核心问题是反推公式的代数变形错误,具体是运算符优先级导致的分子分母分组错误。

原模型与正确代数推导

你使用的3参数Logistic模型为:

y = lower + (upper - lower)/(1 + 10^(log_Conc - midpoint))

正确推导反求log_Conc(即x)的步骤:

  1. 移项分离分式:
    y - lower = (upper - lower)/(1 + 10^(x - midpoint))
  2. 两边取倒数并交叉相乘:
    1 + 10^(x - midpoint) = (upper - lower)/(y - lower)
  3. 移项后取对数:
    10^(x - midpoint) = [(upper - lower)/(y - lower)] - 1
    x - midpoint = log10( [(upper - lower)/(y - lower)] - 1 )
  4. 最终得到x的表达式:
    x = midpoint + log10( [(upper - lower)/(y - lower)] - 1 )

代码错误点

你写的公式中,(upper-lower/y_values-lower) 因运算符优先级(除法>减法),实际计算的是 upper - (lower/y_values) - lower,完全偏离了正确的(upper - lower)/(y_values - lower)。

修正后的代码

params = coef(standard_curve_logistic)

logistic_solve_for_x <- function(upper, lower, midpoint, y_values) {
  # 修复分子分母的括号分组
  term <- (upper - lower) / (y_values - lower) - 1
  x_value <- midpoint + log10(term)
  return(x_value)
}

y_vector <- c(0.5,1,1.5,2)
logistic_solve_for_x(upper = params[2], midpoint = params[3], lower = params[1], y_values = y_vector)

验证说明

修正后的函数返回结果会符合预期:比如y=2时,计算出的x值会接近0,和你观察到的曲线趋势一致。另外注意,当y_values接近upper时,term会趋近于0,log10会返回负无穷,这符合模型趋势(高y值对应极低的log浓度)。

内容的提问来源于stack exchange,提问作者engpol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:15