Estou tentando ajustar um modelo simples de lei de energia a um conjunto de dados da seguinte maneira:
mydf
:
rev weeks
17906.4 1
5303.72 2
2700.58 3
1696.77 4
947.53 5
362.03 6
O objetivo é passar a linha de força e usá-la para prever rev
vlaues para as próximas semanas. Um monte de pesquisas me levou à nls
função, que eu implementei da seguinte maneira.
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)))
Enquanto isso funciona para um lm
modelo, recebo um singular gradient
erro, que eu entendo tem a ver com meus valores iniciais a
e b
. Tentei valores diferentes, chegando a traçar isso no Excel, passar sozinho, obter uma equação e usar os valores da equação, mas ainda assim recebo o erro. Eu olhei para um monte de respostas como essa e tentei a segunda resposta (não conseguia entender a primeira), mas sem resultado.
Eu realmente poderia usar alguma ajuda aqui sobre como encontrar os valores iniciais corretos. Ou, alternativamente, que outra função eu posso usar em vez de nls.
Caso você queira recriar mydf
com facilidade:
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))