Statsmodels: Запуск линейной регрессии R непосредственно в Python
Изучите библиотеку statsmodels — инструмент, позволяющий аналитикам данных выполнять линейную регрессию с использованием привычного синтаксиса R и получать подробные результаты.
Возможности статистических моделей в статистическом анализе
Python — популярный язык программирования в области статистического анализа благодаря своей богатой экосистеме библиотек. Среди статистических методов линейная регрессия является одним из наиболее широко используемых. Библиотека statsmodels предоставляет мощные инструменты для выполнения регрессии и дисперсионного анализа, особенно полезные для тех, кто уже знаком с синтаксисом языка R.
StatsModels — это библиотека Python, специально разработанная для проведения статистических тестов. Эта библиотека особенно эффективна в регрессионном анализе, аналогичном методам, используемым в эконометрике. Главное преимущество StatsModels заключается в том, что её результаты были перепроверены на точность с помощью другого профессионального статистического программного обеспечения, такого как R, Stata и SAS, что обеспечивает высокую надежность для академических и углубленных исследований.

Простая линейная регрессия с использованием синтаксиса в стиле R.
Простая линейная регрессия используется для определения взаимосвязи между зависимой переменной (y) и независимой переменной (x). С помощью библиотеки statsmodels пользователи могут легко сделать это, используя синтаксис формул, аналогичный синтаксису в R.
Сначала необходимо импортировать необходимые библиотеки:
импортировать statsmodels.formula.api как smf
import statsmodels.api as sm
импорт seaborn real sns
import numpy as np
Используйте набор данных 'tips', доступный в библиотеке Seaborn, для анализа взаимосвязи между чаевыми ('tip') и общей суммой счета ('total_bill').
tips = sns.load_dataset('tips')

Для построения регрессионной модели мы используем функциюsmf.olsМетод наименьших квадратов (метод обычных наименьших квадратов) с использованием следующей формулы:
результаты = smf.ols('совет ~ общий_счет', данные=советы).fit()
В данном случае, 'tip ~ total_bill' указывает, что 'tip' является зависимой переменной, а 'total_bill' — независимой переменной. Для просмотра подробных результатов модели используйте команду:
print(results.summary())

Расширение применения до многомерной регрессии и нелинейных моделей.
Множественная линейная регрессия позволяет анализировать взаимосвязь между зависимой переменной и несколькими независимыми переменными, помогая контролировать потенциальные мешающие факторы. Синтаксис в statsmodels очень прост: достаточно добавить новые переменные в формулу, используя знак плюс (+).
Например, чтобы учесть влияние общей суммы счета и количества гостей на размер чаевых:
результаты = smf.ols('совет ~ общий_счет + размер', данные=советы).fit()
print(results.summary())

Кроме того, библиотека statsmodels также поддерживает моделирование нелинейных зависимостей, таких как квадратные уравнения. Для этого необходимо использовать следующую функцию:I-AuxЧтобы сообщить statsmodels, что это операция над существующей переменной:
results = smf.ols('y ~ x + I(x**2)', data=df).fit()
print(results.summary())

Расшифровка таблицы результатов регрессии
Сводная таблица результатов, полученных с помощью statsmodels, содержит много важной информации для оценки модели:
- Коэффициент детерминации (R-квадрат):Это указывает на степень, в которой изменчивость зависимой переменной объясняется независимыми переменными. Чем ближе значение к 1, тем лучше модель соответствует данным.
- Скорректированный коэффициент детерминации R²:Аналогично коэффициенту детерминации R², но скорректированному с учетом количества переменных в модели, он более полезен при сравнении многомерных регрессионных моделей.
- Коэффициенты:Это показывает степень изменения зависимой переменной при изменении соответствующей независимой переменной на одну единицу.
- Стандартная ошибка (Std err):Оцените точность расчетного коэффициента. Чем ниже значение, тем надежнее оценка.
- p-значение:Этот метод используется для проверки статистической значимости каждой переменной. Если значение p меньше заранее установленного порогового значения (обычно 0,05), то переменная оказывает статистически значимое влияние.

Дисперсионный анализ (ANOVA)
Дисперсионный анализ (ANOVA) используется для сравнения средних значений переменной в нескольких группах категориальной переменной.
Однофакторный дисперсионный анализ
Когда имеется только одна категориальная переменная, мы используем однофакторный дисперсионный анализ (ANOVA). Например, чтобы проверить, является ли вид пингвина («вид») значимым предиктором длины клюва («длина_клюва_мм»):
penguin_lm = smf.ols('bill_length_mm ~ species', data=penguins).fit()
результаты = sm.stats.anova_lm(penguin_lm)
print(results)

Многомерный дисперсионный анализ
Когда имеется более одной категориальной переменной, можно использовать мультиплексный дисперсионный анализ (ANOVA). Например, добавим в модель переменную «остров»:
penguin_multi_lm = smf.ols('bill_length_mm ~ species * island', data=penguins).fit()
результаты = sm.stats.anova_lm(penguin_multi_lm)
print(results)

Использование звездочек (*) в формуле позволяет модели учитывать как индивидуальное влияние каждой переменной, так и взаимодействие между ними.

Заключение
Библиотека statsmodels предоставляет возможность выполнять сложные статистические модели, такие как линейная регрессия и дисперсионный анализ (ANOVA), непосредственно в среде Python. Используя привычный синтаксис формул в стиле R, statsmodels упрощает процесс построения и анализа моделей, позволяя специалистам по анализу данных преобразовывать необработанные данные в выводы и решения, основанные на фактических данных.



