Estoy tratando de ajustar algunos datos de un código de simulación que he estado ejecutando para descubrir una dependencia de la ley de potencia. Cuando trazado un ajuste lineal, los datos no encajan muy bien.tratando de obtener valores razonables de scipy powerlaw fit
Aquí está el script en Python que estoy usando para ajustar los datos:
#!/usr/bin/env python
from scipy import optimize
import numpy
xdata=[ 0.00010851, 0.00021701, 0.00043403, 0.00086806, 0.00173611, 0.00347222]
ydata=[ 29.56241016, 29.82245508, 25.33930469, 19.97075977, 12.61276074, 7.12695312]
fitfunc = lambda p, x: p[0] + p[1] * x ** (p[2])
errfunc = lambda p, x, y: (y - fitfunc(p, x))
out,success = optimize.leastsq(errfunc, [1,-1,-0.5],args=(xdata, ydata),maxfev=3000)
print "%g + %g*x^%g"%(out[0],out[1],out[2])
la salida que recibo es: -71205.3 + 71174.5 * x^-9.79038e-05
Mientras que en el trazar el ajuste parece tan bueno como cabría esperar de un ajuste leastsquares, la forma de la salida me molesta. Esperaba que la constante estuviera cerca de donde esperarías que fuera el cero (alrededor de 30). Y esperaba encontrar una dependencia de poder de una fracción mayor que 10^-5.
He intentado redimensionar mis datos y jugar con los parámetros para optimizar.leastsq sin suerte. ¿Lo que intento lograr es posible o mis datos simplemente no lo permiten? El cálculo es costoso, por lo que obtener más puntos de datos no es trivial.
Gracias!
En los documentos, parece que esta función espera que el argumento 'params' sea el segundo, y el argumento' xdata' sea el primero. Dudo que esto cambie las cosas, pero ¿puedes intentarlo y ver qué pasa? – ely
N/M Acabo de hacer este cambio y obtener los mismos resultados que usted. No lo ayuda, pero muestra que estos documentos deben ser mucho mejores. – ely
La única otra cosa que puedo pensar es: ¿puede volver a obtener los errores estándar de estas estimaciones? En O.L.S. regresión, hay una buena fórmula para los errores estándar de los coeficientes. Con un conjunto de datos tan pequeño, puedo creer que son extremadamente grandes. Es posible que solo esté viendo pequeños efectos de tamaño de muestra. ¿Has probado esto con un conjunto de datos más grande, digamos ~ 100 observaciones? – ely