Расчет наклона и ошибки перехвата линейной регрессии - PullRequest
1 голос
/ 23 июня 2019

У меня очень простой случай с 3 точками данных, и я хотел бы выполнить линейную подгонку y=a0 + a1x через эти точки, используя np.polyfit или scipy.stats.linregress.

Для дальнейшего распространения ошибок мне нужны ошибки в уклоне и пересечении.Я, безусловно, не специалист по статистике, но со скупой стороны я знаю только о stderr, который не разбивается по наклону и перехвату.Polyfit имеет возможность оценить ковариационную матрицу, но это не работает только с 3 точками данных.

При использовании, например, qtiplot выдает ошибки для наклона и перехвата.

B (y-intercept) = 9,291335740072202e-12 +/- 2,391260092282606e-13
A (slope) = 2,527075812274368e-12 +/- 6,878180102259077e-13

Каким будет подходящий способ их вычисления в python?

РЕДАКТИРОВАТЬ:

np.polyfit(x, y, 1, cov=True)

приводит к

ValueError: число точек данных должно превышать порядок + 2 для байесовской оценки ковариационной матрицы

1 Ответ

0 голосов
/ 23 июня 2019

scipy.stats.linregress дает вам наклон, перехват, коэффициент корреляции, значение p и стандартную ошибку.Выровненная линия не имеет ошибок, связанных с ее наклоном или пересечением, ошибки связаны с расстояниями точек от линии. Прочитайте это, чтобы прояснить вопрос

Пример ...

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

points = np.array([[1, 3], [2, 4], [2, 7]])
slope, intercept, r_value, p_value, std_err = stats.linregress(points)

print("slope = ", slope)
print("intercept = ", intercept)
print("R = ", r_value)
print("p = ", p_value)
print("Standard error = ", std_err)

for xy in points:
    plt.plot(xy[0], xy[1], 'ob')

x = np.linspace(0, 10, 100)
y = slope * x + intercept
plt.plot(x, y, '-r')

plt.grid()
plt.show()
...