La regresión lineal con scipy.ODR falla (no se obtiene el rango completo en la solución)

entonces estaba intentando una regresión lineal con scipy.odr. Sin embargo, falló miserablemente. scipy.odr ha funcionado para mí antes, y no veo ningún error en mi código. La única razón por la que puedo pensar es que la pendiente puede ser demasiado pequeña, pero no veo cómo eso podría molestar a Scipy. Gracias por tu ayuda.

El código:

#!/usr/bin/env python3 -i
# -*- coding: iso-8859-1 -*-

import matplotlib.pyplot as plt
import numpy as np
from scipy.odr import *


fig = plt.figure()
ax1 = fig.add_subplot(111)


x   = np.linspace(0,1E15,10)
y   = 1E-15*x-2



ax1.set_xlim(-0.05E15,1.1E15)
ax1.set_ylim(-2.1, -0.7)


ax1.plot(x, y, 'o')

# Fit using odr
def f(B, x):
    return B[0]*x + B[1]    

linear = Model(f)
mydata = RealData(x, y)
myodr = ODR(mydata, linear, beta0=[1., 2.])
myoutput = myodr.run()
myoutput.pprint()

a, b = myoutput.beta
sa, sb = myoutput.sd_beta

xp = np.linspace(ax1.get_xlim()[0], ax1.get_xlim()[1], 1000)
yp = a*xp+b


ax1.plot(xp,yp)

plt.show()

Esta es la salida del terminal resultante:

Beta: [ -4.84615388e-15   2.00000000e+00]
Beta Std Error: [  8.14077323e-16   0.00000000e+00]
Beta Covariance: [[  1.46153845e-31   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00]]
Residual Variance: 4.534412955465587
Inverse Condition #: 1.0
Reason(s) for Halting:
  Problem is not full rank at solution
  Parameter convergence

Y este es el gráfico resultante:

editar: mi código para la regresión odr proviene dehttp://docs.scipy.org/doc/scipy/reference/odr.html

Respuestas a la pregunta(1)

Su respuesta a la pregunta