(вывод lm по точкам), также с Python

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

Линейная регрессия уже много обсуждается, и почти все книги, которые учат нас анализу, имеют ее описание, и гораздо больше материалов доступно в Интернете, поэтому я оставляю много деталей, кроме базового понимания того, что все дело в прогнозировании количественной реакции Y на основе единственного предиктора X исходя из предположения, что между ними существует линейная связь, конечно, некоторый коэффициент, перехват также играет решающую роль и не забывает случайную ошибку, которая делает все более реальным и земным почти везде !!!. Более подробная информация доступна на https://en.wikipedia.org/wiki/Linear_regression.

Предполагая, что мы достаточно знаем об этой концепции, и пробуем свои силы с реальными вещами, то есть написанием кода на R / Python. Во-первых, работая с R и беря уже чистые стандартные данные, зачем !!! Поскольку получение и очистка данных, обработка данных составляет почти 60–70% любого задания по науке о данных или машинному обучению.

Знай свои данные

library(alr3)
Loading required package: car
library(corrplot)
data(water) ## load the data
head(water) ## view the data
 
  Year APMAM APSAB APSLAKE OPBPC  OPRC OPSLAKE  BSAAM
1 1948  9.13  3.58    3.91  4.10  7.43    6.47  54235
2 1949  5.28  4.82    5.20  7.55 11.11   10.26  67567
3 1950  4.20  3.77    3.67  9.52 12.20   11.35  66161
4 1951  4.60  4.46    3.93 11.14 15.15   11.13  68094
5 1952  7.15  4.99    4.88 16.34 20.05   22.81 107080
6 1953  9.70  5.65    4.91  8.88  8.15    7.41  67594

filter.water <- water[,-1] ## Remove unwanted year 

# Visualize the data 
library(GGally)
ggpairs(filter.water) ## It's multivaribale regaression

Магия LM начинается благодаря R

Это похоже на yi = b0 + b1xi1 + b2xi2 +… bpxip + ei для i = 1,2,… n. здесь y = BSAAM, а x1… xn - все остальные переменные.

mlr <- lm(BSAAM~., data = filter.water)
summary(mlr)

# Output 

Call:
lm(formula = BSAAM ~ ., data = filter.water)

Residuals:
   Min     1Q Median     3Q    Max 
-12690  -4936  -1424   4173  18542 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 15944.67    4099.80   3.889 0.000416 ***
APMAM         -12.77     708.89  -0.018 0.985725    
APSAB        -664.41    1522.89  -0.436 0.665237    
APSLAKE      2270.68    1341.29   1.693 0.099112 .  
OPBPC          69.70     461.69   0.151 0.880839    
OPRC         1916.45     641.36   2.988 0.005031 ** 
OPSLAKE      2211.58     752.69   2.938 0.005729 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 7557 on 36 degrees of freedom
Multiple R-squared:  0.9248,	Adjusted R-squared:  0.9123 
F-statistic: 73.82 on 6 and 36 DF,  p-value: < 2.2e-16

Объяснение вывода

Остатки

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

Коэффициенты-перехват

Мы можем видеть, что все оставшиеся переменные идут с еще одной строкой «Перехват». Перехват предоставляет данные, когда все переменные равны 0, поэтому все измерения выполняются без учета какой-либо переменной, это опять же не так часто используется в обычных случаях, это среднее значение. y, когда x = 0

#            Estimate    Std. Error t value Pr(>|t|)    
# (Intercept) 15944.67    4099.80   3.889 0.000416 ***

Оценка коэффициента

Это увеличение X на одну единицу, а затем ожидаемое изменение Y, в этом случае смена единицы в OPS LAKE, затем на 2211,58 изменение единицы в BSAAM.

Коэффициент-Стд. Ошибка

Стандартное отклонение оценки называется стандартной ошибкой. Стандартная ошибка коэффициента определяет, насколько точно модель оценивает неизвестное значение коэффициента. Стандартная ошибка коэффициента всегда положительна.

Низкое значение этой ошибки будет полезно для нашего анализа, также используется для проверки доверительного интервала.

Значение коэффициента t

Значение t = оценка / стандартная ошибка

высокое значение t будет полезно для нашего анализа, так как это будет означать, что мы можем отклонить нулевую гипотезу, которая используется для вычисления значения p

Коэффициент Pr (›| t |)

индивидуальное значение p для каждого параметра, чтобы принять или отклонить нулевую гипотезу, это статистическая оценка x и y. Меньшее значение p позволяет нам отклонить нулевую гипотезу. все типы ошибок (истинно положительные / отрицательные, ложноположительные / отрицательные) выявляются, если мы неправильно анализируем значение p.

Звездочки отмечают значение p в стороне, определяя значимость значения, меньшее значение имеет высокую значимость.

# Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Остаточная стандартная ошибка

Residual standard error: 7557 on 36 degrees of freedom

При нормальной работе средняя ошибка модели, насколько хорошо наша модель предсказывает данные в среднем.

Степень свободы подобна отсутствию точки данных, принимаемой во внимание для оценки с учетом параметра. Не уверен, но в этом случае у нас всего 43 точки данных и 7 переменных, поэтому удалено 7 точек данных (43–7) = 36 степеней свободы.

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

Multiple R-squared:  0.9248,	Adjusted R-squared:  0.9123

Всегда от 0 до 1, высокое значение лучше. Процент вариации в переменной ответа, который объясняется вариацией в объясняющей переменной, это используется для расчета того, насколько хорошо модель объясняет вещи, когда мы не увеличиваем никакую переменную. тогда он также будет увеличиваться, и нет надлежащего предела, чтобы определить, насколько мы можем увеличить.

Мы берем запыленное значение, в котором мы не берем все переменные, только значимые переменные учитываются в скорректированном R в квадрате.

F-статистика

F-statistic: 73.82 on 6 and 36 DF

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

DF - степень свободы

p-значение

p-value: < 2.2e-16

Общее значение p на основе F-статистики, обычно значение p менее 0,05 указывает на то, что общая модель значима.

Итак, Python

Я использую подход OLS (обычный метод наименьших квадратов), но то же самое можно получить с помощью SciPy, который дает более стандартный результат.

import pandas as pd
import scipy.stats as stats
from statsmodels.formula.api import ols
mlr = ols("BSAAM~OPSLAKE+OPRC+OPBPC+APSLAKE+APSAB+APMAM", df).fit()
print(mlr.summary())

Большинство параметров совпадают с выходными данными R, а остальные параметры можно использовать для следующей исследовательской работы :)

Все описание основано на общем восприятии. Пожалуйста, дайте мне знать, если что-то не так, и ваши отзывы очень приветствуются.