我非常感谢R中遇到的一个我无法理解的问题的帮助 . 在创建该数据的直方图之后,我尝试使用非线性最小二乘算法拟合数据 . 我希望从NLS计算中排除直方图的第一个bin .

我有指数衰减的数据 . 我计算了这个数据的直方图,并使用NLS拟合曲线没问题:

density=(0.4805447471,0.3025291829,0.1128404669,0.0447470817,0.0243190661,0.0136186770,0.0058365759,0.0077821012,0.0048638132,0.0009727626,0.0009727626,0.0000000000,0.0000000000,0.0009727626)
breaks=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)

model=nls(density~a*exp(-b*breaks),start=list(a=y0,b=k))

但是,由于数据收集方法的性质,直方图的第一个bin可能是欠采样的 . 因此,我想计算我的非线性最小二乘模型忽略第一个bin . 为此,我在没有第一个bin的情况下创建新的x / y变量:

new_density=density[-1]
new_breaks=breaks[-1]

现在运行NLS时,我收到此错误:

1:在lhs中 - rhs:较长的物体长度不是较短物体长度的倍数2:在.swts *(lhs - rhs)中:较长的物体长度不是较短物体长度的倍数3:在.swts * attr( rhs,“gradient”):较长的对象长度不是较短对象长度的倍数执行暂停

我知道new_density和new_break确实有不同的长度(分别为13和14),但这对于原始密度和断点(分别为14和15)是相同的,不会导致此错误 .

据我所知,密度,break,new_density和new_breaks都只是数字向量 . 使密度/中断长度相同会引入此错误:

numericDeriv中的错误(表单[[3L]],名称(ind),env):评估模型时产生的缺失值或无穷大调用:nls ... - > assign - > assign - > getRHS - > numericDeriv执行暂停

我可以删除,说第二个垃圾箱,并执行适合没有问题 .

任何人都可以阐明为什么NLS需要我的数据的第一个bin用于计算,以及我如何执行无法忽略第一个bin的计算?

亚历克斯,非常感谢任何帮助