当前位置:  开发笔记 > 人工智能 > 正文

没有线性R(我出错的地方?)

如何解决《没有线性R(我出错的地方?)》经验,为你挑选了1个好方法。

即使注释中注明了校正,它也会失去一个单一的渐变,所以为了使它收敛,让我们将B3固定在1,给出fit2两个参数模型的拟合,然后使用这个拟合的结果作为第二个拟合的输入 -这一个到三参数模型fit3(图上的红线).虽然这些模型会聚,但结果看起来不太合适(见红线).更好的是添加第四个参数,如fit4下面的模型(参见图中的绿线) - 注意fit4使用"plinear"不需要线性参数的起始值的算法.线性参数被命名.lin1并且分别.lin2对应于新参数和模型中的B3参数fit3.我们还可以考虑在R中实现的Weibull模型,如下面SSweibullfitw模型(参见图中的蓝线),尽管视觉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 

截图



1> G. Grothendi..:

即使注释中注明了校正,它也会失去一个单一的渐变,所以为了使它收敛,让我们将B3固定在1,给出fit2两个参数模型的拟合,然后使用这个拟合的结果作为第二个拟合的输入 -这一个到三参数模型fit3(图上的红线).虽然这些模型会聚,但结果看起来不太合适(见红线).更好的是添加第四个参数,如fit4下面的模型(参见图中的绿线) - 注意fit4使用"plinear"不需要线性参数的起始值的算法.线性参数被命名.lin1并且分别.lin2对应于新参数和模型中的B3参数fit3.我们还可以考虑在R中实现的Weibull模型,如下面SSweibullfitw模型(参见图中的蓝线),尽管视觉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 

截图

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有