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

使用fitModel拟合曲线求解参数值时遇维度不匹配报错求助

问题分析与解决建议

报错核心原因

你遇到的qr(.swts * gr)维度不匹配错误,本质是参数名与数据列名冲突,加上错误地将自变量当作待拟合参数传入:

  • 数据框d里的自变量列名为t,但你在start列表里把待拟合参数也命名为t,导致fitModel无法区分两者,梯度计算时维度混乱;
  • 你的模型公式中所有t都是观测数据,并非需要拟合的参数,start里添加t=47属于多余操作,进一步加剧了维度不匹配问题。

具体修正步骤

  1. 清理start列表:移除和数据列名冲突的t参数,只保留真正需要拟合的I;
  2. (可选)若需新增参数:如果你的模型实际需要拟合另一个参数(比如特征温度),给它起一个和t不重复的名字(比如t0),并同步修改模型公式中的对应引用。

修正后的代码示例

情况1:仅拟合参数I

require(mosaic)
d <- data.frame(t = c(41.5, 44, 42.77, 47), y = c(230, 76.4/60, 3.4, 1))
fitModel(y ~ (-(47 - t)*I/(35 - t)*(1 + exp((42.77 - t)*I))),
         data = d,
         start = list(I = 3.1))

情况2:需要额外拟合一个参数(比如t0)

require(mosaic)
d <- data.frame(t = c(41.5, 44, 42.77, 47), y = c(230, 76.4/60, 3.4, 1))
# 把公式中固定的42.77替换为待拟合参数t0
fitModel(y ~ (-(47 - t)*I/(35 - t)*(1 + exp((t0 - t)*I))),
         data = d,
         start = list(I = 3.1, t0 = 42.77))

额外提示

  • 拟合非线性模型时,一定要确保待拟合参数名和数据列名完全不重复;
  • 检查模型公式中每一项的含义,避免把自变量误当作待拟合参数传入start。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:12