0
$\begingroup$

I am trying to fit a line that best predicts the production of energy Y given the speed of wind X, a typical Y = xm + b , using deming regression. I am looking for the slope and the intercept of that line using the following formula:

enter image description here

enter image description here

I assume that 𝛿 = 1.

This is my following python implementation of deming regression:

def deming_regresion(df, X, y, delta = 1):
'''Takes a pandas DataFrame, name of the 
columns as strings and the value of delta, 
and returns the slope and intercept following deming regression formula'''

    cov = df.cov()
    mean_x = df[X].mean()
    mean_y = df[y].mean()
    s_xx = cov[X][X]
    s_yy = cov[y][y]
    s_xy = cov[X][y]

    slope = (s_yy  - delta * s_xx + np.sqrt((s_yy - delta * s_xx) ** 2 + 4 * delta * s_xy ** 2)) / (2 * s_xy)

    intercept = media_y - pendiente  * media_x

    return slope, intercept

I meassure the % of MSE and MAE in the predictions and I get the following results when trying to predict Y = Energy Production and X = Wind Speed: enter image description here

And the % of MSE and MAE are (MSE 97.72, MAE 69.85), slope, intercept of 17.85353671, -345.34106788.

When I switch variables, X = Energy Production and Y = Wind Speed I get this:

enter image description here

With these % of errors (MSE 44.9, MAE 32.23) and slope intercept of 0.04957782881808902, 21.051520903377014.

Why this happens? What am I doing wrong? I used Orthogonal Regression from scipy because my delta is equal to 1 and I still get very similar results. Maybe is a very stupid question but I will appreciate your help.

If you need any more info you can ask, I tried to put as much info as I could but maybe I missed something important.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.