Ajustar una curva al límite de un diagrama de dispersión
Estoy tratando de ajustar una curva al límite de un diagrama de dispersión.Ver esta imagen como referencia.
Ya he logrado un ajuste con el siguiente código (simplificado). Corta el marco de datos en pequeñas tiras verticales, y luego encuentra el valor mínimo en esas tiras de anchowidth
ignorandonan
s. (La función está disminuyendo monotónicamente).
def func(val):
""" returns some function of 'val'"""
return val * 2
for i in range(0, max_val, width)):
_df = df[(df.val > i) & (df.val < i + width)] # vertical slice
if np.isnan(np.min(func(_df.val)): # ignore nans
continue
xs.append(i + width)
ys.append(np.min(func(_df.val)))
Entonces estoy haciendo el ajuste conscipy.optimize.curve_fit
. Mi pregunta es: ¿hay una forma más natural o pitónica de hacer esto? ¿Hay alguna forma de aumentar la precisión? (por ejemplo, ¿dando un mayor peso a las áreas del diagrama de dispersión con una mayor densidad de puntos?)