πŸ” OLS рСгрСссия Π² Python: Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² (OLS, Ordinary Least Squares) Π² Python

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² (OLS) - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² статистики ΠΈ рСгрСссионного Π°Π½Π°Π»ΠΈΠ·Π°. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии.

Π’ Python сущСствуСт нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ OLS для выполнСния рСгрСссионного Π°Π½Π°Π»ΠΈΠ·Π°. Одна ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ - statsmodels.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° OLS для выполнСния рСгрСссионного Π°Π½Π°Π»ΠΈΠ·Π° Π² Python с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ statsmodels:


import statsmodels.api as sm

# Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ для рСгрСссии
X = sm.add_constant(X) # ДобавляСм столбСц с константой
model = sm.OLS(y, X) # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ OLS
results = model.fit() # ВыполняСм Ρ€Π΅Π³Ρ€Π΅ΡΡΠΈΡŽ

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
print(results.summary()) # Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сводку Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² рСгрСссии

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ "X" прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², "y" - Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ "add_constant" ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния столбца с константой ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ "X". Π—Π°Ρ‚Π΅ΠΌ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ OLS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "OLS" ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ statsmodels. ПослС выполнСния рСгрСссии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° "fit" выводится сводка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² рСгрСссии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "summary".

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄ OLS Π² Python позволяСт ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии ΠΈ прСдоставляСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ сводку Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

OLS (Ordinary Least Squares) рСгрСссия Π² Python β€” это статистичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для построСния ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии. Π’ основС OLS Π»Π΅ΠΆΠΈΡ‚ минимизация суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² разностСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΈ прСдсказанными значСниями зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OLS Ρ€Π΅Π³Ρ€Π΅ΡΡΠΈΡŽ Π² Python.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ линСйная рСгрСссия?

ЛинСйная рСгрСссия β€” это статистичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдсказания значСния зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° основС ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ линСйная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ нСзависимыми ΠΈ зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ измСнСнию зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Для построСния ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ OLS ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OLS рСгрСссия?

OLS рСгрСссия ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ зависимая пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдсказана ΠΊΠ°ΠΊ линСйная комбинация нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ случайной ошибкой. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ стрСмится Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ коэффициСнты, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сумма ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² разностСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΈ прСдсказанными значСниями зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ минимальной.

Π’ Python, OLS рСгрСссия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля statsmodels.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования OLS рСгрСссии Π² Python

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ построим модСль Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии с использованиСм OLS ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

import statsmodels.api as sm
import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…
data = {'x': [1, 2, 3, 4, 5],
        'y': [2, 4, 5, 7, 8]}

df = pd.DataFrame(data)

# ДобавляСм константу ΠΊ нСзависимым ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ
df['const'] = 1

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ нСзависимыС ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
X = df[['const', 'x']]
y = df['y']

# Π‘Ρ‚Ρ€ΠΎΠΈΠΌ модСль Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии
model = sm.OLS(y, X)

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
result = model.fit()

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ
print(result.summary())

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… с двумя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, x ΠΈ y. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ добавляСм константу ΠΊ нСзависимым ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ модСль Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ константный Ρ‡Π»Π΅Π½. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ опрСдСляСм нСзависимыС ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм модСль Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ OLS ΠΌΠ΅Ρ‚ΠΎΠ΄. ПослС этого ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° summary().

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

OLS рСгрСссия Π² Python прСдоставляСт статистичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для построСния ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдсказания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ зависимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° основС нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. OLS рСгрСссия позволяСт Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ коэффициСнты, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… модСль Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ соотвСтствуСт Π΄Π°Π½Π½Ρ‹ΠΌ.

НадСюсь, данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OLS рСгрСссия Π² Python ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для построСния ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии.

Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ЛинСйная рСгрСссия Π² Python Π·Π° 13 МИН для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² [#МашинноС ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ 16 Π»Π΅Ρ‚Π½Π΅Π³ΠΎ Школьника]

ML: пишСм Π½Π° python модСль simple linear regression для опрСдСлСния выброса БО2 Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ

[ΠžΠ’ΠšΠ Π«Π’Π«Π™ КУРБ] Python для финансистов - ΠœΠΎΠ΄ΡƒΠ»ΡŒ Statsmodels. ЛинСйная рСгрСссия - Π£Ρ€ΠΎΠΊ 11

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

сколько стоит змСиная ΠΊΠΎΠΆΠ° ΠΏΠΈΡ‚ΠΎΠ½Π°: Ρ†Π΅Π½Ρ‹, Π²ΠΈΠ΄Ρ‹ ΠΈ информация

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ создания языка Python: ΠšΡ‚ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Π³ΠΎΠ΄Ρƒ создал ΠŸΠΈΡ‚ΠΎΠ½? 🐍

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Π² HTML: совСты для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

πŸ” OLS рСгрСссия Π² Python: Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python для Android: пошаговоС руководство

πŸ”ΠšΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: Π»Π΅Π³ΠΊΠΎ ΠΈ быстро

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ format Π² Python: ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для форматирования Π΄Π°Π½Π½Ρ‹Ρ