即使注释中注明了校正,它也会失去一个单一的渐变,所以为了使它收敛,让我们将B3固定在1,给出fit2
两个参数模型的拟合,然后使用这个拟合的结果作为第二个拟合的输入 -这一个到三参数模型fit3
(图上的红线).虽然这些模型会聚,但结果看起来不太合适(见红线).更好的是添加第四个参数,如fit4
下面的模型(参见图中的绿线) - 注意fit4
使用"plinear"
不需要线性参数的起始值的算法.线性参数被命名.lin1
并且分别.lin2
对应于新参数和模型中的B3
参数fit3
.我们还可以考虑在R中实现的Weibull模型,如下面SSweibull
的fitw
模型(参见图中的蓝线),尽管视觉fit4
(绿色)看起来更好并且具有更好的残差平方和.
# fit model in question - red B1 <- B2 <- B3 <- 1 fo <- sensibilidade ~ B3 * exp(-exp(-B1-B2*espfio)) fit2 <- nls(fo, start = list(B1 = B1, B2 = B2)) # 2 parameter model fit3 <- nls(fo, start = c(coef(fit2), B3 = 1)) # 3 parameter model plot(sensibilidade ~ espfio) lines(fitted(fit3) ~ espfio, col = "red") # show fit3 in red # fit 4 parameter Weibull - show in blue fitw <- nls(sensibilidade ~ SSweibull(espfio, Asym, Drop, lrc, pwr)) lines(fitted(fitw) ~ espfio, col = "blue") # 4 parameter version of fit3 - show in green fit4 <- nls(sensibilidade ~ cbind(1, exp(-exp(-B1-B2*espfio))), alg = "plinear", start = coef(fit2)) lines(fitted(fit4) ~ espfio, col = "green") legend("topright",, c("fit3", "fitw", "fit4"), col = c("red", "blue", "green"), lty = 1) # residual sum of squares of each model - smaller is better sapply(list(fit2 = fit2, fit3 = fit3, fitw = fitw, fit4 = fit4), deviance) fit2 fit3 fitw fit4 1.393555807 0.152539371 0.012960157 0.006555876
即使注释中注明了校正,它也会失去一个单一的渐变,所以为了使它收敛,让我们将B3固定在1,给出fit2
两个参数模型的拟合,然后使用这个拟合的结果作为第二个拟合的输入 -这一个到三参数模型fit3
(图上的红线).虽然这些模型会聚,但结果看起来不太合适(见红线).更好的是添加第四个参数,如fit4
下面的模型(参见图中的绿线) - 注意fit4
使用"plinear"
不需要线性参数的起始值的算法.线性参数被命名.lin1
并且分别.lin2
对应于新参数和模型中的B3
参数fit3
.我们还可以考虑在R中实现的Weibull模型,如下面SSweibull
的fitw
模型(参见图中的蓝线),尽管视觉fit4
(绿色)看起来更好并且具有更好的残差平方和.
# fit model in question - red B1 <- B2 <- B3 <- 1 fo <- sensibilidade ~ B3 * exp(-exp(-B1-B2*espfio)) fit2 <- nls(fo, start = list(B1 = B1, B2 = B2)) # 2 parameter model fit3 <- nls(fo, start = c(coef(fit2), B3 = 1)) # 3 parameter model plot(sensibilidade ~ espfio) lines(fitted(fit3) ~ espfio, col = "red") # show fit3 in red # fit 4 parameter Weibull - show in blue fitw <- nls(sensibilidade ~ SSweibull(espfio, Asym, Drop, lrc, pwr)) lines(fitted(fitw) ~ espfio, col = "blue") # 4 parameter version of fit3 - show in green fit4 <- nls(sensibilidade ~ cbind(1, exp(-exp(-B1-B2*espfio))), alg = "plinear", start = coef(fit2)) lines(fitted(fit4) ~ espfio, col = "green") legend("topright",, c("fit3", "fitw", "fit4"), col = c("red", "blue", "green"), lty = 1) # residual sum of squares of each model - smaller is better sapply(list(fit2 = fit2, fit3 = fit3, fitw = fitw, fit4 = fit4), deviance) fit2 fit3 fitw fit4 1.393555807 0.152539371 0.012960157 0.006555876