【问题标题】:Fitting Weibull function and parameter estimates拟合 Weibull 函数和参数估计
【发布时间】:2021-02-25 08:38:53
【问题描述】:

我正在尝试将 R 中的函数拟合到以下数据:

y<-c(80.32000,  55.78819,  89.23141,  30.75780, 418.26000, 254.30000,  200,316.42667, 406.83435, 364.00304, 218.27867, 153.88019, 235.49971, 148.77052,
273.20171, 123.54065, 157.75650, 120.88961, 134.64092, 177.44000, 123.62948,87.03000,  63.22455, 132.62000, 120.95000, 129.60000, 116.32000,  60.49000,  66.59000)

x<-c(0,  0,  0,  0,  1,  1,  1,  3,  3,  3,  3,  3,  3,  7,  7,  7,  7,  7,  7, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16)

我已经尝试了几次拟合,但都没有真正奏效……我想 Weibull 函数最适合。我已经搜索了互联网以找到解决此问题的方法,并尝试按照此处的建议调整代码:https://groups.google.com/g/r-help-archive/c/rym6b1K54-4?pli=1

nls(y~127*dweibull(x,shape,scale), start=c(shape=3,scale=100))

但我收到以下错误:

numericDeriv(form[[3L]], names(ind), env) 中的错误:评估模型时产生的缺失值或无穷大。 在 dweibull(x, shape, scale) 中:产生了 NaN。

【问题讨论】:

  • NaN 的出现可能是因为参数值超出范围:例如,优化器可能会尝试使用负值来表示形状或比例。对它们设置界限可能会有所帮助,或者编写一个更复杂的目标函数来处理超出范围的值(例如,将它们推回边界,或将它们反映在边界中,等等)
  • 在我的例子中,拟合导致形状接近 1,这样一些 x 值为零时,您可能会产生 0^0。

标签: r function curve-fitting weibull


【解决方案1】:

数据高度分散。此外,它们在 $0

例如我尝试了下面绘制的函数。但由于分数如此分散,这个选择是有争议的。

【讨论】:

  • 非常感谢您的回答和对另一个功能的思考!我想,在从左侧到 y=-30 到 0 附近并在 0 处增加(如您给定的函数),不可能更容易地达到 x=0 作为高原状线,对吧?无论如何,我认为这种方法对我的目的来说已经足够了!
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 2018-05-26
  • 2019-03-14
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
相关资源
最近更新 更多