很抱歉,这可能是一个琐碎的问题,但是很遗憾,我还没有找到解决方案。这是我的问题...
我创建了一个函数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模型应用于新的数据框,但我希望它也能绕开这一步。
我将非常感谢您提供解决方案。
nls
本身具有subset
自变量,例如使用内置的CO2
data.frame,它仅使用前10行:
nls(uptake ~ a + b * conc, CO2, start = list(a = 0, b = 1), subset = 1:10)