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

使用drm拟合Gompertz方程遇parse错误,求解决方案

解决Gompertz曲线拟合错误及模型评估方案

错误原因

你碰到的Error in parse(text = bodyStr2)错误,主要是drc包部分版本中预设的G.4模型存在字符串解析bug,导致代码执行时语法解析失败。

修正后的拟合代码

方案一:自定义Gompertz模型函数

绕过预设的G.4,直接定义模型函数避免解析问题:

library(drc)

# 定义4参数Gompertz模型:Asym(渐近值), b(速率), c(下限), d(拐点)
gompertz_fct <- function(fixed = c(NA, NA, NA, NA), names = c("Asym", "b", "c", "d")) {
  function(x, parm) {
    parm[3] + (parm[1] - parm[3]) * exp(-exp(parm[2] * (x - parm[4])))
  }
}

# 拟合模型,初始值根据数据特征设置
ajuste <- drm(Y ~ X, data = Gomp_D1, 
              fct = gompertz_fct(),
              start = c(Asym = max(Gomp_D1$Y), b = 0.1, c = min(Gomp_D1$Y), d = median(Gomp_D1$X)))

方案二:升级drc包至最新版本

如果想用预设的G.4模型,先更新包修复版本bug:

install.packages("drc")
library(drc)

# 重新拟合,注意G.4的参数顺序与初始值对应
ajuste <- drm(Y ~ X, data = Gomp_D1, 
              fct = G.4(),
              start = c(Asym = max(Gomp_D1$Y), b = 0.1, c = min(Gomp_D1$Y), d = median(Gomp_D1$X)))

绘制Gompertz拟合曲线

拟合完成后,可视化观测数据与拟合曲线:

plot(ajuste, type = "all", 
     main = "树木生长Gompertz拟合曲线",
     xlab = "生长指标(X)",
     ylab = "生长量(Y)",
     col = "darkblue", pch = 16)

模型预测精度评估

通过以下指标评估模型拟合效果:

  • R²:反映模型对数据变异的解释能力
  • RMSE:衡量预测值与观测值的平均偏差程度
  • MAE:衡量预测误差的绝对值均值
# 生成预测值
pred_vals <- predict(ajuste, newdata = Gomp_D1)

# 计算评估指标
r_sq <- cor(Gomp_D1$Y, pred_vals)^2
rmse <- sqrt(mean((Gomp_D1$Y - pred_vals)^2))
mae <- mean(abs(Gomp_D1$Y - pred_vals))

# 输出结果
cat("模型评估结果:\n")
cat(sprintf("R² = %.4f\n", r_sq))
cat(sprintf("RMSE = %.4f\n", rmse))
cat(sprintf("MAE = %.4f\n", mae))

关键注意点

  • 初始值start的设置直接影响非线性拟合的成功率:
    • Asym设为Y的最大值,对应生长的渐近上限
    • c设为Y的最小值,对应生长的初始下限
    • d设为X的中位数,对应生长拐点的大致位置
    • b设为0.1左右的正数,可根据数据趋势微调
  • 若数据存在异常值,建议先通过boxplot(Gomp_D1$Y)排查并处理,避免干扰拟合结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:35:28