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