如何在r中为nls函数指定数据范围?

问题描述 投票:0回答:1

很抱歉,这可能是一个琐碎的问题,但是很遗憾,我还没有找到解决方案。这是我的问题...

我创建了一个函数bm6,该函数具有3个未知参数(a,l,p),我想使用它们来近似在数据帧zz中找到的测量数据。为了拟合,我在r中使用了nls模型。

nls(zz$tuReMa~bm6(zz$Time, t0=30, tau=10, a, l, p), data=zz, start=list(a=0.01, l=0.01, p=0.1))

模型收敛于整个数据范围,即从第1行到第100行,并产生搜索的参数。数据和拟合图:https://i.stack.imgur.com/iOn5q.png

现在,我想指定我的数据范围,以便nls模型仅获取第7行和第37行之间的数据。如何做到这一点?我已经尝试过一些方法,但没有成功。

nls(zz$tuReMa[7:37]~bm6(zz$Time[7:37], t0=30, tau=10, a, l, p), data=zz, start=list(a=0.01, l=0.01, p=0.1))-后者在lm模型中可以正常工作

其他数据参数data=list(zz$Time[7:16],zz$tuReMa[7:16])

带有子集参数subset = c(7:16)

[一个人也可以使用7:37的值创建一个新的数据框,然后将nls模型应用于新的数据框,但我希望它也能绕开这一步。

我将非常感谢您提供解决方案。

r nls
1个回答
0
投票

nls本身具有subset自变量,例如使用内置的CO2 data.frame,它仅使用前10行:

nls(uptake ~ a + b * conc, CO2, start = list(a = 0, b = 1), subset = 1:10)
© www.soinside.com 2019 - 2024. All rights reserved.