7. Проверка гипотез о коэффициентах модели
Седьмым инструментом, который мы рассмотрим, - это проверка гипотез о коэффициентах модели (Hypothesis Tests on Model Coefficients). Это статистические тесты, которые позволяют оценить значимость влияния каждой из независимых переменных на зависимую переменную.
Стандартным подходом для проверки гипотез о коэффициентах модели является использование t-статистики и p-значения. P-значение представляет собой вероятность получить такие или более экстремальные результаты, если нулевая гипотеза (обычно о том, что коэффициент равен нулю) верна.
Диапазон значений p-значения - от 0 до 1. Меньшие значения указывают на более значимое влияние независимой переменной на зависимую переменную.
Пример вызова и проведения гипотезы о коэффициентах модели на Python может выглядеть так:
import numpy as np
import statsmodels.api as sm
# Данные
X = np.array([3, -0.5, 2, 7])
y = np.array([2.5, 0.0, 2, 8])
# Подгонка модели линейной регрессии
X = sm.add_constant(X) # Добавляем константу для вычисления смещения
model = sm.OLS(y, X).fit()
# Выводим сводку модели
print(model.summary())
Этот код выведет результаты теста гипотезы для всех коэффициентов модели, включая t-статистики, p-значения и доверительные интервалы.
В этом примере мы создаем два массива X
и y
, содержащие входные данные и целевую переменную соответственно. Затем мы используем функцию sm.add_constant(X)
для добавления константы (единичного столбца) к массиву X
. Это необходимо для оценки смещения (intercept) в модели линейной регрессии.
Далее мы подгоняем модель линейной регрессии с помощью sm.OLS(y, X).fit()
и выводим сводку модели с помощью print(model.summary())
.
В сводке модели вы увидите оценки коэффициентов (включая смещение), их стандартные ошибки и p-значения для проверки гипотез о том, что коэффициенты равны нулю.
Таким образом, вы можете проверить гипотезы о коэффициентах модели линейной регрессии, анализируя p-значения в сводке модели.
Еще один пример:
import numpy as np
import pandas as pd
import statsmodels.api as sm
# Создаем некоторые тестовые данные
np.random.seed(12345)
n = 100
x = np.linspace(0, 10, n)
X = np.column_stack((x, x**2))
beta = [0.5, 0.1]
e = np.random.normal(size=n)
y = np.dot(X, beta) + e
# Создаем DataFrame для входных данных
data = pd.DataFrame({"x": x, "x_squared": x**2, "y": y})
# Подгоняем модель линейной регрессии
X = data[["x", "x_squared"]]
y = data["y"]
model = sm.OLS(y, X).fit()
# Выводим сводку модели
print(model.summary())
Last updated