我正在尝试将一个简单的幂律模型拟合到如下数据集:
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))