espfio<- c( 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20)
sensibilidade <-c( 1.51, 1.49, 1.47, 1.43, 1.35, 1.19, 0.96, 0.85, 0.65, 0.64, 0.58, 0.56, 0.52, 0.52, 0.49, 0.50)
plot(espfio,sensibilidade)
B1 = 1
B2 = 1
B3 = 1
fit1 <- nls(sensibilidade ~ B1*(exp(-exp(-B1-B2*espfio))), start=list(B1=B1,B2=B2,B3=B3))
summary(fit1)
nlsModel中的错误(公式,mf,start,wts):初始参数估计时的奇异梯度矩阵
答案 0 :(得分:5)
即使注释中记录了修正,它也会失去一个单一的渐变,所以为了使它收敛,让我们将B3固定为1,使eval()
适合两个参数模型,然后使用这个拟合的结果作为第二个拟合的输入 - 这个到三参数模型fit2
(图上的红线)。虽然这些模型会聚,但结果看起来不太合适(见红线)。更好的是添加第四个参数,如下面的fit3
模型(参见图中的绿线) - 请注意fit4
使用fit4
算法,该算法不需要启动值线性参数。线性参数名为"plinear"
和.lin1
,分别对应新参数和.lin2
模型中的B3
参数。我们还可以考虑在R fit3
中实现的Weibull模型,如下面的SSweibull
模型(参见图中的蓝线),尽管视觉fitw
(绿色)看起来更好并且具有更好的残差平方和。
fit4