Обязательно будет регрессия к среднему — Чарли Мангер

Линейная регрессия — это широко используемый статистический метод для моделирования связи между зависимой переменной и одной или несколькими независимыми переменными. В этой статье мы рассмотрим концепции AIC, BIC, R-квадрата, скорректированного R-квадрата и Cp Маллоу, а также ковариации и корреляции на примере Python. Мы также покажем выходные данные этих показателей и объясним их интерпретацию.

Пример линейной регрессии в Python

В этом примере мы будем использовать набор данных Реклама на Kaggle. Этот набор данных содержит информацию о расходах на рекламу и продажах для 200 продуктов. Наша цель — построить модель линейной регрессии, которая прогнозирует продажи на основе расходов на рекламу.

Во-первых, давайте загрузим набор данных и импортируем необходимые библиотеки:

import numpy as np
import statsmodels.api as sma
import pandas as pd

#Import the Dataset
data = pd.read_csv("~/Downloads/advertising.csv")

data.head() # Lets preview the dataset

Корреляция

Давайте найдем корреляцию переменных-предикторов с продажами. Здесь мы рассматриваем продажи как целевую переменную.

# Correlation
sns.heatmap(data.corr(), annot = True,cmap = "YlGnBu")
plt.show()

Корреляция между расходами на рекламу и продажами предполагает, что существует положительная линейная зависимость между этими переменными, при этом телевизионная реклама имеет самую сильную корреляцию с продажами.

Значения корреляции между расходами на рекламу и продажами позволят компании понять взаимосвязь между этими переменными и то, как изменения в расходах на рекламу могут повлиять на продажи. Например, если компания обнаружила, что телевизионная реклама имеет самую сильную корреляцию с продажами, она может рассмотреть вопрос об увеличении расходов на телевизионную рекламу для увеличения продаж.

Модель линейной регрессии с использованием Statsmodels

Теперь давайте подгоним модель линейной регрессии к данным:

# Fitting the Regression Model

from statsmodels.formula.api import ols

model = ols("Sales~TV+Newspaper+Radio", data = data).fit()

model.summary()

Мы включили в нашу модель три предиктора: телевидение, радио и газету. TV представляет собой сумму денег, потраченную на телевизионную рекламу, Radio представляет собой сумму, потраченную на радиорекламу, а Newspaper представляет сумму, потраченную на рекламу в газете.

Теперь давайте рассчитаем некоторые показатели, чтобы оценить соответствие нашей модели.

R-квадрат и скорректированный R-квадрат

R-квадрат измеряет, насколько хорошо модель линейной регрессии соответствует данным. Он представляет собой долю дисперсии зависимой переменной, которая объясняется независимыми переменными в модели. R-квадрат находится в диапазоне от 0 до 1, причем более высокие значения указывают на лучшее соответствие.

Примечание. Здесь основное внимание уделяется не переоснащению, когда R Squared приближается к 1 или становится очень близким к 1 (например, 99% или выше).

Скорректированный R-квадрат — это модифицированная версия R-квадрата, в которой учитывается количество переменных-предикторов в модели. Скорректированный R-квадрат наказывает модели, которые имеют слишком много переменных-предикторов, чтобы избежать переобучения. Скорректированный R-квадрат находится в диапазоне от 0 до 1, причем более высокие значения указывают на лучшее соответствие.

R-квадрат и скорректированный R-квадрат определяются по формуле:

# R Squared

SSE = np.sum(model.resid**2)
SST = np.sum((data.Sales - data.Sales.mean())**2)
SSR = SST - SSE

R_Squared= SSR/SST

print("R Squared:", np.round(R_Squared,3))
R Squared: 0.903
# Adjusted R Squared

n = data.shape[0]
predictors = data.shape[1]-1 # TV, Radio, Newspaper

Adj_R2 = 1 - (((1-R_Squared)*(n-1))/(n-p-1))

print("Adjusted R Squared:", np.round(Adj_R2,4))
Adjusted R Squared: 0.9021

Заключение. Значения R-квадрата и скорректированного R-квадрата показывают, что переменные-предикторы объясняют большую долю дисперсии в продажах и что модель хорошо подходит для данных. Скорректированное значение R-квадрата также учитывает количество переменных-предикторов, что помогает избежать переобучения.

АИК и БИК

AIC (информационный критерий Акаике) и BIC (байесовский информационный критерий) являются мерами относительного качества статистической модели. Они основаны на концепции информационной энтропии и наказывают слишком сложные модели, чтобы избежать переобучения.

В целом более низкие значения AIC и BIC указывают на лучшее соответствие модели. AIC предоставляется:

# Calculating AIC
n = data.shape[0]
k = len(model.params)

AIC = n * np.log(sum((y - model.predict())**2) / n) + 2 * k
print("AIC: ", AIC)
AIC: 774.7
#  Calculating BIC

BIC = n * np.log(sum((y - model.predict())**2) / n) + k * np.log(n)
print("BIC:", BIC)
BIC: 787.90

Значения AIC и BIC указывают на то, что наша модель линейной регрессии хорошо подходит для данных, хотя может быть некоторое переобучение из-за относительно большого количества переменных-предикторов.

Cp Маллоу

Cp Маллоу — это статистическая мера, которая сравнивает производительность модели линейной регрессии с идеальной моделью, которая включает все важные предикторы, но не содержит посторонних. Cp Мэллоу определяется по формуле:

# Mallow's Coefficient

Mallow_Cp = (sum((y - model.predict())**2) / model.mse_resid) - n + 2 * len(model.params)

print("Mallow's Coefficient: ", Mallow_Cp)
Mallow's Coefficient:  3.999999999999943

Идеальная модель определяется как имеющая ошибку прогнозирования, равную минимально возможному значению, которое является ошибкой прогнозирования, достигаемой путем подгонки модели с использованием истинных коэффициентов базовой совокупности. Значение Cp Маллоу меньше p + 1 указывает на то, что модель лучше идеальной модели, где p — количество предикторов в модели. Значение Cp Маллоу, превышающее p + 1, указывает на то, что модель хуже идеальной модели и что могут быть лучшие модели с меньшим количеством предикторов, которые имеют аналогичную или лучшую производительность.

Значение Cp Маллоу предполагает, что наша модель ненамного хуже идеальной модели, которая включает только важные переменные-предикторы.

Основываясь на этих показателях, мы можем сделать вывод, что расходы на рекламу, особенно на рекламу на телевидении, являются надежным предиктором продаж для этого набора данных. Компании могут использовать эту информацию для принятия обоснованных решений о своих рекламных бюджетах и ​​стратегии. Эти показатели также можно использовать для сравнения различных моделей линейной регрессии и выбора той, которая лучше всего соответствует данным.

В заключение, понимание статистических показателей, описанных в этой статье, необходимо для построения точных и эффективных моделей линейной регрессии. Принимая во внимание такие факторы, как AIC, BIC, R-квадрат, скорректированный R-квадрат и Cp Маллоу, предприятия могут получить ценную информацию о взаимосвязях между переменными и принимать решения на основе данных, которые улучшат их итоговую прибыль.