初始参数估计的奇异梯度矩阵 - 非线性回归

singular gradient matrix at initial parameter estimates - Non Linear Regression

所以我是使用 R 的数据科学新手,我不确定自己做错了什么。使用数据集:

rocketBurn Oxygen Consumed Hydrogen Used Trajectory Thrust
20 20000 30000 0 500000
40 40000 60000 0 525000
60 60000 90000 0 551250
80 80000 120000 4 578813
100 100000 150000 8 593283
120 120000 180000 12 593283
140 140000 210000 16 593283
160 160000 240000 20 593283
180 180000 270000 24 593283
200 200000 300000 28 593283
220 220000 330000 32 593283
240 240000 360000 36 593283
260 260000 390000 40 593283
280 280000 420000 44 593283
300 300000 450000 46 593283
320 320000 480000 46 593283

我能够使用 R 中的 lm() 公式创建线性回归模型,当我尝试使用 nls 公式时,我收到以下错误消息

nlrModel <- nls(Trajectory ~ Oxygen.Consumed + Thrust,data = df,start = c(a=0,b=0,c=0))
Error in nlsModel(formula, mf, start, wts, scaleOffset = scOff, nDcentral = nDcntr) : 
 singular gradient matrix at initial parameter estimates

经过一番谷歌搜索后,我认为错误是由于启动参数引起的,但是,我不知道如何获得正确的启动参数。非常感谢任何有关如何让这个模型工作的帮助!

问题是nls模型中的公式有误。 lm 和 nls 不使用相同的公式表示法。在 lm 中,对于没有交互作用的模型,自变量以加号分隔列出,而在 nls 中,公式包括系数。例如,这描述了 lm 和 nls 中的相同模型。

lm(Trajectory ~ Oxygen.Consumed + Thrust, df)

st <- list(a = 1, b = 1, c = 1)
nls(Trajectory ~ a + b * Oxygen.Consumed + c * Thrust, df, start = st)

备注

可重现形式的输入是:

df <- 
structure(list(rocketBurn = c(20L, 40L, 60L, 80L, 100L, 120L, 
140L, 160L, 180L, 200L, 220L, 240L, 260L, 280L, 300L, 320L), 
    Oxygen.Consumed = c(20000L, 40000L, 60000L, 80000L, 100000L, 
    120000L, 140000L, 160000L, 180000L, 200000L, 220000L, 240000L, 
    260000L, 280000L, 300000L, 320000L), Hydrogen.Used = c(30000L, 
    60000L, 90000L, 120000L, 150000L, 180000L, 210000L, 240000L, 
    270000L, 300000L, 330000L, 360000L, 390000L, 420000L, 450000L, 
    480000L), Trajectory = c(0L, 0L, 0L, 4L, 8L, 12L, 16L, 20L, 
    24L, 28L, 32L, 36L, 40L, 44L, 46L, 46L), Thrust = c(500000L, 
    525000L, 551250L, 578813L, 593283L, 593283L, 593283L, 593283L, 
    593283L, 593283L, 593283L, 593283L, 593283L, 593283L, 593283L, 
    593283L)), class = "data.frame", row.names = c(NA, -16L))