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

R语言中采用Boltzmann Sigmoidal方程的自启动模型函数查询

R语言拟合PRISM Boltzmann sigmoid模型方案

最优内置模型选择

你当前使用的G.4()是四参数Gompertz模型,自带log(X)转换,和你需要的Boltzmann sigmoid公式结构不匹配,DRC包内置的L.4()函数(无对数转换的四参数Logistic模型)是完全适配的选择,参数对应关系如下:

  • PRISM公式:Y=Y2+((Y1−Y2)/(1+exp((V50−X)/slope)))
  • L.4()模型参数映射:
    • c参数 = Y2(曲线下限)
    • d参数 = Y1(曲线上限)
    • e参数 = V50(你需要的Tm熔解温度)
    • b参数 = 1/slope(和公式里的斜率互为倒数,符号对应曲线升降方向)

修正后测试代码

library(drc)

df <- data.frame(
  Temperature = c(51.6,51.8,52,52.2,52.4,52.6,52.8,53,53.2,53.4,53.6,53.8,54,54.2,54.4,54.6,54.8),
  RFU = c(-90.01,-90.02,-87.17,-80.06,-68.57,-56.5,-44.25,-29.08,-12.03,5.45,24.94,47.19,70.06,92.87,116.07,140.85,161.95)
)

# 使用L.4()拟合,无需对数转换
fm <- drm(data = df, RFU ~ Temperature, fct = L.4())
summary(fm)

# 直接提取Tm值
tm_value <- fm$coefficients[["e:(Intercept)"]]

运行后输出的e参数估计值就是和PRISM计算结果完全一致的Tm值,你提供的测试数据拟合后残差标准误差低于1,拟合效果优于G.4()。

可选自定义模型方案

如果需要完全对齐PRISM的公式写法,也可以在DRC中自定义拟合函数:

# 自定义Boltzmann sigmoid模型
boltzman_fct <- function() {
  f <- function(x, parms) {
    y2 <- parms[,1]
    y1 <- parms[,2]
    v50 <- parms[,3]
    slope <- parms[,4]
    y2 + (y1 - y2)/(1 + exp((v50 - x)/slope))
  }
  names <- c("Y2", "Y1", "V50", "Slope")
  return(drcMean(fct = f, names = names, "Boltzmann Sigmoid (PRISM)"))
}

# 用自定义模型拟合
fm_custom <- drm(data = df, RFU ~ Temperature, fct = boltzman_fct(), 
                 start = c(-90, 160, 53, 0.5))
summary(fm_custom)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:03