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

如何为nlsLM的单个参数设置约束?及约束后拟合变化疑问

nlsLM单参数约束语法及拟合结果变化疑问

初始问题

我使用以下代码为数据拟合S型函数:

nlsLM(mepAMP ~ plateau / (1 + exp(slope*(S50 - pMSO))), 
      data = df,
      start = list(plateau = 7, S50 = 100, slope = 0.15)
)

我了解nlsLM(与R基础包中的nls类似)支持为参数设置上下限,希望将plateau参数约束为≤8 mV,以得到符合生理合理性的近似值。请问能否仅约束单个参数?我见过类似upper = c(1000, 1)的写法,但不确定是否会约束所有参数,也不清楚如何指定仅约束plateau。

尝试使用upper = c(8)时,出现如下错误:

Error in nls.lm(par = start, fn = FCT, jac = jac, control = control, lower = lower,  : 
  length(upper) must be equal to length(par)

找不到正确语法,恳请指导。

补充疑问

感谢Allan的帮助,我使用upper = c(plateau = 8, S50 = Inf, slope = Inf)处理多受试者数据时,发现不仅原本plateau超过8的拟合结果发生了变化,就连plateau远低于8的拟合结果也变了。这是正常现象吗?我原本以为约束不会影响符合条件的拟合。

拟合前:
拟合前结果

拟合后:
拟合后结果


内容的提问来源于stack exchange,提问作者A.R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:35:05