Как вычислить доверительный интервал 99% для наклона в модели линейной регрессии в python?
мы имеем следующую линейную регрессию: y ~ b0 + b1 * x1 + b2 * x2. Я знаю, что функция регрессии в Matlab вычисляет ее, но linalg numpy.lstsq не делает (https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html).
2 ответов
StatsModels' RegressionResults
есть conf_int()
метод. Вот пример его использования (минимально модифицированная версия их Обычные Наименьшие Квадраты пример):
import numpy as np, statsmodels.api as sm
nsample = 100
x = np.linspace(0, 10, nsample)
X = np.column_stack((x, x**2))
beta = np.array([1, 0.1, 10])
e = np.random.normal(size=nsample)
X = sm.add_constant(X)
y = np.dot(X, beta) + e
mod = sm.OLS(y, X)
res = mod.fit()
print res.conf_int(0.01) # 99% confidence interval
вы можете использовать линейную регрессию scipy, которая вычисляет значение r/p и стандартную ошибку: http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html
EDIT : как подчеркивает Брайан, у меня был код из документации scipy:
from scipy import stats
import numpy as np
x = np.random.random(10)
y = np.random.random(10)
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
confidence_interval = 2.58*std_err