我试图将一个简单的幂定律模型拟合到如下数据集:
mydf
:
rev weeks
17906.4 1
5303.72 2
2700.58 3
1696.77 4
947.53 5
362.03 6
目标是使电源线通过并使用它来预测rev
未来几周的赞誉。大量的研究使我找到了该nls
功能,我按如下方式实现了该功能。
newMod <- nls(rev ~ a*weeks^b, data=modeldf, start = list(a=1,b=1))
predict(newMod, newdata = data.frame(weeks=c(1,2,3,4,5,6,7,8,9,10)))
虽然这适用于lm
模型,但会出现singular gradient
错误,我理解这与我的初始值a
和有关b
。我尝试了不同的值,甚至可以在Excel中进行绘制,传递一个孤行,获取一个方程式,然后使用该方程式中的值,但仍然遇到错误。我看着一堆像答案的这一个,并试图在第二个答案(看不惯第一),但都没有结果。
我真的可以在这里找到有关如何找到正确的起始值的帮助。或者,我可以使用什么其他功能代替nls。
如果您想mydf
轻松地重新创建:
mydf <- data.frame(rev=c(17906.4, 5303.72, 2700.58 ,1696.77 ,947.53 ,362.03), weeks=c(1,2,3,4,5,6))