Я пытаюсь приспособить простую модель степенного закона к набору данных, который выглядит следующим образом:
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))