Existe el enfoque obvio de proceder sobre la base de tomar el logaritmo de ambos lados de su fórmula de regresión:
lny=ln(axb)lny=ln(axb)
lny=lna+blnxlny=lna+blnx
que puede verse como una expresión de la forma
v=k+buv=k+bu
donde v=lnyv=lny , u=lnxu=lnx y k=lnak=lna .
Ahora una regresión lineal en las variables vv y uu se aplica.
En particular, las fórmulas 16, 20, 27 y 28 de esta página ahora se aplica.
Una vez que tenga la pendiente bb y la intercepción kk de la transformación lineal, aa es sólo la exponencial del intercepto ( expkexpk ), y bb es la pendiente de la línea transformada.
Aquí observo la posible advertencia de que los parámetros de ajuste están sesgados hacia los datos con ordenadas de pequeña magnitud. El riguroso La forma de hacerlo sería tratar los parámetros de la regresión lineal como provisionales y luego aplicar un algoritmo de mínimos cuadrados no lineales como el de Levenberg-Marquardt a los datos, utilizando los parámetros de la regresión lineal como punto de partida. Sin embargo, esto puede ser necesario o no; realmente depende de los datos que tenga.
Voy a pulir los comentarios que hice antes: de nuevo, el problema de usar el logaritmo para linealizar tu función no lineal es que tiende a enfatizar demasiado los errores en los valores pequeños de y. Recuerda que la suposición de los mínimos cuadrados lineales es que las abscisas son exactas, pero las ordenadas están contaminadas por el error.
En otras palabras, el yiyi son en realidad de la forma ˆyi±σi^yi±σi donde el ˆyi^yi son los "valores verdaderos" (presumiblemente desconocidos), y los σiσi son incertidumbres inherentes. Si se toman los logaritmos de los yiyi las incertidumbres también se transforman, y tenemos que tenerlo en cuenta.
La fórmula clave es que si el yiyi se transforman mediante una función f(y)f(y) El σiσi se transforman según f′(yi)σi .
Para el caso que nos ocupa, la función objetivo que tenemos que minimizar ahora es de la forma
f(a,b)=∑iy2i(lnyi−lna−blnxi)2
y tenemos que modificar las fórmulas de la regresión lineal en consecuencia:
m=∑iy2i
ˉx=∑iy2ilnxim
t=∑iy2i(lnxi−ˉx)2
por lo que
b=∑iy2ilnyi(lnxi−ˉx)t
y
a=exp(∑iy2ilnyim−bˉx)
Estos deberían ser mejores valores provisionales para su posterior pulido.
Resulta que para un ajuste no lineal separable (lineal en uno de los parámetros), el problema NLLS se simplifica enormemente.
Recuerde que el actual La cantidad que tenemos que minimizar es
F(a,b)=∑i(yi−axbi)2
Si tomamos el gradiente ∇F(a,b) :
∇F(a,b)=(2a∑ix2bi−2∑ixbiyi2a∑iln(xi)x2bi−2∑iln(xi)xbiyi)T
igualar ambos componentes a 0, y luego eliminar el parámetro lineal a obtenemos la ecuación no lineal univariante en b :
(∑ixbiyi)(∑iln(xi)x2bi)−(∑ix2bi)(∑iln(xi)xbiyi)=0
que se puede atacar con técnicas estándar, por ejemplo, el método de la secante o el método de Newton. Pero, ¿cómo empezamos la iteración? Pues con el método provisional b que obtuvimos antes con la regresión lineal (ponderada).
Habiendo conseguido b Ahora es muy sencillo conseguir a :
a=(∑ixbiyi)/(∑ix2bi)
y ya tienes tus parámetros.