我是R的相对新人,不是数学家,而是遗传学家。我有很多组多对数据点。当它们被绘制时,它们产生扁平的S曲线,其中大多数数据点最终接近零标记。少数数据点飞得很远,创造了几乎两条J曲线,一条向下,一条向上。我需要找到数据急剧向上或向下转向的拐点。这可能是我的数学问题,但在我看来,如果我可以平滑并拟合曲线到线并得到一个等式,我可以采用曲线的二阶导数并确定二阶导数变化的拐点标志。我在excel中尝试了它并使用曲线得到近似拟合得到起始公式,但数据中有一点“摆动”,所以即使我想手动完成所有这一点也无法确定任何一个拐点(其中我不)。我必须找到这两个拐点的数百个数据集中的每一个都将产生大约相同的曲线但是将具有略微不同的拐点并且精确地确定那些拐点对于该问题是绝对关键的。因此,如果我可以在应该执行的等式中正确设置一次。为简单起见,我想将它们分解为正曲线和负曲线,并分别进行每个曲线。 (也许有一些更简单的s曲线公式会让这个想法变得糟糕?)
我试过阅读手册,因为我的数学技能很差,所以很难理解。我也找不到任何可以研究的类似例子。
这是我数据集的负责人: x y [1,] 1 0.00000000 [2,] 2 0.00062360 [3,] 3 0.00079720 [4,] 4 0.00085100 [5,] 5 0.00129020
(X只是将数字1编号为1,而X的数量会因个别设置而有所不同。)
这是我已经解决曲线拟合部分:
pos_curve1< - nls(curve_fitting~(scal * x ^ scal),data = cbind.data.frame(curve_fitting), + start = list(x = 0,scal = -0.01)) numericDeriv(form [[3L]],names(ind),env)出错: 评估模型时产生的缺失值或无穷大 另外:警告信息: 1:在min(x)中:min没有非缺失参数;返回Inf 2:在max(x)中:max没有非缺失参数;返回-Inf
我只是在努力学习数学吗?我对nls做错了什么?任何帮助都会非常感激。
答案 0 :(得分:0)
找到它。曲线是指数而不是J,以下工作。
fit <- nls(pos ~ a*tmin^b,
data = d,
start = list(a = .1, b = .1),
trace = TRUE)
感谢Jorge I Velez在2009年10月26日的R帮助
此外,我还使用了John Fox&amp; Sons撰写的“应用回归的R伴侣的附录,第二版”。 Sanford Weisberg最新修订版13:2010年12月。
我的最终工作设置是:
fit&lt; - nls(y~a * log(10)^(x * b),pos_curve2,list(a = .01,b = .01),trace = TRUE)
我通过使用开放式办公室电子表格并测试各种曲线拟合选项来确定公式应该是什么,直到我能够显示指数是最合适的。然后我从那里得到了等式的结构。我用过Fox&amp;桑福德文章了解设置参数的方法。
也许我并不孤单,但我真的发现很难找出参数,而且很少有关于它的参考或问题帮助了我。