Próbuję dopasować prosty model prawa mocy do zestawu danych, który jest następujący:
mydf
:
rev weeks
17906.4 1
5303.72 2
2700.58 3
1696.77 4
947.53 5
362.03 6
Celem jest przepuszczenie linii energetycznej i wykorzystanie jej do przewidywania rev
wartości na przyszłe tygodnie. Kilka badań doprowadziło mnie do tej nls
funkcji, którą wdrożyłem w następujący sposób.
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)))
Chociaż działa to w przypadku lm
modelu, pojawia się singular gradient
błąd, który, jak rozumiem, ma związek z moimi wartościami początkowymi a
i b
. Próbowałem różnych wartości, nawet posunąłem się do wykreślenia tego w Excelu, zaliczenia samotnego, uzyskania równania, a następnie użycia wartości z równania, ale wciąż pojawia się błąd. Spojrzałem na pęczek odpowiedzi jak ten i próbował drugą odpowiedź (nie mógł zrozumieć pierwszy), ale bez rezultatu.
Naprawdę przydałaby mi się pomoc w znalezieniu właściwych wartości początkowych. Lub alternatywnie, jakiej innej funkcji mogę użyć zamiast nls.
Jeśli chcesz mydf
z łatwością odtworzyć :
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))