【问题标题】:How can fit curve on this log data?如何在此日志数据上拟合曲线?
【发布时间】:2016-12-05 08:16:15
【问题描述】:

我对此数据的拟合曲线有疑问:

在 x 轴上,我们有关于风强度 (m/s) 的数据,在 y 轴上,我们有日志数据(捕鱼量)。我只在没有对数的数据上拟合了一条曲线(nls 模型,高斯曲线),但是当我尝试对数数据时,R 告诉我:

Error in nls(mean.w ~ k * exp(-1/2 * (x.wind - mu)^2/sigma^2),  : 
  singolar gradient

模型为:mean.w ~ k * exp(-1/2 * (x.wind - mu)^2/sigma^2),其中k,mu and sigma是要估计的参数,

mean.w # is y axes (log fish catch) 
x.wind # is x axes wind intensity 

非对数数据的拟合曲线为:

# 红色的平均点

我对日志数据的方面结果是类似的拟合曲线,具有不同的参数值,问题是,我必须使用哪种模型?

数据是:

1.1        1.4        1.6        1.7        1.8        1.9          2        2.1        2.2        2.3        2.4        2.5 
-3.0951726        NaN -2.5337439 -3.6184583 -3.2161971 -2.4405031 -1.4349350 -1.5676554 -1.0594076 -0.3290359 -1.2241878 -0.6336298 
       2.6        2.7        2.8        2.9          3        3.1        3.2        3.3        3.4        3.5        3.6        3.7 
-1.3863366 -1.4221593 -1.4961145 -1.2632693 -2.5509134 -4.7270333 -2.4795247 -2.0024069 -4.5975918 -2.9954250 -3.2390678 -2.6339971 
       3.8        3.9          4        4.1        4.2        4.3        4.4        4.5        4.6          5 
-3.3419309 -3.5258236 -4.4962217  0.7027033 -3.6392906 -4.0426306 -1.0798462        NaN -3.0574602 -3.0498198 

x 值从 1.1 到 5,低于日志数据。

【问题讨论】:

  • log(y) = log(0.21) -0.5*(wind-2.45)^2/0.45^2
  • 是的,但是你想象你现在没有参数(从第一个拟合曲线),怎么能在这个日志数据上估计呢? poly、lm、glm 或 nls?也许是 stackexchange 的问题,如果是,我很抱歉。
  • 首先您需要解释为什么要在对数尺度上进行拟合,因为这对错误模型有影响。

标签: r model curve-fitting nls


【解决方案1】:

问题在于模型本身。模型的RHS可以写成:

k * exp(-1/2 * x.wind / sigma^2) * exp(1/2 * mu /sigma^2)

所以k 和最右边的因素扮演同样的角色。参数不是唯一确定的。

要解决此问题,请忽略 k 或模型中的最后一个因素。

【讨论】:

    猜你喜欢
    • 2019-10-19
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多