Я использую numpy.polyfit, чтобы получить линейную регрессию: coeffs = np.polyfit (x, y, 1).
Как лучше всего рассчитать ошибку наклона подгонки с помощью numpy?
Я использую numpy.polyfit, чтобы получить линейную регрессию: coeffs = np.polyfit (x, y, 1).
Как лучше всего рассчитать ошибку наклона подгонки с помощью numpy?
Как уже упоминал @ebarr в комментариях, вы можете использовать np.polyfit для возврата остатков, используя аргумент ключевого слова full=True
.
Пример:
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z, residuals, rank, singular_values, rcond = np.polyfit(x, y, 3, full=True)
residuals
- это сумма наименьших квадратов.
В качестве альтернативы вы можете использовать аргумент ключевого слова cov=True
, чтобы получить ковариационную матрицу.
Пример:
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z, cov = np.polyfit(x, y, 3, cov=True)
Тогда диагональные элементы cov
- это дисперсии коэффициентов по z, то есть np.sqrt(np.diag(cov))
дает вам стандартные отклонения коэффициентов. Вы можете использовать стандартные отклонения для оценки вероятности того, что абсолютная ошибка превышает определенное значение, например вставив стандартные отклонения в расчет распространения неопределенности. Если вы используете, например, 3 * стандартные отклонения в распространении неопределенности, вы вычисляете ошибку, которая не будет превышена в 99,7% случаев.
Последний совет: вам нужно выбрать, выбрать ли вы full=True
или cov=True
. cov=True
работает только при full=False
(по умолчанию) или наоборот.
polyfit
, он возвращает остатки соответствия. Вы можете выполнить Chi2 на этом, чтобы получить хорошее соответствие, которое, как я полагаю, именно то, что вы ищете. - person ebarr   schedule 04.12.2014