【问题标题】:setting nls parameters for a curve为曲线设置 nls 参数
【发布时间】:2013-01-09 19:07:53
【问题描述】:

我是 R 的新手,不是数学家,而是遗传学家。我有很多组多对数据点。当它们被绘制出来时,它们会产生一条平坦的 S 曲线,其中大多数数据点最终都接近零标记。少数数据点飞得很远,形成了几乎两条 J 曲线,一条向下,一条向上。我需要找到数据急剧向上或向下变化的拐点。这可能是我的数学问题,但在我看来,如果我可以平滑曲线并将曲线拟合到直线上并得到一个方程,那么我可以对曲线求二阶导数并确定二阶导数变化的拐点标志。我在 excel 中进行了尝试,并使用曲线来获得近似拟合以获得起始公式,但数据中有一些“摆动”,因此即使我想手动完成所有操作,也无法确定任何一个拐点(其中我不)。我必须在其中找到这两个拐点的数百个数据集中的每一个都将产生大致相同的曲线,但拐点会略有不同,而精确地确定这些拐点对于问题来说绝对是至关重要的。因此,如果我可以在应该这样做的方程式中正确设置一次。为简单起见,我想将它们分成正曲线和负曲线,并分别进行。 (也许 s 曲线有一些更简单的公式,这不是一个好主意?)

我已尝试阅读手册,但由于我的数学能力较弱,这可能有点难以理解。我也找不到任何可以学习的类似例子。

这是我的数据集的头部: xy [1,] 1 0.00000000 [2,] 2 0.00062360 [3,] 3 0.00079720 [4,] 4 0.00085100 [5,] 5 0.00129020

(X 只是对许多数据点进行编号,并且 X 的数量会因单个数据集而有所不同。)

这是我已经解决的曲线拟合部分:

pos_curve1

我只是在艰难地做数学吗?我在 nls 上做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: nls


    【解决方案1】:

    找到了。曲线是指数而不是 J,以下有效。

    fit <- nls(pos ~ a*tmin^b, 
                 data = d, 
                 start = list(a = .1, b = .1), 
                 trace = TRUE)
    

    感谢 2009 年 10 月 26 日在 R Help 上的 Jorge I Velez

    我还使用了 John Fox 和 Sanford Weisberg 上一次修订版 13:2010 年 12 月的“An Annex to An R Companion to Applied Regression, second edition”。

    我的最终工作设置是:

    拟合

    我通过使用开放式办公室电子表格并测试各种曲线拟合选项来确定公式应该是什么,直到我能够证明指数是最佳拟合。然后我从中得到了方程的结构。我使用 Fox & Sanford 的文章来了解设置参数的方式。

    也许我并不孤单,但我真的发现很难弄清楚参数,而且很少有参考资料或问题对我有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 2018-06-04
      • 2016-02-02
      • 2021-12-15
      • 2017-08-04
      • 2018-02-10
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多