примеры и вычисление функции потерь
Линейная регрессия (Linear regression) — модель зависимости переменной x от одной или нескольких других переменных (факторов, регрессоров, независимых переменных) с линейной функцией зависимости.
Линейная регрессия относится к задаче определения «линии наилучшего соответствия» через набор точек данных и стала простым предшественником нелинейных методов, которые используют для обучения нейронных сетей. В этой статье покажем вам примеры линейной регрессии.
Применение линейной регрессии
Предположим, нам задан набор из 7 точек (таблица ниже).
Цель линейной регрессии — поиск линии, которая наилучшим образом соответствует этим точкам. Напомним, что общее уравнение для прямой есть f (x) = m⋅x + b, где m — наклон линии, а b — его y-сдвиг. Таким образом, решение линейной регрессии определяет значения для m и b, так что f (x) приближается как можно ближе к y. Попробуем несколько случайных кандидатов:
Довольно очевидно, что первые две линии не соответствуют нашим данным. Третья, похоже, лучше, чем две другие. Но как мы можем это проверить? Формально нам нужно выразить, насколько хорошо подходит линия, и мы можем это сделать, определив функцию потерь.
Функция потерь — метод наименьших квадратов
Функция потерь — это мера количества ошибок, которые наша линейная регрессия делает на наборе данных. Хотя есть разные функции потерь, все они вычисляют расстояние между предсказанным значением y(х) и его фактическим значением. Например, взяв строку из среднего примера выше, f(x)=−0.11⋅x+2.5, мы выделяем дистанцию ошибки между фактическими и прогнозируемыми значениями красными пунктирными линиями.
Одна очень распространенная функция потерь называется средней квадратичной ошибкой (MSE). Чтобы вычислить MSE, мы просто берем все значения ошибок, считаем их квадраты длин и усредняем.
Вычислим MSE для каждой из трех функций выше: первая функция дает MSE 0,17, вторая — 0,08, а третья — 0,02. Неудивительно, что третья функция имеет самую низкую MSE, подтверждая нашу догадку, что это линия наилучшего соответствия.
Рассмотрим приведенный ниже рисунок, который использует две визуализации средней квадратичной ошибки в диапазоне, где наклон m находится между -2 и 4, а b между -6 и 8.
Слева: диаграмма, изображающая среднеквадратичную ошибку для -2≤m≤4, -6≤p≤8 Справа: тот же рисунок, но визуализирован как контурный график, где контурные линии являются логарифмически распределенными поперечными сечениями высоты.Глядя на два графика, мы видим, что наш MSE имеет форму удлиненной чаши, которая, по-видимому, сглаживается в овале, грубо центрированном по окрестности (m, p) ≈ (0.5, 1.0). Если мы построим MSE линейной регрессии для другого датасета, то получим аналогичную форму. Поскольку мы пытаемся минимизировать MSE, наша цель — выяснить, где находится самая низкая точка в чаше.
Больше размерностей
Вышеприведенный пример очень простой, он имеет только одну независимую переменную x и два параметра m и b. Что происходит, когда имеется больше переменных? В общем случае, если есть n переменных, их линейная функция может быть записана как:
f(x) = b+w_1*x_1 + … + w_n*x_n
Один трюк, который применяют, чтобы упростить это — думать о нашем смещении «b», как о еще одном весе, который всегда умножается на «фиктивное» входное значение 1. Другими словами:
f(x) = b*1+w_1*x_1 + … + w_n*x_n
Добавление измерений, на первый взгляд, ужасное усложнение проблемы, но оказывается, постановка задачи остается в точности одинаковой в 2, 3 или в любом количестве измерений. Существует функция потерь, которая выглядит как чаша — гипер-чаша! И, как и прежде, наша цель — найти самую нижнюю часть этой чаши, объективно наименьшее значение, которое функция потерь может иметь в отношении выбора параметров и набора данных.
Итак, как мы вычисляем, где именно эта точка на дне? Распространенный подход — обычный метод наименьших квадратов, который решает его аналитически. Когда есть только один или два параметра для решения, это может быть сделано вручную, и его обычно преподают во вводном курсе по статистике или линейной алгебре.
Проклятие нелинейности
Увы, обычный МНК не используют для оптимизации нейронных сетей, поэтому решение линейной регрессии будет оставлено как упражнение, оставленное читателю. Причина, по которой линейную регрессию не используют, заключается в том, что нейронные сети нелинейны.
Различие между линейными уравнениями, которые мы составили, и нейронной сетью — функция активации (например, сигмоида, tanh, ReLU или других).
Эта нелинейность означает, что параметры не действуют независимо друг от друга, влияя на форму функции потерь. Вместо того, чтобы иметь форму чаши, функция потерь нейронной сети более сложна. Она ухабиста и полна холмов и впадин. Свойство быть «чашеобразной» называется выпуклостью, и это ценное свойство в многопараметрической оптимизации. Выпуклая функция потерь гарантирует, что у нас есть глобальный минимум (нижняя часть чаши), и что все дороги под гору ведут к нему.
Минимум функцииНо, вводя нелинейность, мы теряем это удобство ради того, чтобы дать нейронным сетям гораздо большую «гибкость» при моделировании произвольных функций. Цена, которую мы платим, заключается в том, что больше нет простого способа найти минимум за один шаг аналитически. В этом случае мы вынуждены использовать многошаговый численный метод, чтобы прийти к решению. Хотя существует несколько альтернативных подходов, градиентный спуск остается самым популярным методом.
Примеры линейной регрессии
Если вы считаете регрессионное моделирование недоступным для понимания, или если у вас были проблемы с алгеброй в старшей школе, то эта статья для вас. Конечно, всем остальным она тоже не повредит.
Загрузить программу ВІ
Демонстрации решений
Оглавление
Если вы считаете регрессионное моделирование недоступным для понимания, или если у вас были проблемы с алгеброй в старшей школе, то эта статья для вас. Конечно, всем остальным она тоже не повредит.Представьте, что вам дали базу данных, содержащую возраст и доход каждого жителя определенного района. Ваш начальник хочет, чтобы вы использовали эти данные, чтобы создать модель, предсказывающую доход человека на основании его возраста. И вот вы звоните с просьбой о срочной статистической помощи некоему Доктору Иванову из Информационных Систем. Удача вам сопутствует – доктор на связи. Док Иванов мудро удостоверяется, что среди данных нет аномальных значений, способных исказить анализ. Затем он колдует над данными и добросовестно представляет вам математическую модель: «Умножьте возраст в годах на 971.4, приплюсуйте 1536.2 и получите годовой доход в долларах. Вот ваша оптимальная модель».
Вы как следует благодарите Доктора Иванова и спешите подготовить отчет своему начальнику. Вы используете формулу, чтобы построить график с доходом по вертикальной оси и возрастом по горизонтальной, и восхищаетесь простотой, с которой это правило связывает возраст и доход. Это прямая линия – и к тому же, оптимальная. Но ее блеск чуть меркнет, когда вы замечаете, что по этой модели доход 18-летних составляет $19,021 (этим юнцам следовало бы делать домашние задания, а не грести такие суммы!) И он исчезает окончательно, когда вы видите, что предполагаемый доход 70-летних составляет $69,534, и каждый последующий год жизни добавляет автоматический бонус в $971 (и вряд ли за счет надбавок к государственной пенсии).
Так почему же формула доктора Иванова выглядит подозрительной? Потому что она плохая. Но как модель может быть плохой, когда она «оптимальна»? Она будет оптимальна только в том случае, если Иванов сделал правильное предположение о ее форме. Он предположил, что правильная форма модели – это прямая линия. Компьютер сделал свою часть работы, выбрав наиболее подходящую прямую линию из всех возможных с помощью применения многоуважаемой техники, созданной еще Карлом Гауссом (1777-1855).
Уловка-22
Если вам кажется, что здесь есть Уловка-22, то вы правы. Если бы вы знали верную форму модели с самого начала, вам бы не понадобился Доктор Иванов. Док тоже не знал, какая форма является верной, так что из-за своей занятости он выбрал самое простое и предположил, что это прямая линия. Уравнение прямой линии выглядело научным, по крайней мере, в тот момент, но по сути научным не являлось. Прямые линии зачастую отражают невероятные физические законы в науке и инженерии, и нет никаких оснований полагать, что они применимы к экономическим ситуациям. Алгебраическая формула, и впрямь, проста и удобна, но кому нужно простое описание плохой модели?
Действительно ли объединенные силы математики и процессора Pentiumвытянули именно то, что было нужно, из данных? Вот и нет. То, что сделал Док, случается слишком часто, потому что всегда есть искушение бездумно применить повсеместно используемый инструмент, называемый линейной регрессией.
Линейная регрессия
Формула, которую дал вам Док, умножает возраст на 971.4 и добавляет 1536. 2 к результату. Он получил 971.4 и 1536.2 с помощью компьютерной программы линейной регрессии, которая выполнила все трудоемкие вычисления, чтобы найти эти числа. Данные числа определяют конкретную прямую, на которую ложатся исходные данные.
Линейная регрессия – это математический метод оценивания некоего количественного значения (например, суммы в долларах), посредством «взвешивания» одного или нескольких прогнозирующих параметров, таких как возраст, число детей, средний счет в боулинге и так далее. Он был разработан задолго до цифровых компьютеров, и его вечная слава обусловлена привлекательностью для академических исследований.
Если предположить, что линейная регрессия была единственным моделирующим инструментом в арсенале Дока, то мы можем увидеть, как его созданная из подручных средств модель появилась на свет. Подобные инструменты делают допущение, что прямая линия является правильной формой, определяющей отношение каждого из прогнозирующих параметров к искомому количественному показателю. Давайте предположим, что в дополнение к возрасту, ваши данные включали бы «число детей» как прогнозирующий параметр дохода. Введение обоих параметров в регрессию даст формулу вида:
Доход = 1007.8*Возраст -752.35*Число детей +933.6
Звездочка – знак умножения.Влияние нашей новой переменной «число детей», тоже линейное. Это происходит потому, что предполагаемый доход прямолинейно уменьшается на $752.35 за каждого дополнительного ребенка. Мы используем эту формулу, показывающую отношение возраста и числа детей к доходу, чтобы проиллюстрировать то, что важно знать о числах, предоставляемых линейной регрессией.
1) Довольно часто, некорректно полагают, что 1007.8 – это «вес» возраста, а -752.35 – «вес» числа детей. Если бы возраст выражался в месяцах, а не в годах, то новый «вес» был бы разделен на 12 лишь для того, чтобы отразить изменение шкалы. Таким образом, величина «веса» не является мерой важности прогнозирующего параметра, к которому он относится. Называйте эти множители коэффициентами, и вы не ошибетесь и избежите семантической опасности «веса». В модели будет столько же коэффициентов, сколько и прогнозирующих параметров.
Единственное предназначение коэффициентов и, в сущности, всех чисел (технически, значений параметров), производимых регрессией – это сделать так, чтобы формула хорошо сходилась с исходными данными.
2) Обратите внимание, что коэффициент (-752.35), множитель числа детей, имеет отрицательно значение. В реальности это вовсе не означает, что если число детей растет, то предполагаемый доход обязательно уменьшается. Знак перед коэффициентом будет достоверно указывать направление только в том случае, когда он является единственным прогнозирующим параметром. Если имеется два и более прогнозирующих параметра, и между ними существует корреляция, то вполне вероятно, что один параметр будет иметь положительный коэффициент, а другой – отрицательный, вопреки здравому смыслу. Для нашего примера, на самом деле, если бы число детей было бы единственным прогнозирующим параметром, то тогда коэффициент перед ними оказался бы положительным. Но если соединить число детей с возрастом, между которыми существует некоторая корреляция, то получится сбивающий с толку отрицательный коэффициент.
3) Последний параметр регрессии, константа +933.6 существует для того, чтобы удостоверится, что если каждый параметр принимает среднее значение, то результирующий предполагаемый доход тоже окажется средним. Линейная регрессия всегда так работает. Допустим, средний возраст равен 45.67, а среднее число детей – 1.41. Мы можем подставить эти значения в формулу следующим образом:
1007.8*45.67 -752.35*1.41 +933.56 = 45899
И 45899 – действительно, средний доход в исходных данных. После того как коэффициенты умножены на свои соответствующие параметры и просуммированы, в итоге всегда останется добавить эту константу (даже если она равна нулю).
Математический подвиг
До этого момента мы говорили о том, как линейная регрессия делает допущение о линейности отношений, и о том, как интерпретировать параметры, которые она находит. Но что делать, если отношения не линейны? Вы можете, не задумываясь, подставить данные в линейную регрессию, но то, что вы получите, будет линейным округлением для верной формы. Чем больше верная форма отличается от прямой линии, тем менее точным будет результат.
Из-за того, что процедура линейной регрессии выбита в граните классики, ответственность за выпрямление данных в нечто напоминающее прямую линию ложится на сознательного пользователя. Технический термин для выпрямления – это «трансформирование». Из своих предпочтений Док Иванов, скорее всего, использует что-то математическое, чтобы выполнять трансформирование. Например, если между возрастом и доходом не существует линейных отношений, возможно, они существуют между квадратным корнем возраста и доходом. Нет ничего волшебного в квадратном корне. Это всего лишь одна из множества математических функций, которая может использоваться в попытке трансформировать возраст во что-то новое, что будет более сопоставимо с линейной регрессией. Пара трансформаций тут и там может оказаться делом веселым и интересным, но что если вам приходится иметь дело с сотней потенциальных прогнозирующих параметров?
Книга 1995 года, адресованная индустрии прямого маркетинга, говорит о трансформировании следующее [наши комментарии – в квадратных скобках]:
«…довольно просто взглянуть на диаграмму рассеяния [точечный график, в котором горизонтальная ось – прогнозирующие параметры, а вертикальная – прогнозируемые] для определения, являются ли отношения линейными, или же они должны быть выпрямлены с помощью какой-либо трансформации».
Предыдущее утверждение верно, если рассматривается небольшое число параметров, и отношения настолько сильны, что очевидны при первом взгляде. Но если слабые отношения погребены под грудой из 50,000 параметров, тогда бы и Шерлок Холмс, вооруженный своей лупой, их бы не нашел. Другой подход с такой же сложностью – это построить график с ошибками («погрешностью») линейной модели, чтобы обнаружить очевидные закономерности упущенной информации. Недавно была продемонстрирована работа очень медленной (но упорной) компьютерной программы, которая испытывает одно уравнение трансформации за другим, усердно строя графики каждой найденной формулы на экране. Вы буквально можете оставить эту штуку работать всю ночь. Столь фанатичную преданность аналитическим функциям сложно оправдать, потому что пользователь, тот, кто платит по счетам, без сомнений, не обладает способностью интуитивно интерпретировать любую из них.
Давайте вернемся к изначальной проблеме предсказания дохода на основе возраста. Чтобы проиллюстрировать нашу позицию, давайте предположим, что следующая героическая модель наиболее соответствует вашим данным:
Доход = 46001 -exp(0.01355*(Возраст-46)**2)
Спорим, что она не вызовет у вашего начальника теплых и нежных чувств. У этого уравнения нет никакого смысла, кроме того, что эта гладкая кривая больше соответствует вашим данным, чем прямая линия. Можно найти еще более экзотичные уравнения, которые будут еще лучше соответствовать данным. Но эти упражнения по поиску наиболее соответствующей кривой не только лишены всякого смысла, но и полученная в результате кривая может подойти чересчур хорошо, внушив ложную уверенность в том, что было совершено некое научное достижение.
Повседневный подвиг
Давайте начнем с того, что такое модель и что ей не является. Модель – это просто набор правил, который позволит вам оттолкнуться от того, что вы уже знаете, и предсказать то, что вы желаете узнать. Возвращаясь к нашей исходной гипотетической проблеме. Вы хотите оттолкнуться от того, что вы уже знаете (возраст), и предсказать то, что вы хотите узнать (доход). Здесь, разумеется, будут возникать ошибки, но вы хотели бы в среднем оказываться правым, при этом постоянно не завышая и не занижая оценку дохода для возрастных диапазонов. Нужен набор правил, который точно описывает отношения между возрастом и доходом, и будет действительно моделью.
Начать вам лучше с составления собственной табличной модели со следующими строчками:
Возраст | Доход |
---|---|
18-22 | $7,500 |
23-33 | $25,000 |
34-44 | $38,000 |
45-55 | $58,000 |
56-60 | $30,000 |
61 и больше | $21,000 |
По крайней мере, эта таблица отражает реальность, в которой студенты и пенсионеры в среднем получают меньше остальных. Это может быть не алгебраично и не оптимально, но это модель и, к тому же, хорошая и нелинейная. Существует естественная разница между линейной моделью Дока и вашей прагматичной таблицей. Уравнение Дока «глобально»: это означает, что оно делает оценки для любого возраста от нуля до бесконечности. Если из-за ошибки ввода или программирования, в формулу будет подставлено значение возраста 999, то она радостно определит предполагаемый доход как $971,965. Помните, что многие математические формулы безжалостно проецируются в прекрасное далеко, если в них подставляют значения прогнозирующего параметра абсурдно далекие от их разумных пределов. Не всегда легко найти математические выражения, которые подстраиваются под данные в рамках разумного диапазона.
Ко всей этой затее с трансформированием есть более практичный подход. Его можно осуществить на основе таблицы, в которой доход для диапазона возрастов 56-60 превосходил бы доход для диапазона 18-22 примерно в четыре раза – лучше или хуже группируя разные диапазоны возрастов и наблюдая, как изменяется средний доход. Такая компьютерная процедура называется локальным сглаживаем. При локальном сглаживании предполагается, что прогнозируя, скажем, доход для 35-, 34- и 36-летних мы получим значение, схожее со значением дохода для 35-летних, и таким образом, это значение будет обладать почти одним с ним весом при округлении. Доходы для 18-летних или 70-летних не будут иметь ничего общего с доходом 35-летних, и поэтому получат нулевой вес при взвешивании. Более разумно использовать компьютер для нахождения этой локальной информации, чем пускаться в охоту за формой (математической функцией), которая по счастливой случайности будет иметь изгибы в нужных местах.
Прогнозирующие параметры
Линейная регрессия делает допущение, что прогнозирующие параметры что-то измеряют. Предположим, у нас есть прогнозирующий параметр – семейное положение, и он кодируется так: 1 = состоит в браке, 2 = не состоит в браке, 3 = разведен(а), 4 = вдова(ец). Эти четыре числовых кода ничего не измеряют; они произвольно выбраны, чтобы обозначать категории. Пользователю линейной регрессии приходится обходить эту проблему с помощью создания дополнительных прогнозирующих параметров, называемых вспомогательными переменными. Мы не станем в это углубляться, но рекомендуем вам учесть, что это другой неудобный аспект попытки приспособиться к допущениям линейной регрессии. Мы не завидуем тем, кому приходится иметь дело с дюжиной потенциальных прогнозирующих параметров, которые требуют применения уловки с трансформацией или же со вспомогательными переменными.
Значима ли модель?
В оценке того, насколько модель хороша, только одна вещь имеет значение – насколько хорошо модель делает предположения на основе данных, которых никогда не встречала. Всегда придерживайте некоторые данные в стороне в процессе моделирования как раз на этот случай. Когда значения внешних данных отсортированы от меньшего к большему, очевидна ли разница между возможностями и рисками? Сравнение различий между нижними 10 процентами значений и верхними 10 процентами – это распространенная проверка качества модели. Нет ничего особенного в группировке по десяткам. Общее правило – сделать группы настолько маленькими, насколько возможно, чтобы при этом сохранялась закономерность ступенчатого различия между группами. Если градация сохраняется, а результаты, полученные на основе данных, не входящих в выборку, выглядят хорошо, то модель значима. Точка.
Повседневный семантический смысл слова «значимый» – это «имеющий смысл» или «важный». Статистическое значение слова – это оценка того, является ли отхождение от гипотезы достаточно большим, чтобы обоснованно считаться не случайным. «Значимость» в статистическом смысле не имеет ничего общего с тем, является ли результат хорошим или плохим, а означает, что результат является не случайным.
Охраняя храм
Если вы посмотрите на линейную регрессию с точки зрения математики, то она прекрасна. Если вы взгляните на нее как на инструмент моделирования и оценки, то у нее обнаружится множество недостатков. Чтобы приблизится к математическому храму, вам потребуется жрец, который знает, как манипулировать данными, чтобы они соответствовали линейному канону, говорит о F-тестах и делает такого рода предупреждения (все та же книга):
«…нам следует не забывать тот факт, что финальная модель регрессии может быть применена к клиентскому файлу, содержащему миллионы имен, и что чем сложнее модель, тем больше трудностей она может вызывать у программистов, которые не являются специалистами по статистике и у которых может не оказаться программных инструментов, необходимых для работы с логарифмами и оценки базы данных».
Это невероятное заявление! После всей суеты вокруг модели, может оказаться, что у бедного программиста нет необходимых инструментов, чтобы с ней работать!
Заключение
Можно еще многое сказать о линейной регрессии. В статье представлены наиболее практичные советы, потому что регрессия находится повсюду и обладает такой богатой историей, что она будет использоваться еще долго. Линейная регрессия – это наследие тех дней, когда компьютеров не существовало, и нужен эксперт, чтобы грамотно ей воспользоваться. Это контрпродуктивно и дорого. Программное обеспечение должно помогать людям. Если вы действительно знаете, чего хотите, вы можете выполнить это в компьютерной программе. Современные компьютерно-ориентированные методы могут позаботиться о тех ограничениях линейной регрессии, которые требуют затратных услуг эксперта, вроде выявления аномальных значений, проведения трансформаций и манипуляций с категориями. Когда дело касается предсказаний, они тоже могут выполняться с помощью компьютерных программ, используя в основе данные, использованные при создании модели.
Оригинал статьи www.quirks.com
Перевод статьи Агентство маркетинговых исследований FDFgroup
Почитать еще
Скользкий склон безудержной семантики
Недавняя статья под названием «Спящее будущее визуализации данных? Фотография »расширяет определение визуализации данных до нового предела.
Data mining средства обнаружения данных могут создавать ценность для бизнеса?
Мы живем во время, когда данные вокруг нас. В эпоху цифровых технологий те, кто может выжать
Что такое гипер-персонализация? Преимущества, структура и примеры
Представьте себе сценарий встречи с кем-то много раз: Представьте, что человек узнает ваше имя, ваши
Введение в анализ временных рядов
Хотя для анализа данных используются все многочисленные передовые инструменты и методы, такие как наука о
Визуализация данных и виртуальная реальность
Время от времени кто-то заявляет, что визуализация данных может быть улучшена при просмотре в виртуальной
Структурированные и неструктурированные данные
Из-за всей шумихи вокруг больших данных и способов их использования компаниями вы можете спросить: «Какие
Что может сделать машинное обучение для вашего бизнеса прямо сейчас?
Этим вопросом задается множество бизнес-лидеров, поскольку ежедневно новшества в сфере ИИ и машинного обучения расширяют
История развития моделей данных
Итак, прыгайте на борт и наслаждайтесь путешествиями во времени наших попыток справиться с временностью в
Информационный шум
Чтобы тщательно, точно и четко информировать, мы должны определить предполагаемый сигнал, а затем усилить его,
Читайте о всех решениях
Какие бы задачи перед Вами не стояли, мы сможем предложить лучшие инструменты и решения
Смотреть
Проиграть видео
Презентация аналитической платформы Tibco Spotfire
Проиграть видео
Отличительные особенности Tibco Spotfire 10X
Проиграть видео
Как аналитика данных помогает менеджерам компании
примеры и вычисление функции потерь — Общие дети, г.
ВоронежСодержание
примеры и вычисление функции потерь
Линейная регрессия (Linear regression) — модель зависимости переменной x от одной или нескольких других переменных (факторов, регрессоров, независимых переменных) с линейной функцией зависимости.
Линейная регрессия относится к задаче определения «линии наилучшего соответствия» через набор точек данных и стала простым предшественником нелинейных методов, которые используют для обучения нейронных сетей. В этой статье покажем вам примеры линейной регрессии.
Применение линейной регрессии
Предположим, нам задан набор из 7 точек (таблица ниже).
Цель линейной регрессии — поиск линии, которая наилучшим образом соответствует этим точкам. Напомним, что общее уравнение для прямой есть f (x) = m⋅x + b, где m — наклон линии, а b — его y-сдвиг. Таким образом, решение линейной регрессии определяет значения для m и b, так что f (x) приближается как можно ближе к y. Попробуем несколько случайных кандидатов:
Довольно очевидно, что первые две линии не соответствуют нашим данным. Третья, похоже, лучше, чем две другие. Но как мы можем это проверить? Формально нам нужно выразить, насколько хорошо подходит линия, и мы можем это сделать, определив функцию потерь.
Функция потерь — метод наименьших квадратов
Функция потерь — это мера количества ошибок, которые наша линейная регрессия делает на наборе данных. Хотя есть разные функции потерь, все они вычисляют расстояние между предсказанным значением y(х) и его фактическим значением. Например, взяв строку из среднего примера выше, f(x)=−0.11⋅x+2.5, мы выделяем дистанцию ошибки между фактическими и прогнозируемыми значениями красными пунктирными линиями.
Одна очень распространенная функция потерь называется средней квадратичной ошибкой (MSE). Чтобы вычислить MSE, мы просто берем все значения ошибок, считаем их квадраты длин и усредняем.
Вычислим MSE для каждой из трех функций выше: первая функция дает MSE 0,17, вторая — 0,08, а третья — 0,02. Неудивительно, что третья функция имеет самую низкую MSE, подтверждая нашу догадку, что это линия наилучшего соответствия.
Слева: диаграмма, изображающая среднеквадратичную ошибку для -2≤m≤4, -6≤p≤8 Справа: тот же рисунок, но визуализирован как контурный график, где контурные линии являются логарифмически распределенными поперечными сечениями высоты.
Глядя на два графика, мы видим, что наш MSE имеет форму удлиненной чаши, которая, по-видимому, сглаживается в овале, грубо центрированном по окрестности (m, p) ≈ (0.5, 1.0). Если мы построим MSE линейной регрессии для другого датасета, то получим аналогичную форму. Поскольку мы пытаемся минимизировать MSE, наша цель — выяснить, где находится самая низкая точка в чаше.
Больше размерностей
Вышеприведенный пример очень простой, он имеет только одну независимую переменную x и два параметра m и b. Что происходит, когда имеется больше переменных? В общем случае, если есть n переменных, их линейная функция может быть записана как:
f(x) = b+w_1*x_1 + … + w_n*x_n
Один трюк, который применяют, чтобы упростить это — думать о нашем смещении «b», как о еще одном весе, который всегда умножается на «фиктивное» входное значение 1. Другими словами:
f(x) = b*1+w_1*x_1 + … + w_n*x_n
Добавление измерений, на первый взгляд, ужасное усложнение проблемы, но оказывается, постановка задачи остается в точности одинаковой в 2, 3 или в любом количестве измерений. Существует функция потерь, которая выглядит как чаша — гипер-чаша! И, как и прежде, наша цель — найти самую нижнюю часть этой чаши, объективно наименьшее значение, которое функция потерь может иметь в отношении выбора параметров и набора данных.
Итак, как мы вычисляем, где именно эта точка на дне? Распространенный подход — обычный метод наименьших квадратов, который решает его аналитически. Когда есть только один или два параметра для решения, это может быть сделано вручную, и его обычно преподают во вводном курсе по статистике или линейной алгебре.
Проклятие нелинейности
Увы, обычный МНК не используют для оптимизации нейронных сетей, поэтому решение линейной регрессии будет оставлено как упражнение, оставленное читателю. Причина, по которой линейную регрессию не используют, заключается в том, что нейронные сети нелинейны.
Различие между линейными уравнениями, которые мы составили, и нейронной сетью — функция активации (например, сигмоида, tanh, ReLU или других).
Эта нелинейность означает, что параметры не действуют независимо друг от друга, влияя на форму функции потерь. Вместо того, чтобы иметь форму чаши, функция потерь нейронной сети более сложна. Она ухабиста и полна холмов и впадин. Свойство быть «чашеобразной» называется выпуклостью, и это ценное свойство в многопараметрической оптимизации. Выпуклая функция потерь гарантирует, что у нас есть глобальный минимум (нижняя часть чаши), и что все дороги под гору ведут к нему.
Минимум функции
Но, вводя нелинейность, мы теряем это удобство ради того, чтобы дать нейронным сетям гораздо большую «гибкость» при моделировании произвольных функций. Цена, которую мы платим, заключается в том, что больше нет простого способа найти минимум за один шаг аналитически. В этом случае мы вынуждены использовать многошаговый численный метод, чтобы прийти к решению. Хотя существует несколько альтернативных подходов, градиентный спуск остается самым популярным методом.
Парная линейная регрессия. Задачи регрессионного анализа
Будут и задачи для самостоятельного решения, к которым можно посмотреть ответы.
Линейная регрессия — выраженная в виде прямой зависимость среднего значения какой-либо величины от некоторой другой величины. В отличие от функциональной зависимостиy = f(x), когда каждому значению независимой переменной x соответствует одно определённое значение величины y, при линейной регрессии одному и тому же значению x могут соответствовать в зависимости от случая различные значения величины y.
Если в результате наблюдения установлено, что при каждом определённом значении x существует сколько-то (n) значений переменной y, то зависимость средних арифметических значений y от x и является регрессией в статистическом понимании.
Если установленная зависимость может быть записана в виде уравнения прямой
y = ax + b,
то эта регрессионная зависимость называется линейной регрессией.
О парной линейной регрессии говорят, когда установлена зависимость между двумя переменными величинами (x и y). Парная линейная регрессия называется также однофакторной линейной регрессией, так как один фактор (независимая переменная x) влияет на результирующую переменную (зависимую переменную y).
В уроке о корреляционной зависимости были разобраны примеры того, как цена на квартиры зависит от общей площади квартиры и от площади кухни (две различные независимые переменные) и о том, что результаты наблюдений расположены в некотором приближении к прямой, хотя и не на самой прямой. Если точки корреляционной диаграммы соединить ломанной линией, то будет получена линия эмпирической регрессии. А если эта линия будет выровнена в прямую, то полученная прямая будет прямой теоретической регрессии. На рисунке ниже она красного цвета (для увеличения рисунка щёлкнуть по нему левой кнопкой мыши).
По этой прямой теоретической регрессии может быть сделан прогноз или восстановление неизвестных значений зависимой переменной по заданным значениям независимой переменной.
В случае парной линейной регрессии для данных генеральной совокупности связь между независимой переменной (факториальным признаком) X и зависимой переменной (результативным признаком) Y описывает модель
,
где
— свободный член прямой парной линейной регрессии,
— коэффициент направления прямой парной линейной регрессии,
— случайная погрешность,
N — число элементов генеральной совокупности.
Уравнение парной линейной регрессии для генеральной совокупности можно построить, если доступны данные обо всех элементах генеральной совокупности. На практике данные всей генеральной совокупности недоступны, но доступны данные об элементах некоторой выборки.
Поэтому параметры генеральной совокупности оценивают при помощи соответствующих параметров соответствующей выборки: свободный член прямой парной линейной регрессии генеральной совокупности заменяют на свободный член прямой парной линейной регрессии выборки , а коэффициент направления прямой парной линейной регрессии генеральной совокупности — на коэффициент направления прямой парной линейной регрессии выборки .
В результате получаем уравнение парной линейной регрессии выборки
или
где
— оценка полученной с помощью модели линейной регрессии зависимой переменной Y,
— погрешность,
n — размер выборки.
Чтобы уравнение парной линейной регрессии было более похоже на привычное уравнение прямой, его часто также записывают в виде
.
Определение коэффициентов уравнения парной линейной регрессии
Если заранее известно, что зависимость между факториальным признаком x и результативным признаком y должна быть линейной, выражающейся в виде уравнения типа , задача сводится к нахождению по некоторой группе точек наилучшей прямой, называемой прямой парной линейной регрессии. Следует найти такие значения коэффициентов a и b , чтобы сумма квадратов отклонений была наименьшей:
.
Если через и обозначить средние значения признаков
Условие метода наименьших квадратов выполняется, если значения коэффициентов равны:
,
.
Пример 1. Найти уравнение парной линейной регрессии зависимости между валовым внутренним продуктом (ВВП) и частным потреблением на основе данных примера урока о корреляционной зависимости (эта ссылка, которая откроется в новом окне, потребуется и при разборе следующих примеров).
Решение. Используем рассчитанные в решении названного выше примера суммы:
Используя эти суммы, вычислим коэффициенты:
Таким образом получили уравнение прямой парной линейной регрессии:
Составить уравнение парной линейной регрессии самостоятельно, а затем посмотреть решение
Пример 2. Найти уравнение парной линейной регрессии для выборки из 6 наблюдений, если уже вычислены следующие промежуточные результаты:
;
;
;
;
Правильное решение и ответ.
Метод наименьших квадратов имеет по меньшей мере один существенный недостаток: с его помощью можно найти уравнение линейной регрессии и в тех случаях, когда данные наблюдений значительно рассеяны вокруг прямой регрессии, то есть находятся на значительном расстоянии от этой прямой. В таких случаях за точность прогноза значений зависимой переменной ручаться нельзя. Существуют показатели, которые позволяют оценить качество уравнения линейной регрессии прежде чем использовать модели линейной регрессии для практических целей. Разберём важнейшие из этих показателей.
Коэффициент детерминации
Коэффициент детерминации принимает значения от 0 до 1 и в случае качественной модели линейной регрессии стремится к единице. Коэффициент детерминации показывает, какую часть общего рассеяния зависимой переменной объясняет независимая переменная:
,
где
— сумма квадратов отклонений, объясняемых моделью линейной регрессии, которая характеризует рассеяние точек прямой регрессии относительно арифметического среднего,
— общая сумма квадратов отклонений, которая характеризует рассеяние зависимой переменной Y относительно арифметического среднего,
— сумма квадратов отклонений ошибки (не объясняемых моделью линейной регрессии), которая характеризует рассеяние зависимой переменной Y относительно прямой регресии.
Пример 3. Даны сумма квадратов отклонений, объясняемых моделью линейной регрессии (3500), общая сумма квадратов отклонений (5000) и сумма квадратов отклонений ошибки (1500). Найти коэффициент детерминации двумя способами.
Правильное решение и ответ.
F-статистика (статистика Фишера) для проверки качества модели линейной регрессии
Минимальное возможное значение F-статистики — 0. Чем выше значение статистики Фишера, тем качественнее модель линейной регрессии. Этот показатель представляет собой отношение объясненной суммы квадратов (в расчете на одну независимую переменную) к остаточной сумме квадратов (в расчете на одну степень свободы):
где m — число объясняющих переменных.
Сумма квадратов остатков
Сумма квадратов остатков (RSS) измеряет необъясненную часть дисперсии зависимой переменной:
где
—
остатки — разности между реальными значениями зависимой переменной и значениями, оценёнными уравнением линейной регрессии.
В случае качественной модели линейной регрессии сумма квадратов остатков стремится к нулю.
Стандартная ошибка регрессии
Стандартная ошибка регрессии (SEE) измеряет величину квадрата ошибки, приходящейся на одну степень свободы модели:
Чем меньше значение SEE, тем качественнее модель.
Пример 4. Рассчитать коэффициент детерминации для данных из примера 1.
Решение. На основании данных таблицы (она была приведена в примере урока о корреляционной зависимости) получаем, что SST = 63 770,593, SSE = 10 459,587, SSR = 53 311,007.
Можем убедиться, что выполняется закономерность SSR = SST — SSE:
63770,593-10459,587=53311,007.
Получаем коэффициент детерминации:
.
Таким образом, 83,6% изменений частного потребления можно объяснить моделью линейной регресии.
Итак, уравнение парной линейной регрессии:
.
В этом уравнении a — свободный член, b — коэффициент при независимой переменной.
Интерпретация свободного члена: a показывает, на сколько единиц график регрессии смещён вверх при x=0, то есть значение переменной y при нулевом значении переменной x.
Интерпретация коэффициента при независимой переменной: b показывает, на сколько единиц изменится значение зависимой переменной y при изменении x на одну единицу.
Пример 5. Зависимость частного потребления граждан от ВВП (истолкуем это просто: от дохода) описывается уравнением парной линейной регрессии . Сделать прогноз потребления при доходе в 20 000 у.е. Выяснить, на сколько увеливается потребление при увеличении дохода на 5000 у.е. Меняется ли потребление, если доход не меняется?
Решение. Подставляем в уравнение парной линейной регрессии xi = 20000 и получаем прогноз потребления при доходе в 20 000 у.е. yi = 17036,4662.
Подставляем в уравнение парной линейной регрессии xi = 5000 и получаем прогноз увеличения потребления при увеличении дохода на 5000 у.е. yi = 4161,9662.
Если доход не меняется, то xi = 0 и получаем, что потребление уменьшается на 129,5338 у.е.
Регрессионный анализ — раздел математической статистики, объединяющий практические методы исследования регрессионной зависимости между величинами по статистическим данным.
Наиболее частые задачи регрессионного анализа:
- установление факта наличия или отсутствия статистических зависимостей между переменными величинами;
- выявление причинных связей между переменными величинами;
- прогноз или восстановление неизвестных значений зависимых переменных по заданным значениям независимых переменных.
Также делаются проверки статистических гипотез о регрессии. Кроме того, при изучении связи между двумя величинами по результатам наблюдений в соответствии с теорией регрессии предполагается, что зависимая переменная имеет некоторое распределение вероятностей при фиксированном значении независимой переменной.
В исследованиях поведения человека, чтобы они претендовали на объективность, важно не только установить зависимость между факторами, но и получить все необходимые статистические показатели для результата проверки соответствующей гипотезы.
Одна из важнейших гипотез в регрессионном анализе — гипотеза о том, что коэффициент направления прямой регрессии генеральной совокупности равен нулю.
Если это предположение верно, то изменения независимой переменной X не влияют на изменения зависимой переменной Y: переменные X и Y не коррелированы, то есть линейной зависимости Y от X нет.
Нулевую гипотезу
рассматривают во взаимосвязи с альтернативной гипотезой
.
Статистика коэффициента направления
соответствует распределению Стьюдента с числом степеней свободы v = n — 2,
где — стандартная погрешность коэффициента направления прямой линейной регресии b1.
Доверительный интервал коэффициента направления прямой линейной регрессии:
.
Критическая область, в которой с вероятностью P = 1 — α отвергают нулевую гипотезу и принимают альтернативную гипотезу:
Пример 6. На основе данных из предыдущих примеров (о ВВП и частном потреблении) определить доверительный интервал коэффициента направления прямой линейной регресии 95% и проверить гипотезу о равенстве нулю коэффициента направления прямой парной линейной регрессии.
Можем рассчитать, что , а стандартная погрешность регрессии .
Таким образом, стандартная погрешность коэффициента направления прямой линейной регресии b1:
.
Так как и (находим по таблице в приложениях к учебникам по статистике), то доверительный интервал 95% коэффициента направления прямой парной линейной регрессии:
.
Так как гипотетическое значение коэффициента — нуль — не принадлежит доверительному интервалу, с вероятностью 95% можем отвергнуть основную гипотезу и принять альтернативную гипотезу, то есть считать, что зависимая переменная Y линейно зависит от независимой переменной X.
Всё по теме «Математическая статистика»
Линейная регрессия на Python: объясняем на пальцах
Линейная регрессия применяется для анализа данных и в машинном обучении. Постройте свою модель на Python и получите первые результаты!
Регрессия ищет отношения между переменными.
Для примера можно взять сотрудников какой-нибудь компании и понять, как значение зарплаты зависит от других данных, таких как опыт работы, уровень образования, роль, город, в котором они работают, и так далее.
Регрессия решает проблему единого представления данных анализа для каждого работника. Причём опыт, образование, роль и город – это независимые переменные при зависимой от них зарплате.
Таким же способом можно установить математическую зависимость между ценами домов в определённой области, количеством комнат, расстоянием от центра и т. д.
Регрессия рассматривает некоторое явление и ряд наблюдений. Каждое наблюдение имеет две и более переменных. Предполагая, что одна переменная зависит от других, вы пытаетесь построить отношения между ними.
Другими словами, вам нужно найти функцию, которая отображает зависимость одних переменных или данных от других.
Зависимые данные называются зависимыми переменными, выходами или ответами.
Независимые данные называются независимыми переменными, входами или предсказателями.
Обычно в регрессии присутствует одна непрерывная и неограниченная зависимая переменная. Входные переменные могут быть неограниченными, дискретными или категорическими данными, такими как пол, национальность, бренд, etc.
Общей практикой является обозначение данных на выходе – ?, входных данных – ?. В случае с двумя или более независимыми переменными, их можно представить в виде вектора ? = (?₁, …, ?ᵣ), где ? – количество входных переменных.
Регрессия полезна для прогнозирования ответа на новые условия. Можно угадать потребление электроэнергии в жилом доме из данных температуры, времени суток и количества жильцов.
Где она вообще нужна?
Регрессия используется во многих отраслях: экономика, компьютерные и социальные науки, прочее. Её важность растёт с доступностью больших данных.
Линейная регрессия – одна из важнейших и широко используемых техник регрессии. Эта самый простой метод регрессии. Одним из его достоинств является лёгкость интерпретации результатов.
Постановка проблемы
Линейная регрессия некоторой зависимой переменной y на набор независимых переменных x = (x₁, …, xᵣ), где r – это число предсказателей, предполагает, что линейное отношение между y и x: y = 𝛽₀ + 𝛽₁x₁ + ⋯ + 𝛽ᵣxᵣ + 𝜀. Это уравнение регрессии. 𝛽₀, 𝛽₁, …, 𝛽ᵣ – коэффициенты регрессии, и 𝜀 – случайная ошибка.
Линейная регрессия вычисляет оценочные функции коэффициентов регрессии или просто прогнозируемые весы измерения, обозначаемые как b₀, b₁, …, bᵣ. Они определяют оценочную функцию регрессии f(x) = b₀ + b₁x₁ + ⋯ + bᵣxᵣ. Эта функция захватывает зависимости между входами и выходом достаточно хорошо.
Для каждого результата наблюдения i = 1, …, n, оценочный или предсказанный ответ f(xᵢ) должен быть как можно ближе к соответствующему фактическому ответу yᵢ. Разницы yᵢ − f(xᵢ) для всех результатов наблюдений называются остатками. Регрессия определяет лучшие прогнозируемые весы измерения, которые соответствуют наименьшим остаткам.
Для получения лучших весов, вам нужно минимизировать сумму остаточных квадратов (SSR) для всех результатов наблюдений: SSR = Σᵢ(yᵢ − f(xᵢ))². Этот подход называется методом наименьших квадратов.
Простая линейная регрессия
Простая или одномерная линейная регрессия – случай линейной регрессии с единственной независимой переменной x.
А вот и она:
Реализация простой линейной регрессии начинается с заданным набором пар (зелёные круги) входов-выходов (x-y). Эти пары – результаты наблюдений. Наблюдение, крайнее слева (зелёный круг) имеет на входе x = 5 и соответствующий выход (ответ) y = 5. Следующее наблюдение имеет x = 15 и y = 20, и так далее.
Оценочная функция регрессии (чёрная линия) выражается уравнением f(x) = b₀ + b₁x. Нужно рассчитать оптимальные значения спрогнозированных весов b₀ и b₁ для минимизации SSR и определить оценочную функцию регрессии. Величина b₀, также называемая отрезком, показывает точку, где расчётная линия регрессии пересекает ось y. Это значение расчётного ответа f(x) для x = 0. Величина b₁ определяет наклон расчетной линии регрессии.
Предсказанные ответы (красные квадраты) – точки линии регрессии, соответствующие входным значениям. Для входа x = 5 предсказанный ответ равен f(5) = 8.33 (представленный крайним левыми квадратом).
Остатки (вертикальные пунктирные серые линии) могут быть вычислены как yᵢ − f(xᵢ) = yᵢ − b₀ − b₁xᵢ для i = 1, …, n. Они представляют собой расстояния между зелёными и красными пунктами. При реализации линейной регрессии вы минимизируете эти расстояния и делаете красные квадраты как можно ближе к предопределённым зелёным кругам.
Пришло время реализовать линейную регрессию в Python. Всё, что вам нужно, – подходящие пакеты, функции и классы.
Пакеты Python для линейной регрессии
NumPy – фундаментальный научный пакет для быстрых операций над одномерными и многомерными массивами. Он облегчает математическую рутину и, конечно, находится в open-source.
Незнакомы с NumPy? Начните с официального гайда.
Пакет scikit-learn – это библиотека, широко используемая в машинном обучении. Она предоставляет значения для данных предварительной обработки, уменьшает размерность, реализует регрессию, классификацию, кластеризацию и т. д. Находится в open-source, как и NumPy.
Начните знакомство с линейными моделями и работой пакета на сайте scikit-learn.
Простая линейная регрессия со scikit-learn
Начнём с простейшего случая линейной регрессии.
Следуйте пяти шагам реализации линейной регрессии:
- Импортируйте необходимые пакеты и классы.
- Предоставьте данные для работы и преобразования.
- Создайте модель регрессии и приспособьте к существующим данным.
- Проверьте результаты совмещения и удовлетворительность модели.
- Примените модель для прогнозов.
Это общие шаги для большинства подходов и реализаций регрессии.
Шаг 1: Импортируйте пакеты и классы
Первым шагом импортируем пакет NumPy и класс LinearRegression
из sklearn.linear_model
:
import numpy as np from sklearn.linear_model import LinearRegression
Теперь у вас есть весь функционал для реализации линейной регрессии.
Фундаментальный тип данных NumPy – это тип массива numpy.ndarray
. Далее под массивом подразумеваются все экземпляры типа numpy.ndarray
.
Класс sklearn.linear_model.LinearRegression
используем для линейной регрессии и прогнозов.
Шаг 2 : Предоставьте данные
Вторым шагом определите данные, с которыми предстоит работать. Входы (регрессоры, x) и выход (предиктор, y) должны быть массивами (экземпляры класса numpy. ndarray
) или похожими объектами. Вот простейший способ предоставления данных регрессии:
x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1)) y = np.array([5, 20, 14, 32, 22, 38])
Теперь у вас два массива: вход x и выход y. Вам нужно вызвать .reshape()
на x, потому что этот массив должен быть двумерным или более точным – иметь одну колонку и необходимое количество рядов. Это как раз то, что определяет аргумент (-1, 1).
Вот как x и y выглядят теперь:
>>> print(x) [[ 5] [15] [25] [35] [45] [55]] >>> print(y) [ 5 20 14 32 22 38]
Шаг 3: Создайте модель
На этом шаге создайте и приспособьте модель линейной регрессии к существующим данным.
Давайте сделаем экземпляр класса LinearRegression
, который представит модель регрессии:
model = LinearRegression()
Эта операция создаёт переменную model
в качестве экземпляра LinearRegression
. Вы можете предоставить несколько опциональных параметров классу LinearRegression
:
- fit_intercept – логический (
True
по умолчанию) параметр, который решает, вычислять отрезок b₀ (True
) или рассматривать его как равный нулю (False
). - normalize – логический (
False
по умолчанию) параметр, который решает, нормализовать входные переменные (True
) или нет (False
). - copy_X – логический (
True
по умолчанию) параметр, который решает, копировать (True
) или перезаписывать входные переменные (False
). - n_jobs – целое или
None
(по умолчанию), представляющее количество процессов, задействованных в параллельных вычислениях.None
означает отсутствие процессов, при -1 используются все доступные процессоры.
Наш пример использует состояния параметров по умолчанию.
Пришло время задействовать model
. Сначала вызовите .fit()
на model
:
model.fit(x, y)
С помощью .fit()
вычисляются оптимальные значение весов b₀ и b₁, используя существующие вход и выход (x и y) в качестве аргументов. Другими словами, .fit()
совмещает модель. Она возвращает self
— переменную model
. Поэтому можно заменить две последние операции на:
model = LinearRegression().fit(x, y)
Эта операция короче и делает то же, что и две предыдущие.
Шаг 4: Получите результаты
После совмещения модели нужно убедиться в удовлетворительности результатов для интерпретации.
Вы можете получить определения (R²) с помощью .score()
, вызванной на model
:
>>> r_sq = model.score(x, y) >>> print('coefficient of determination:', r_sq) coefficient of determination: 0. 715875613747954
.score()
принимает в качестве аргументов предсказатель x и регрессор y, и возвращает значение R².
model
содержит атрибуты .intercept_
, который представляет собой коэффициент, и b₀ с .coef_
, которые представляют b₁:
>>> print('intercept:', model.intercept_) intercept: 5.633333333333329 >>> print('slope:', model.coef_) slope: [0.54]
Код выше показывает, как получить b₀ и b₁. Заметьте, что .intercept_
– это скаляр, в то время как .coef_
– массив.
Примерное значение b₀ = 5.63 показывает, что ваша модель предсказывает ответ 5.63 при x, равном нулю. Равенство b₁ = 0.54 означает, что предсказанный ответ возрастает до 0.54 при x, увеличенным на единицу.
Заметьте, что вы можете предоставить y как двумерный массив. Тогда результаты не будут отличаться:
>>> new_model = LinearRegression(). fit(x, y.reshape((-1, 1))) >>> print('intercept:', new_model.intercept_) intercept: [5.63333333] >>> print('slope:', new_model.coef_) slope: [[0.54]]
Как вы видите, пример похож на предыдущий, но в данном случае .intercept_
– одномерный массив с единственным элементом b₀, и .coef_
– двумерный массив с единственным элементом b₁.
Шаг 5: Предскажите ответ
Когда вас устроит ваша модель, вы можете использовать её для прогнозов с текущими или другими данными.
Получите предсказанный ответ, используя .predict()
:
>>> y_pred = model.predict(x) >>> print('predicted response:', y_pred, sep='\n') predicted response: [ 8.33333333 13.73333333 19.13333333 24.53333333 29.93333333 35.33333333]
Применяя .predict()
, вы передаёте регрессор в качестве аргумента и получаете соответствующий предсказанный ответ.
Вот почти идентичный способ предсказать ответ:
>>> y_pred = model. intercept_ + model.coef_ * x >>> print('predicted response:', y_pred, sep='\n') predicted response: [[ 8.33333333] [13.73333333] [19.13333333] [24.53333333] [29.93333333] [35.33333333]]
В этом случае вы умножаете каждый элемент массива x с помощью model.coef_
и добавляете model.intercept_
в ваш продукт.
Вывод отличается от предыдущего примера количеством измерений. Теперь предсказанный ответ – это двумерный массив, в отличии от предыдущего случая, в котором он одномерный.
Измените количество измерений x до одного, и увидите одинаковый результат. Для этого замените x на x.reshape(-1)
, x.flatten()
или x.ravel()
при умножении с помощью model.coef_
.
На практике модель регрессии часто используется для прогнозов. Это значит, что вы можете использовать приспособленные модели для вычисления выходов на базе других, новых входов:
>>> x_new = np. arange(5).reshape((-1, 1)) >>> print(x_new) [[0] [1] [2] [3] [4]] >>> y_new = model.predict(x_new) >>> print(y_new) [5.63333333 6.17333333 6.71333333 7.25333333 7.79333333]
Здесь .predict()
применяется на новом регрессоре x_new
и приводит к ответу y_new
. Этот пример удобно использует arange()
из NumPy для генерации массива с элементами от 0 (включительно) до 5 (исключительно) – 0, 1, 2, 3, и 4.
О LinearRegression
вы узнаете больше из официальной документации.
Теперь у вас есть своя модель линейной регрессии!
Источник
Нравится Data Science? Другие материалы по теме:
Логистическая регрессия и ROC-анализ — математический аппарат
Введение
Логистическая регрессия — полезный классический инструмент для решения задачи регрессии и классификации. ROC-анализ — аппарат для анализа качества моделей. Оба алгоритма активно используются для построения моделей в медицине и проведения клинических исследований.
Логистическая регрессия получила распространение в скоринге для расчета рейтинга заемщиков и управления кредитными рисками. Поэтому, несмотря на свое «происхождение» из статистики, логистическую регрессию и ROC-анализ почти всегда можно увидеть в наборе Data Mining алгоритмов.
Логистическая регрессия
Логистическая регрессия — это разновидность множественной регрессии, общее назначение которой состоит в анализе связи между несколькими независимыми переменными (называемыми также регрессорами или предикторами) и зависимой переменной. Бинарная логистическая регрессия применяется в случае, когда зависимая переменная является бинарной (т.е. может принимать только два значения). С помощью логистической регрессии можно оценивать вероятность того, что событие наступит для конкретного испытуемого (больной/здоровый, возврат кредита/дефолт и т.д.).
Все регрессионные модели могут быть записаны в виде формулы:
y = F (x_1,\, x_2, \,\dots, \, x_n)
В множественной линейной регрессии предполагается, что зависимая переменная является линейной функцией независимых переменных, т. е.:
y = a\,+\,b_1\,x_1\,+\,b_2\,x_2\,+\,\dots\,+\,b_n\,x_n
Можно ли ее использовать для задачи оценки вероятности исхода события? Да, можно, вычислив стандартные коэффициенты регрессии. Например, если рассматривается исход по займу, задается переменная y со значениями 1 и 0, где 1 означает, что соответствующий заемщик расплатился по кредиту, а 0, что имел место дефолт.
Однако здесь возникает проблема: множественная регрессия не «знает», что переменная отклика бинарна по своей природе. Это неизбежно приведет к модели с предсказываемыми значениями большими 1 и меньшими 0. Но такие значения вообще не допустимы для первоначальной задачи. Таким образом, множественная регрессия просто игнорирует ограничения на диапазон значений для y.
Для решения проблемы задача регрессии может быть сформулирована иначе: вместо предсказания бинарной переменной, мы предсказываем непрерывную переменную со значениями на отрезке [0,1] при любых значениях независимых переменных. Это достигается применением следующего регрессионного уравнения (логит-преобразование):
P = \frac{1}{1+\,e^{-y}}
где P — вероятность того, что произойдет интересующее событие e — основание натуральных логарифмов 2,71…; y — стандартное уравнение регрессии.
Зависимость, связывающая вероятность события и величину y, показана на следующем графике (рис. 1):
Рис. 1 — Логистическая кривая
Поясним необходимость преобразования. Предположим, что мы рассуждаем о нашей зависимой переменной в терминах основной вероятности P, лежащей между 0 и 1. Тогда преобразуем эту вероятность P:
P’ = \log_e \Bigl(\frac{P}{1-P}\Bigr)
Это преобразование обычно называют логистическим или логит-преобразованием. Теоретически P’ может принимать любое значение. Поскольку логистическое преобразование решает проблему об ограничении на 0-1 границы для первоначальной зависимой переменной (вероятности), то эти преобразованные значения можно использовать в обычном линейном регрессионном уравнении. А именно, если произвести логистическое преобразование обеих частей описанного выше уравнения, мы получим стандартную модель линейной регрессии.
Существует несколько способов нахождения коэффициентов логистической регрессии. На практике часто используют метод максимального правдоподобия. Он применяется в статистике для получения оценок параметров генеральной совокупности по данным выборки. Основу метода составляет функция правдоподобия (likehood function), выражающая плотность вероятности (вероятность) совместного появления результатов выборки
L\,(Y_1,\,Y_2,\,\dots,\,Y_k;\,\theta) = p\,(Y_1;\, \theta)\cdot\dots\cdotp\,p\,(Y_k;\,\theta)
Согласно методу максимального правдоподобия в качестве оценки неизвестного параметра принимается такое значение \theta=\theta(Y_1,…,Y_k), которое максимизирует функцию L.
Нахождение оценки упрощается, если максимизировать не саму функцию L, а натуральный логарифм ln(L), поскольку максимум обеих функций достигается при одном и том же значении \theta:
L\,*\,(Y;\,\theta) = \ln\,(L\,(Y;\,\theta)\,) \rightarrow \max
В случае бинарной независимой переменной, которую мы имеем в логистической регрессии, выкладки можно продолжить следующим образом. Обозначим через P_i вероятность появления единицы: P_i=Prob(Y_i=1). Эта вероятность будет зависеть от X_iW, где X_i — строка матрицы регрессоров, W — вектор коэффициентов регрессии:
P_i = F\,(X_i W),\, F(z) = \frac{1}{1+\,e^{-z}}
Логарифмическая функция правдоподобия равна:
L^* = \sum_{i \epsilon\ I_1}ln{P_i(W)} + \sum_{i \epsilon\ I_0}ln{(1-P_i(W))} = \sum_{i=1}^{k} [Y_i \ln {P_i (W)}+(1-Y_i)\ln {(1 — P_i(W))}]
где I_0, I_1— множества наблюдений, для которых Y_i=0 и Y_i=1 соответственно. {-1}\,g_t(W_t)\,=\,W_t\,-\,\Delta W_t
Логистическую регрессию можно представить в виде однослойной нейронной сети с сигмоидальной функцией активации, веса которой есть коэффициенты логистической регрессии, а вес поляризации — константа регрессионного уравнения (рис. 2).
Рис. 2 — Представление логистической регрессии в виде нейронной сети
Однослойная нейронная сеть может успешно решить лишь задачу линейной сепарации. Поэтому возможности по моделированию нелинейных зависимостей у логистической регрессии отсутствуют. Однако для оценки качества модели логистической регрессии существует эффективный инструмент ROC-анализа, что является несомненным ее преимуществом.
Для расчета коэффициентов логистической регрессии можно применять любые градиентные методы: метод сопряженных градиентов, методы переменной метрики и другие.
ROC-анализ
ROC-кривая (Receiver Operator Characteristic) — кривая, которая наиболее часто используется для представления результатов бинарной классификации в машинном обучении. Название пришло из систем обработки сигналов. Поскольку классов два, один из них называется классом с положительными исходами, второй — с отрицательными исходами. ROC-кривая показывает зависимость количества верно классифицированных положительных примеров от количества неверно классифицированных отрицательных примеров.
В терминологии ROC-анализа первые называются истинно положительным, вторые — ложно отрицательным множеством. При этом предполагается, что у классификатора имеется некоторый параметр, варьируя который, мы будем получать то или иное разбиение на два класса. Этот параметр часто называют порогом, или точкой отсечения (cut-off value). В зависимости от него будут получаться различные величины ошибок I и II рода.
В логистической регрессии порог отсечения изменяется от 0 до 1 — это и есть расчетное значение уравнения регрессии. Будем называть его рейтингом.
Для понимания сути ошибок I и II рода рассмотрим четырехпольную таблицу сопряженности (confusion matrix), которая строится на основе результатов классификации моделью и фактической (объективной) принадлежностью примеров к классам.
- TP (True Positives) — верно классифицированные положительные примеры (так называемые истинно положительные случаи).
- TN (True Negatives) — верно классифицированные отрицательные примеры (истинно отрицательные случаи).
- FN (False Negatives) — положительные примеры, классифицированные как отрицательные (ошибка I рода). Это так называемый «ложный пропуск» — когда интересующее нас событие ошибочно не обнаруживается (ложно отрицательные примеры).
- FP (False Positives) — отрицательные примеры, классифицированные как положительные (ошибка II рода). Это ложное обнаружение, т.к. при отсутствии события ошибочно выносится решение о его присутствии (ложно положительные случаи).
Что является положительным событием, а что — отрицательным, зависит от конкретной задачи. Например, если мы прогнозируем вероятность наличия заболевания, то положительным исходом будет класс «Больной пациент», отрицательным — «Здоровый пациент». И наоборот, если мы хотим определить вероятность того, что человек здоров, то положительным исходом будет класс «Здоровый пациент», и так далее.
При анализе чаще оперируют не абсолютными показателями, а относительными — долями (rates), выраженными в процентах:
- Доля истинно положительных примеров (True Positives Rate): TPR = \frac{TP}{TP\,+\,FN}\,\cdot\,100 \,\%
- Доля ложно положительных примеров (False Positives Rate): FPR = \frac{FP}{TN\,+\,FP}\,\cdot\,100 \,\%
Введем еще два определения: чувствительность и специфичность модели. Ими определяется объективная ценность любого бинарного классификатора.
Чувствительность (Sensitivity) — это и есть доля истинно положительных случаев:
S_e = TPR = \frac{TP}{TP\,+\,FN}\,\cdot\,100 \,\%
Специфичность (Specificity) — доля истинно отрицательных случаев, которые были правильно идентифицированы моделью:
S_p = \frac{TN}{TN\,+\,FP}\,\cdot\,100 \,\%
Заметим, что FPR=100-Sp
Попытаемся разобраться в этих определениях.
Модель с высокой чувствительностью часто дает истинный результат при наличии положительного исхода (обнаруживает положительные примеры). Наоборот, модель с высокой специфичностью чаще дает истинный результат при наличии отрицательного исхода (обнаруживает отрицательные примеры). Если рассуждать в терминах медицины — задачи диагностики заболевания, где модель классификации пациентов на больных и здоровых называется диагностическим тестом, то получится следующее:
- Чувствительный диагностический тест проявляется в гипердиагностике — максимальном предотвращении пропуска больных.
- Специфичный диагностический тест диагностирует только доподлинно больных. Это важно в случае, когда, например, лечение больного связано с серьезными побочными эффектами и гипердиагностика пациентов не желательна.
ROC-кривая получается следующим образом:
Для каждого значения порога отсечения, которое меняется от 0 до 1 с шагом d_x (например, 0,01) рассчитываются значения чувствительности Se и специфичности Sp. В качестве альтернативы порогом может являться каждое последующее значение примера в выборке.
Строится график зависимости: по оси Y откладывается чувствительность Se, по оси X — FPR=100-Sp — доля ложно положительных случаев.
Канонический алгоритм построения ROC-кривой
Входы: L — множество примеров f[i] — рейтинг, полученный моделью, или вероятность того, что i-й пример имеет положительный исход; min и max — минимальное и максимальное значения, возвращаемые f; d_x — шаг; P и N — количество положительных и отрицательных примеров соответственно.
- t=min
- повторять
- FP=TP=0
- для всех примеров i принадлежит L {
- если f[i]>=t тогда // этот пример находится за порогом
- если i положительный пример тогда
- { TP=TP+1 }
- иначе // это отрицательный пример
- { FP=FP+1 }
- }
- Se=TP/P*100
- point=FP/N // расчет (100 минус Sp)
- Добавить точку (point, Se) в ROC-кривую
- t=t+d_x
- пока (t>max)
В результате вырисовывается некоторая кривая (рис. 2): для каждого порога необходимо «пробегать» по записям и каждый раз рассчитывать TP и FP. Если же двигаться вниз по набору данных, отсортированному по убыванию выходного поля классификатора (рейтингу), то можно за один проход вычислить значения всех точек ROC-кривой, последовательно обновляя значения TP и FP.
Для идеального классификатора график ROC-кривой проходит через верхний левый угол, где доля истинно положительных случаев составляет 100% или 1,0 (идеальная чувствительность), а доля ложно положительных примеров равна нулю. Поэтому чем ближе кривая к верхнему левому углу, тем выше предсказательная способность модели. Наоборот, чем меньше изгиб кривой и чем ближе она расположена к диагональной прямой, тем менее эффективна модель. Диагональная линия соответствует «бесполезному» классификатору, т.е. полной неразличимости двух классов.
При визуальной оценке ROC-кривых расположение их относительно друг друга указывает на их сравнительную эффективность. Кривая, расположенная выше и левее, свидетельствует о большей предсказательной способности модели. Так, на рис. 4 две ROC-кривые совмещены на одном графике. Видно, что модель «A» лучше.
Рис. 4 — Сравнение ROC-кривых
Визуальное сравнение кривых ROC не всегда позволяет выявить наиболее эффективную модель. Своеобразным методом сравнения ROC-кривых является оценка площади под кривыми. Теоретически она изменяется от 0 до 1,0, но, поскольку модель всегда характеризуются кривой, расположенной выше положительной диагонали, то обычно говорят об изменениях от 0,5 («бесполезный» классификатор) до 1,0 («идеальная» модель).
Эта оценка может быть получена непосредственно вычислением площади под многогранником, ограниченным справа и снизу осями координат и слева вверху — экспериментально полученными точками (рис. 5). Численный показатель площади под кривой называется AUC (Area Under Curve). Вычислить его можно, например, с помощью численного метода трапеций:
AUC = \int f(x)\,dx = \sum_i \Bigl[ \frac{X_{i+1}\,+\,X_i}{2}\Bigr]\,\cdot \,(Y_{i+1}\,-\, Y_i)
Рис. 5 — Площадь под ROC-кривой
С большими допущениями можно считать, что чем больше показатель AUC, тем лучшей прогностической силой обладает модель. Однако следует знать, что:
- показатель AUC предназначен скорее для сравнительного анализа нескольких моделей;
- AUC не содержит никакой информации о чувствительности и специфичности модели.
В литературе иногда приводится следующая экспертная шкала для значений AUC, по которой можно судить о качестве модели:
Идеальная модель обладает 100% чувствительностью и специфичностью. Однако на практике добиться этого невозможно, более того, невозможно одновременно повысить и чувствительность, и специфичность модели. Компромисс находится с помощью порога отсечения, т.к. пороговое значение влияет на соотношение Se и Sp. Можно говорить о задаче нахождения оптимального порога отсечения (optimal cut-off value).
Порог отсечения нужен для того, чтобы применять модель на практике: относить новые примеры к одному из двух классов. Для определения оптимального порога нужно задать критерий его определения, т.к. в разных задачах присутствует своя оптимальная стратегия. Критериями выбора порога отсечения могут выступать:
- Требование минимальной величины чувствительности (специфичности) модели. Например, нужно обеспечить чувствительность теста не менее 80%. В этом случае оптимальным порогом будет максимальная специфичность (чувствительность), которая достигается при 80% (или значение, близкое к нему «справа» из-за дискретности ряда) чувствительности (специфичности).
- Требование максимальной суммарной чувствительности и специфичности модели, т.е. Cutt\underline{\,\,\,}off_o = \max_k (Se_k\,+\,Sp_k)
- Требование баланса между чувствительностью и специфичностью, т.е. когда Se \approx Sp: Cutt\underline{\,\,\,}off_o = \min_k \,\bigl |Se_k\,-\,Sp_k \bigr |
Второе значение порога обычно предлагается пользователю по умолчанию. В третьем случае порог есть точка пересечения двух кривых, когда по оси X откладывается порог отсечения, а по оси Y — чувствительность или специфичность модели (рис. 6).
Рис. 6 — «Точка баланса» между чувствительностью и специфичностью
Существуют и другие подходы, когда ошибкам I и II рода назначается вес, который интерпретируется как цена ошибок. Но здесь встает проблема определения этих весов, что само по себе является сложной, а часто не разрешимой задачей.
Литература
- Цыплаков А. А. Некоторые эконометрические методы. Метод максимального правдоподобия в эконометрии. Учебное пособие.
- Fawcett T. ROC Graphs: Notes and Practical Considerations for Researchers // 2004 Kluwer Academic Publishers.
- Zweig M.H., Campbell G. ROC Plots: A Fundamental Evaluation Tool in Clinical Medicine // Clinical Chemistry, Vol. 39, No. 4, 1993.
- Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves // Proc. Of 23 International Conference on Machine Learning, Pittsburgh, PA, 2006.
Другие материалы по теме:
Применение логистической регрессии в медицине и скоринге
Machine learning в Loginom на примере задачи c Kaggle
Линейная Регрессия Пример Из Реальной Жизни
Я изучаю машинное обучение (линейную регрессию) у проф. Лекция Эндрю. Слушая, когда использовать нормальное уравнение против градиентного спуска, он говорит, что когда число наших функций очень велико(например, 10E6), то нужно использовать градиентный спуск. Мне все понятно, но интересно, может ли кто-нибудь привести мне примеры из реальной жизни, где мы используем такое огромное количество функций?
machine-learning
linear-regression
Поделиться Источник Nusrat 20 апреля 2014 в 21:18
2 ответа
- Адаптивная линейная регрессия
Допустим, у меня есть набор выборок, который состоит из нестационарного стохастического процесса с равномерным распределением вероятностей (гауссовым). Мне нужна адаптивная линейная регрессия по набору выборок. В принципе, я хочу, чтобы строка ‘best-fit’ вела себя определенным образом. У меня есть…
- Контролируемое обучение линейная регрессия
Меня смущает, как работает линейная регрессия в контролируемом обучении. Теперь я хочу сгенерировать оценочную функцию для настольной игры с использованием линейной регрессии, поэтому мне нужны как входные, так и выходные данные. Входные данные — это мое условие платы, и мне нужно соответствующее…
1
Список наборов данных, имеющих большое количество атрибутов :-
1. Ссылка на набор данных о ежедневных и спортивных мероприятиях
2. Ссылка на набор данных объявлений фермы
3. Ссылка на набор данных Arcene
4. Пакет слов Ссылка на набор данных
Выше приведены реальные примеры наборов данных, имеющих большие значения no. атрибутов.
Поделиться Devavrata 21 апреля 2014 в 18:58
1
Например, в классификации текста (например, фильтрация спама email) мы можем использовать в качестве функций униграммы (мешок слов), биграммы, триграммы. В зависимости от размера набора данных количество объектов может быть очень большим.
Поделиться NLPer 21 апреля 2014 в 02:33
Похожие вопросы:
какая функция keypress() применима в реальной жизни
Я делаю пример перемещения следующей статьи, используя keypress() из codeacademy об интерактивных веб-сайтах, и это так трудно получить доступ на веб-сайте, нажмите клавишу один раз, когда он…
Линейная регрессия в MATLAB
Как я мог бы сделать линейную регрессию с несколькими значениями, равными на x с MATLAB? Теперь пример с минимальными данными (не те данные, которые я использую) : y = [1,2,3,4,5,6,7,8,9,10]; x =…
Пример из реальной жизни, когда использовать OUTER / CROSS APPLY в SQL
Я смотрел CROSS / OUTER APPLY с коллегой, и мы изо всех сил пытаемся найти реальные примеры того, где их можно использовать. Я потратил довольно много времени, глядя на то, когда я должен…
Адаптивная линейная регрессия
Допустим, у меня есть набор выборок, который состоит из нестационарного стохастического процесса с равномерным распределением вероятностей (гауссовым). Мне нужна адаптивная линейная регрессия по…
Контролируемое обучение линейная регрессия
Меня смущает, как работает линейная регрессия в контролируемом обучении. Теперь я хочу сгенерировать оценочную функцию для настольной игры с использованием линейной регрессии, поэтому мне нужны как…
Линейная регрессия против точности производительности случайного леса
Если набор данных содержит объекты, некоторые из которых являются категориальными переменными,а некоторые-непрерывными переменными, дерево решений лучше, чем линейная регрессия, поскольку деревья…
Линейная регрессия через эллипс показывает неожиданное поведение
Я рисую эллипс 2D на пустом изображении. Теперь я хочу провести линию через эллипс, чтобы получить главную ось. Зная, что существует множество вариантов (PCA, моменты изображения и т. д.), Я думал,…
Реальный пример из жизни, чтобы сбросить значение autoincrement в mysql
Хочу знать сценарий, в котором нам нужно сбросить значение автоинкремента в базе данных. Если это возможно (пример из реальной жизни, который я ищу).
Примеры из реальной жизни балансировщика сетевой нагрузки?
Даже после долгих поисков в Google я не смог найти простого ответа на этот вопрос. Все, что я смог найти, это балансировщик нагрузки уровня 4, который может обрабатывать миллионы запросов в секунду,…
Линейная регрессия — неверный вывод
У меня есть база данных из двух columns[A, B], где A-входная переменная, а B-целевая переменная. Все значения выражены в целых числах. Мой код: X.shape >>(2540, 1) y.shape >>(2540, 1)…
Простые регрессионные модели в Python by Oleg Nagornyy
Регуляризация линейных моделей
Переобучение
Регуляризация — это метод для уменьшения степени переобучения модели, а значит, прежде чем мы разберемся, что такое регуляризация, нужно понять суть переобучения (overfitting).
Переобучение дает неплавные кривые прогнозирования, т. е. «нерегулярные». Такие плохие сложные кривые прогнозирования обычно характеризуются весовыми значениями, которые имеют очень большие или очень малые величины. Поэтому один из способов уменьшить степень переобучения состоит в том, чтобы не допускать очень малых или больших весовых значений для модели. В этом и заключается суть регуляризации.
Проблема многомерности: Bias-variance trade-off
https://elitedatascience.com/wp-content/uploads/2017/06/Bias-vs.-Variance-v5.png
Линейная регрессия с большим числом предикторов – комплексная модель и характеризуется:
- Достаточно высоким смещением
- Высокой дисперсией
Чем больше предикторов, тем больше риск переобучения модели. Переобучение также связано с размером коэфициентов.
Переобучение – ситуация, в которой обучающая ошибка продолжает снижаться с повышением сложности модели, а тестовая ошибка растет.
Как с этим бороться?
- Отбор наилучших предикторов
- Снижение размерности предикторов
- Регуляризация
Регуляризация — это способ уменьшить сложность модели чтобы предотвратить переобучение или исправить некорректно поставленную задачу. Обычно это достигается добавлением некоторой априорной информации к условию задачи.
В данном случае суть регуляризации состит в том, что мы создаём модель со всеми предикторами, а потом искуственно уменьшаем размер коэффициентов, прибавляя некоторую величину к ошибке.
Ошибка — это то, что минимизируется обучением с помощью одного из примерно десятка численных методов вроде градиентного спуска (gradient descent), итерационного алгоритма Ньютона-Рафсона (iterative Newton-Raphson), L-BFGS, обратного распространения ошибок (back-propagation) и оптимизации роя (swarm optimization).
Чтобы величины весовых значений модели не становились большими, процесс регуляризации штрафует весовые значения добавляя их в вычисление ошибки. Если весовые значения включаются в общую ошибку, которая минимизируется, тогда меньшие весовые значения будут давать меньшие значения ошибки. L1-регуляризация штрафует весовые значения добавлением суммы их абсолютных значений к ошибке.
L2-регуляризация выполняет аналогичную операцию добавлением суммы их квадратов к ошибке. m \left| w_j \right|L(X,y,w)=2n1i=1∑n(xiTw−yi)2+λj=1∑m∣∣∣∣wj∣∣∣∣
Чем меньше λ\lambdaλ, тем выше дисперсия и ниже смещение.
Чем больше λ\lambdaλ, тем ниже дисперсия и выше смещение.
Взяв производную от этой функции, мы получим формулу, которая не имеет аналитического решения, т.е. МНК не подходит. Следовательно, необходимо использовать градиентный спуск.
Лассо регрессия (Least absolute shrinkage and selection operator)
Очень похожа на ридж регрессию. В ней штраф — это сумма модулей значений коэффициентов.
В чем сила ридж и лассо?
• Ридж регрессия снижает размер коэффициентов, а лассо сокращает многие до 0 • Это позволяет снизить размерность (ридж) и выбрать важные предикторы (лассо) • Работает, когда p > n, где p — число предикторов • Работает, когда много коллинеарных предикторов • Обязательно надо делать шкалирование и центрирование, иначе предикторы с высоким стандартным отклонением будут сильно штравоваться.
ElasticNet — комбинация L1 и L2 регуляризации в разных пропорциях.
Примеры линейной регрессии
Формула, которую дал вам Док, умножает возраст на 971.4 и добавляет 1536.2 к результату. Он получил 971.4 и 1536.2 с помощью компьютерной программы линейной регрессии, которая выполнила все трудоемкие вычисления, чтобы найти эти числа. Данные числа определяют конкретную прямую, на которую ложатся исходные данные.
Линейная регрессия – это математический метод оценивания некоего количественного значения (например, суммы в долларах), посредством «взвешивания» одного или нескольких прогнозирующих параметров, таких как возраст, число детей, средний счет в боулинге и так далее. Он был разработан задолго до цифровых компьютеров, и его вечная слава обусловлена привлекательностью для академических исследований.
Если предположить, что линейная регрессия была единственным моделирующим инструментом в арсенале Дока, то мы можем увидеть, как его созданная из подручных средств модель появилась на свет. Подобные инструменты делают допущение, что прямая линия является правильной формой, определяющей отношение каждого из прогнозирующих параметров к искомому количественному показателю. Давайте предположим, что в дополнение к возрасту, ваши данные включали бы «число детей» как прогнозирующий параметр дохода. Введение обоих параметров в регрессию даст формулу вида:
Доход = 1007.8*Возраст -752.35*Число детей +933.6
Звездочка – знак умножения.Влияние нашей новой переменной «число детей», тоже линейное. Это происходит потому, что предполагаемый доход прямолинейно уменьшается на $752.35 за каждого дополнительного ребенка. Мы используем эту формулу, показывающую отношение возраста и числа детей к доходу, чтобы проиллюстрировать то, что важно знать о числах, предоставляемых линейной регрессией.
1) Довольно часто, некорректно полагают, что 1007.8 – это «вес» возраста, а -752.35 – «вес» числа детей. Если бы возраст выражался в месяцах, а не в годах, то новый «вес» был бы разделен на 12 лишь для того, чтобы отразить изменение шкалы. Таким образом, величина «веса» не является мерой важности прогнозирующего параметра, к которому он относится. Называйте эти множители коэффициентами, и вы не ошибетесь и избежите семантической опасности «веса». В модели будет столько же коэффициентов, сколько и прогнозирующих параметров.
Единственное предназначение коэффициентов и, в сущности, всех чисел (технически, значений параметров), производимых регрессией – это сделать так, чтобы формула хорошо сходилась с исходными данными.
2) Обратите внимание, что коэффициент (-752.35), множитель числа детей, имеет отрицательно значение. В реальности это вовсе не означает, что если число детей растет, то предполагаемый доход обязательно уменьшается. Знак перед коэффициентом будет достоверно указывать направление только в том случае, когда он является единственным прогнозирующим параметром. Если имеется два и более прогнозирующих параметра, и между ними существует корреляция, то вполне вероятно, что один параметр будет иметь положительный коэффициент, а другой – отрицательный, вопреки здравому смыслу. Для нашего примера, на самом деле, если бы число детей было бы единственным прогнозирующим параметром, то тогда коэффициент перед ними оказался бы положительным. Но если соединить число детей с возрастом, между которыми существует некоторая корреляция, то получится сбивающий с толку отрицательный коэффициент.
3) Последний параметр регрессии, константа +933.6 существует для того, чтобы удостоверится, что если каждый параметр принимает среднее значение, то результирующий предполагаемый доход тоже окажется средним. Линейная регрессия всегда так работает. Допустим, средний возраст равен 45.67, а среднее число детей – 1.41. Мы можем подставить эти значения в формулу следующим образом:
1007.8*45.67 -752.35*1.41 +933.56 = 45899
И 45899 – действительно, средний доход в исходных данных. После того как коэффициенты умножены на свои соответствующие параметры и просуммированы, в итоге всегда останется добавить эту константу (даже если она равна нулю).
Пошаговых статей, видео, простых определений
Вероятность и статистика> Регрессионный анализ
График простой линейной регрессии для количества осадков.
Регрессионный анализ — это способ найти тенденции в данных. Например, вы можете предположить, что существует связь между тем, сколько вы едите и сколько вы весите; регрессионный анализ может помочь вам количественно оценить это.
Посмотрите видео для краткого обзора:
Не можете посмотреть видео? Кликните сюда.
Регрессионный анализ предоставит вам уравнение для графика, чтобы вы могли делать прогнозы относительно ваших данных. Например, если вы прибавляли в весе в течение последних нескольких лет, он может предсказать, сколько вы будете весить через десять лет, если продолжите набирать вес с той же скоростью. Он также предоставит вам множество статистических данных (включая значение p и коэффициент корреляции), чтобы узнать, насколько точна ваша модель. Большинство курсов по элементарной статистике охватывают самые базовые методы, такие как построение диаграмм рассеяния и выполнение линейной регрессии. Однако вы можете встретить более сложные методы, такие как множественная регрессия.
В комплекте:
- Введение в регрессионный анализ
- Множественный регрессионный анализ
- Переоснащение и как этого избежать
- Статьи по теме
Технологии:
- Регрессия в Minitab
В статистике трудно смотреть на набор случайных чисел в таблице и пытаться разобраться в этом. Например, глобальное потепление может снизить среднее количество снегопадов в вашем городе, и вас просят предсказать, сколько снега, по вашему мнению, выпадет в этом году.Глядя на следующую таблицу, вы можете предположить, что где-то около 10-20 дюймов. Это хорошее предположение, но вы можете сделать лучше, используя регрессию.
По сути, регрессия — это «лучшее предположение» при использовании набора данных для того или иного прогноза. Это подгонка набора точек к графику. Существует целый ряд инструментов, которые могут запускать регрессию для вас, включая Excel, который я использовал здесь, чтобы помочь разобраться в данных о снегопадах:
Просто взглянув на линию регрессии, проходящую через данные, вы можете точно настроить все, что вам нужно. угадай немного.Вы можете видеть, что первоначальное предположение (около 20 дюймов) было неверным. В 2015 году линия будет составлять от 5 до 10 дюймов! Это может быть «достаточно хорошо», но регрессия также дает вам полезное уравнение, которое для этого графика выглядит следующим образом:
y = -2,2923x + 4624,4.
Это означает, что вы можете подставить значение x (год) и получить довольно хорошую оценку количества снегопадов для любого года. Например, 2005 год:
y = -2,2923 (2005) + 4624,4 = 28,3385 дюйма, что довольно близко к фактическому значению в 30 дюймов для этого года.
Лучше всего то, что вы можете использовать уравнение для прогнозов. Например, сколько снега выпадет в 2017 году?
y = 2,2923 (2017) + 4624,4 = 0,8 дюйма.
Регрессия также дает значение R в квадрате, которое для этого графика составляет 0,702. Этот номер говорит вам, насколько хороша ваша модель. Значения варьируются от 0 до 1, где 0 — ужасная модель, а 1 — идеальная модель. Как вы, вероятно, видите, 0. 7 — довольно приличная модель, поэтому вы можете быть достаточно уверены в своих прогнозах погоды!
В начало
Множественный регрессионный анализ используется для проверки наличия статистически значимой связи между наборами переменных.Он используется для поиска тенденций в этих наборах данных.
Анализ множественной регрессии — это почти , то же самое, что и простая линейная регрессия. Единственная разница между простой линейной регрессией и множественной регрессией заключается в количестве предикторов (переменных «x»), используемых в регрессии.
- Простой регрессионный анализ использует одну переменную x для каждой зависимой переменной «y». Например: (x 1 , Y 1 ).
- Множественная регрессия использует несколько переменных «x» для каждой независимой переменной: (x1) 1 , (x2) 1 , (x3) 1 , Y 1 ).
В линейной регрессии с одной переменной вы должны ввести одну зависимую переменную (например, «продажи») против независимой переменной (например, «прибыль»). Но вас может заинтересовать, как различных типов продаж влияют на регрессию. Вы можете настроить свой X 1 как один тип продаж, свой X 2 как другой тип продаж и так далее.
Когда использовать множественный регрессионный анализ.
Обычной линейной регрессии обычно недостаточно, чтобы учесть все реальные факторы, влияющие на результат.Например, на следующем графике показано сравнение одной переменной (количества врачей) с другой переменной (ожидаемая продолжительность жизни женщин).
Изображение: Колумбийский университет
Из этого графика может показаться, что существует взаимосвязь между ожидаемой продолжительностью жизни женщин и количеством врачей в населении. На самом деле, это, вероятно, правда, и можно сказать, что это простое решение: увеличить количество врачей среди населения, чтобы увеличить продолжительность жизни. Но на самом деле вам придется учитывать другие факторы, например, вероятность того, что у врачей в сельской местности может быть меньше образования или опыта. Или, возможно, у них нет доступа к медицинским учреждениям, таким как травматологические центры.
Добавление этих дополнительных факторов заставит вас добавить дополнительные зависимые переменные в регрессионный анализ и создать модель множественного регрессионного анализа.
Вывод множественного регрессионного анализа.
Регрессионный анализ всегда выполняется в программном обеспечении, таком как Excel или SPSS. Выходные данные различаются в зависимости от того, сколько переменных у вас есть, но по сути это тот же тип выходных данных, который вы найдете в простой линейной регрессии.И еще кое-что:
.
- Простая регрессия: Y = b 0 + b 1 x.
- Множественная регрессия: Y = b 0 + b 1 x1 + b 0 + b 1 x2… b 0 … b 1 xn.
Вывод будет включать сводку, аналогичную сводке для простой линейной регрессии, которая включает:
Эти статистические данные помогут вам выяснить, насколько хорошо регрессионная модель соответствует данным. Таблица ANOVA в выходных данных даст вам p-значение и f-статистику.
Минимальный размер выборки
«Ответ на вопрос о размере выборки, по-видимому, частично зависит от целей
исследователя, исследуемых вопросов исследования и типа используемой модели
. Хотя есть несколько исследовательских статей и учебников, дающих
рекомендаций по минимальному размеру выборки для множественной регрессии, немногие согласны с
относительно того, насколько большой является достаточно большим, и не многие обращаются к прогнозирующей стороне MLR ». ~ Грегори Т.Кнофчинский
Если вы заинтересованы в нахождении точных значений квадрата коэффициента множественной корреляции, минимизации
сокращения квадрата коэффициента множественной корреляции или преследуете другую конкретную цель, статью Грегори Кнофчински стоит прочитать, и в ней есть множество ссылок для дальнейшего изучения. Тем не менее, многие люди просто хотят запустить MLS, чтобы получить общее представление о тенденциях, и им не нужны очень конкретные оценки. В этом случае вы можете использовать практическое правило .В литературе широко говорится, что в вашей выборке должно быть более 100 наименований. Хотя иногда этого достаточно, вы будете в большей безопасности, если у вас будет не менее 200 наблюдений или еще лучше — более 400.
В начало
Переоснащение может привести к плохой модели ваших данных.
Переобучение — это когда ваша модель слишком сложна для ваших данных. — это происходит, когда размер вашей выборки слишком мал. Если вы поместите достаточно переменных-предикторов в свою регрессионную модель, вы почти всегда получите модель, которая выглядит значимой.
Хотя переоборудованная модель может очень хорошо соответствовать особенностям ваших данных, она не подойдет для дополнительных тестовых выборок или для всей генеральной совокупности.
p-значений модели, R-квадрат и коэффициенты регрессии могут вводить в заблуждение. По сути, вы слишком многого требуете от небольшого набора данных.
Как избежать переобучения
При линейном моделировании (включая множественную регрессию) у вас должно быть не менее 10-15 наблюдений для каждого члена, который вы пытаетесь оценить. Если меньше, то вы рискуете переобучить свою модель.
«Условия» включают:
Хотя это эмпирическое правило является общепринятым, Грин (1991) идет дальше и предлагает, чтобы минимальный размер выборки для любой регрессии был 50, с дополнительными 8 наблюдениями на член. Например, если у вас есть одна взаимодействующая переменная и три переменные-предикторы, вам понадобится около 45-60 элементов в вашей выборке, чтобы избежать переобучения, или 50 + 3 (8) = 74 элемента, согласно Грину.
Исключения
Из эмпирического правила «10-15» есть исключения. В их числе:
- При наличии мультиколлинеарности в ваших данных или при небольшом размере эффекта. В таком случае вам нужно будет включить больше терминов (хотя, к сожалению, нет практического правила, сколько терминов добавить!).
- Если вы используете логистическую регрессию или модели выживания, возможно, вам удастся обойтись всего лишь с 10 наблюдениями на один предиктор, если у вас нет экстремальных вероятностей событий, небольших размеров эффекта или переменных-предикторов с усеченными диапазонами.(Педуцци и др.)
Как обнаружить и избежать переобучения
Самый простой способ избежать переобучения — увеличить размер выборки за счет сбора большего количества данных. Если вы не можете этого сделать, второй вариант — уменьшить количество предикторов в вашей модели, комбинируя или исключая их. Факторный анализ — это один из методов, который вы можете использовать для определения связанных предикторов, которые могут быть кандидатами для объединения.
1. Перекрестная проверка
Используйте перекрестную проверку для обнаружения переобучения: это разбивает ваши данные, обобщает вашу модель и выбирает модель, которая работает лучше всего. Одна из форм перекрестной проверки — предсказанных R-квадратов . Большинство хороших статистических программ будет включать эту статистику, которая рассчитывается следующим образом:
- Удаление одного наблюдения из ваших данных,
- Оценка уравнения регрессии для каждой итерации,
- Использование уравнения регрессии для прогнозирования удаленного наблюдения.
Перекрестная проверка не является волшебным лекарством для небольших наборов данных, и иногда четкая модель не может быть идентифицирована даже при адекватном размере выборки.
2. Усадка и повторная выборка
Методы сжатия и повторной выборки (например, этот R-модуль) могут помочь вам определить, насколько хорошо ваша модель может соответствовать новому образцу.
3. Автоматизированные методы
Автоматизированную пошаговую регрессию не следует использовать как дополнительное решение для небольших наборов данных. По данным Бабяка (2004),
«Проблем с автоматическим отбором, проводимым таким очень типичным способом, настолько много, что было бы трудно каталогизировать их все [в журнальной статье]. ”
Бабяк также рекомендует избегать одномерного предварительного тестирования или скрининга («скрытый вариант автоматического выбора»), дихотомии непрерывных переменных — что может значительно увеличить количество ошибок типа I или многократного тестирования смешивающих переменных (хотя это может быть нормально, если используется разумно).
Список литературы
Книги:
Гоник Л. (1993). Мультяшный справочник по статистике. HarperPerennial.
Линдстром, Д. (2010). Краткое изложение статистики Шаума, второе издание (Schaum’s Easy Outlines), 2-е издание.McGraw-Hill Education
Журнальные статьи:
- Бабяк, М.А., (2004). «То, что вы видите, может быть не тем, что вы получаете: краткое, нетехническое введение в переоснащение в моделях регрессионного типа». Психосоматическая медицина. 2004 май-июнь; 66 (3): 411-21.
- Грин С.Б., (1991) «Сколько испытуемых требуется для проведения регрессионного анализа?» Многомерное исследование поведения 26: 499–510.
- Peduzzi P.N., et. al (1995). «Важность событий для каждой независимой переменной в многомерном анализе, II: точность и точность оценок регрессии.» Журнал клинической эпидемиологии 48: 1503–10.
- Peduzzi P.N., et. al (1996). «Имитационное исследование количества событий на переменную в логистическом регрессионном анализе». Журнал клинической эпидемиологии 49: 1373–9.
В начало
Посетите наш канал YouTube, чтобы увидеть сотни видеороликов по элементарной статистике, включая регрессионный анализ с использованием различных инструментов, таких как Excel и TI-83.
- Аддитивная модель и мультипликативная модель
- Как построить диаграмму рассеяния.
- Как рассчитать коэффициенты корреляции Пирсона.
- Как вычислить значение теста линейной регрессии.
- Тест Чоу для разделенных наборов данных
- Выбор вперед
- Что такое кригинг?
- Как найти уравнение линейной регрессии.
- Как найти точку пересечения наклона регрессии.
- Как найти наклон линейной регрессии.
- Как найти стандартную ошибку наклона регрессии.
- Mallows ’Cp
- Коэффициент достоверности: что это такое и как его найти.
- Квадратичная регрессия.
- Регрессия четвертого порядка
- Пошаговая регрессия
- Нестандартизованный коэффициент
- Далее: : Слабые инструменты
Интересный факт: Знаете ли вы, что регрессия предназначена не только для создания линий тренда. Это также отличный способ найти n-й член квадратичной последовательности.
В начало
Определения
- ANCOVA.
- Допущения и условия регресса.
- Бета / Стандартизированные коэффициенты.
- Что такое бета-вес?
- Билинейная регрессия
- Тест Бреуша-Пагана-Годфри
- Расстояние повара.
- Что такое ковариата?
- Регрессия Кокса.
- Данные о бестрендовом движении.
- Экзогенность.
- Алгоритм Гаусса-Ньютона.
- Что такое общая линейная модель?
- Что такое обобщенная линейная модель?
- Что такое тест Хаусмана?
- Что такое гомоскедастичность?
- Влиятельные данные.
- Что такое инструментальная переменная?
- Отсутствие посадки
- Регрессия Лассо.
- Алгоритм Левенберга – Марквардта
- Какая линия лучше всего подходит?
- Что такое логистическая регрессия?
- Что такое расстояние Махаланобиса? Модель
- Неверная спецификация.
- Полиномиальная логистическая регрессия.
- Что такое нелинейная регрессия?
- Упорядоченная логит / упорядоченная логистическая регрессия
- Что такое регрессия методом наименьших квадратов?
- Переоборудование.
- Экономные модели.
- Что такое коэффициент корреляции Пирсона?
- Регрессия Пуассона.
- Пробит Модель.
- Что такое интервал прогнозирования?
- Что такое регуляризация?
- Регулярные наименьшие квадраты.
- Регуляризованная регрессия
- Что такое относительный вес?
- Что такое остаточные участки?
- Обратная причинность.
- Регрессия хребта
- Среднеквадратичная ошибка.
- Полупараметрические модели
- Смещение одновременности.
- Модель одновременных уравнений.
- Что такое ложная корреляция?
- Модель структурных уравнений
- Каковы интервалы допуска?
- Анализ тенденций
- Параметр настройки
- Что такое взвешенная регрессия наименьших квадратов?
- Y Hat объяснил.
В начало
Посмотрите видео для шагов:
Не можете посмотреть видео? Кликните сюда.
Регрессия — это подгонка данных к линии (Minitab также может выполнять другие типы регрессии, например квадратичную регрессию). Когда вы обнаружите регрессию в Minitab, вы получите диаграмму разброса ваших данных вместе с линией наилучшего соответствия, плюс Minitab предоставит вам:
- Стандартная ошибка (насколько точки данных отклоняются от среднего).
- R в квадрате: значение от 0 до 1, которое показывает, насколько хорошо ваши точки данных соответствуют модели.
- Скорректированный R 2 (корректирует R 2 с учетом точек данных, которые не соответствуют модели).
Регрессия в Minitab занимает всего пару щелчков мышью на панели инструментов и доступна через меню Stat.
Пример вопроса : Найдите регрессию в Minitab для следующего набора точек данных, которые сравнивают калории, потребляемые в день, и вес:
Калорий, потребляемых ежедневно (вес в фунтах): 2800 (140), 2810 (143), 2805 (144) , 2705 (145), 3000 (155), 2500 (130), 2400 (121), 2100 (100), 2000 (99), 2350 (120), 2400 (121), 3000 (155).
Шаг 1: Введите данные в два столбца в Minitab .
Шаг 2: Щелкните «Stat», затем щелкните «Regression», а затем щелкните «Fitted Line Plot».”
Регрессия в выборе Minitab.
Шаг 3: Щелкните имя переменной для зависимого значения в левом окне. Для этого типового вопроса мы хотим знать, влияет ли потребление калорий на вес , поэтому калории являются независимой переменной (Y), а вес — зависимой переменной (X). Щелкните «Калории», а затем «Выбрать».
Шаг 4: Повторите шаг 3 для зависимой переменной X , веса.
Выбор переменных для регрессии Minitab.
Шаг 5: Нажмите «ОК». Minitab создаст линейный график регрессии в отдельном окне.
Шаг 4: Прочтите результаты. Помимо создания графика регрессии, Minitab предоставит вам значения для S, R-sq и R-sq (adj) в верхнем правом углу окна подобранного линейного графика.
с = стандартная ошибка.
R-Sq = Коэффициент детерминации
R-Sq (adj) = Скорректированный коэффициент детерминации (Скорректированный R в квадрате).
Вот и все!
————————————————— —————————-
Нужна помощь с домашним заданием или контрольным вопросом? С Chegg Study вы можете получить пошаговые ответы на свои вопросы от эксперта в данной области.Ваши первые 30 минут с репетитором Chegg бесплатны!
Комментарии? Нужно опубликовать исправление? Пожалуйста, оставьте комментарий на нашей странице в Facebook .
Линейная регрессия: простые шаги, видео. Найти уравнение, коэффициент, наклон
Состав:
Что такое простая линейная регрессия?
Как найти уравнение линейной регрессии:
- Как найти уравнение линейной регрессии вручную .
- Найдите уравнение линейной регрессии в Excel .
- TI83 Линейная регрессия.
- TI 89 Линейная регрессия
Поиск сопутствующих товаров:
- Как найти коэффициент регрессии.
- Найдите наклон линейной регрессии.
- Найдите значение теста линейной регрессии.
Кредитное плечо:
- Кредитное плечо в линейной регрессии.
Наверх
Посмотрите видео для краткого введения в линейную регрессию:
Не можете посмотреть видео? Кликните сюда.
Если вы только начинаете изучать регрессионный анализ, простой линейный метод — это первый тип регрессии, с которым вы столкнетесь в классе статистики.
Линейная регрессия — это наиболее широко используемый статистический метод ; это способ смоделировать отношения между двумя наборами переменных. В результате получается уравнение линейной регрессии, которое можно использовать для прогнозирования данных.
Большинство программных пакетов и калькуляторов могут рассчитывать линейную регрессию. Например:
Вы также можете найти линейную регрессию вручную.
Перед тем, как приступить к расчетам, вы всегда должны строить диаграмму рассеяния, чтобы увидеть, подходят ли ваши данные примерно к линии. Почему? Потому что регрессия будет всегда даст вам уравнение, и это может не иметь никакого смысла, если ваши данные следуют экспоненциальной модели. Если вы знаете, что взаимосвязь нелинейна, но не знаете точно, что это за взаимосвязь, одним из решений является использование моделей линейных базисных функций, которые популярны в машинном обучении.
Этимология
«Линейный» означает линию.Слово Регрессия пришло от ученого XIX века сэра Фрэнсиса Гальтона, который ввел термин «регрессия к посредственности» (на современном языке это регрессия к среднему. Он использовал этот термин для описания феномена того, как природа стремится к смягчать лишние физические черты из поколения в поколение (например, чрезмерный рост).
Зачем нужны линейные отношения?
С линейными отношениями, то есть линиями, легче работать, и большинство явлений естественно связаны линейно.Если переменные не связаны линейно с , тогда некоторые математические вычисления могут преобразовать эту связь в линейную, чтобы исследователю (то есть вам) было легче понять.
Что такое простая линейная регрессия?
Вы, вероятно, знакомы с построением линейных графиков с одной осью X и одной осью Y. Переменная X иногда называется независимой переменной, а переменная Y — зависимой переменной. Простая линейная регрессия отображает одну независимую переменную X против одной зависимой переменной Y.Технически в регрессионном анализе независимая переменная обычно называется переменной-предиктором, а зависимая переменная — переменной критерия. Однако многие люди просто называют их независимыми и зависимыми переменными. Более продвинутые методы регрессии (например, множественная регрессия) используют несколько независимых переменных.
Регрессионный анализ может дать линейных или нелинейных графиков. Линейная регрессия — это когда отношения между вашими переменными можно описать прямой линией.Нелинейные регрессии образуют изогнутые линии. ( ** )
Простая линейная регрессия для количества осадков за год.
Регрессионный анализ почти всегда выполняется компьютерной программой, поскольку выполнение уравнений вручную требует очень много времени.
** Поскольку это вводная статья, я сделал ее простой. Но на самом деле существует важное техническое различие между линейным и нелинейным, которое станет еще более важным, если вы продолжите изучать регрессию.Подробнее см. В статье о нелинейной регрессии.
К началу
Регрессионный анализ используется для поиска уравнений, соответствующих данным. Получив уравнение регрессии, мы можем использовать модель для прогнозов. Один из видов регрессионного анализа — это линейный анализ. Когда коэффициент корреляции показывает, что данные, вероятно, могут предсказать будущие результаты, а диаграмма разброса данных выглядит как прямая линия, вы можете использовать простую линейную регрессию, чтобы найти прогностическую функцию.Если вы помните из элементарной алгебры, уравнение для прямой: y = mx + b . В этой статье показано, как получить данные, рассчитать линейную регрессию и найти уравнение y ’= a + bx . Примечание : Если вы берете статистику AP, вы можете увидеть уравнение, записанное как b 0 + b 1 x, что одно и то же (вы просто используете переменные b 0 + b 1 вместо a + b.
Посмотрите видео или прочтите приведенные ниже инструкции, чтобы вручную найти уравнение линейной регрессии.
Не можете посмотреть видео? Кликните сюда.
Все еще не уверены? Посмотрите репетиторов на Chegg.com. Ваши первые 30 минут бесплатно!
Уравнение линейной регрессии
Линейная регрессия — это способ моделирования взаимосвязи между двумя переменными. Вы также можете узнать это уравнение как формулу наклона . Уравнение имеет вид Y = a + bX, где Y — зависимая переменная (то есть переменная, которая идет по оси Y), X — независимая переменная (т. Е.е. он нанесен на ось X), b — наклон линии, а a — точка пересечения с y.
Первый шаг в поиске уравнения линейной регрессии — определить, существует ли связь между двумя переменными. Это часто является суждением исследователя. Вам также понадобится список ваших данных в формате x-y (т. Е. Два столбца данных — независимые и зависимые переменные).
Предупреждения:
- Тот факт, что две переменные связаны, не означает, что одна вызывает другую.Например, хотя существует взаимосвязь между высокими баллами GRE и лучшей успеваемостью в аспирантуре, это не означает, что высокие баллы GRE приводят к хорошей успеваемости в аспирантуре.
- Если вы попытаетесь найти уравнение линейной регрессии для набора данных (особенно с помощью автоматизированной программы, такой как Excel или TI-83), вы, , найдете его , но это не обязательно означает, что уравнение является подходящим. подходит для ваших данных. Один из методов состоит в том, чтобы сначала построить диаграмму рассеяния, чтобы увидеть, соответствуют ли данные примерно линии , прежде чем вы попытаетесь найти уравнение линейной регрессии.
Как найти уравнение линейной регрессии: шаги
Шаг 1: Составьте диаграмму своих данных, заполняя столбцы так же, как если бы вы заполняли диаграмму, если бы вы находили коэффициент корреляции Пирсона.
Тема | Возраст x | Уровень глюкозы у | xy | x 2 | y 2 | 1 | 43 | 99 | 4257 | 1849 | 9801 |
---|---|---|---|---|---|
2 | 21 | 65 | 1365 | 441 | 4225 | 3 | 25 | 79 | 1975 | 625 | 6241 |
4 | 42 | 75 | 3150 | 1764 | 5625 | 5 | 57 | 87 | 4959 | 3249 | 7569 |
6 | 59 | 81 | 4779 | 3481 | 6561 |
Σ | 247 | 486 | 20485 | 11409 | 40022 |
Из приведенной выше таблицы Σx = 247, Σy = 486, Σxy = 20485, Σx2 = 11409, Σy2 = 40022.n — размер выборки (в нашем случае 6).
Шаг 2: Используйте следующие уравнения, чтобы найти a и b.
a = 65,1416
b = ,385225
Щелкните здесь, чтобы получить простые пошаговые инструкции по решению этой формулы.
Найдите :
- ((486 × 11,409) — ((247 × 20,485)) / 6 (11,409) — 247 2 )
- 484979/7445
- = 65,14
Найти b :
- (6 (20,485) — (247 × 486)) / (6 (11409) — 247 2 )
- (122 910 — 120 042) / 68 454 — 247 2
- 2 868/7 445
- = .385225
Шаг 3: Вставьте значения в уравнение .
y ’= a + bx
y’ = 65,14 + 0,385225x
Вот как найти уравнение линейной регрессии вручную!
Понравилось объяснение? Ознакомьтесь со Справочником по статистике практического мошенничества, в котором есть еще сотни пошаговых решений, подобных этому!
* Обратите внимание на , что этот пример имеет низкий коэффициент корреляции и поэтому не годится для предсказания чего-либо.
К началу
Посмотрите видео или прочтите следующие шаги:
Уравнение линейной регрессии Microsoft Excel: шаги
Шаг 1: Установите Data Analysis Toolpak , если он еще не установлен. Для получения инструкций по загрузке пакета инструментов анализа данных щелкните здесь.
Шаг 2: Введите данные в два столбца в Excel. Например, введите данные «x» в столбец A и данные «y» в столбец b. Не оставляйте пустых ячеек между записями.
Шаг 3: Щелкните вкладку «Анализ данных» на панели инструментов Excel.
Шаг 4: Нажмите «регрессия» во всплывающем окне, а затем нажмите «ОК».
Всплывающее окно «Анализ данных» имеет множество параметров, включая линейную регрессию.
Шаг 5: Выберите входной диапазон Y. Вы можете сделать это двумя способами: либо выбрать данные на листе, либо ввести расположение данных в поле «Введите диапазон Y». Например, если ваши данные Y находятся в диапазоне от A2 до A10, введите «A2: A10» в поле «Диапазон ввода Y».
Шаг 6: Выберите входной диапазон X , выбрав данные на листе или введя расположение данных в поле «Входной диапазон X».
Шаг 7: Выберите место, куда вы хотите поместить выходной диапазон , выбрав пустую область на листе или введя местоположение, куда вы хотите поместить ваши данные в поле «Диапазон вывода».
Шаг 8: Нажмите «ОК». Excel рассчитает линейную регрессию и заполнит ваш рабочий лист результатами.
Совет: информация об уравнении линейной регрессии дается в последнем выходном наборе (столбец коэффициентов). Первая запись в строке «Перехват» — «а» (точка пересечения по оси Y), а первая запись в столбце «X» — «b» (наклон).
Вернуться к началу
Посмотрите видео для шагов:
Не можете посмотреть видео? Кликните сюда.
Две линии линейной регрессии.
TI 83 Линейная регрессия: обзор
Линейная регрессия утомительна и подвержена ошибкам, когда выполняется вручную, но вы можете выполнить линейную регрессию за время, необходимое для ввода нескольких переменных в список. Линейная регрессия даст вам разумный результат, только если ваши данные выглядят как линия на диаграмме рассеяния, поэтому, прежде чем вы найдете уравнение для линии линейной регрессии , вы можете сначала просмотреть данные на диаграмме рассеяния. См. Эту статью, чтобы узнать, как построить диаграмму рассеяния на TI 83.
TI 83 Линейная регрессия: шаги
Пример задачи: Найдите уравнение линейной регрессии (вида y = ax + b) для значений x 1, 2, 3, 4, 5 и значений y 3, 9, 27, 64 и 102.
Шаг 1: Нажмите STAT, затем нажмите ENTER, чтобы открыть экран списков. Если у вас уже есть данные в L1 или L2, очистите данные: переместите курсор на L1, нажмите CLEAR, а затем ENTER. Повторите для L2.
Шаг 2: Введите переменные x по очереди. Следуйте за каждым числом, нажимая клавишу ENTER. Для нашего списка вы должны ввести:
1 ENTER
2 ENTER
3 ENTER
4 ENTER
5 ENTER
Шаг 3: Используйте клавиши со стрелками для перехода к следующему столбцу L2.
Шаг 4: Введите переменные y по очереди. Следуйте за каждым числом, нажимая клавишу ввода. Для нашего списка вы должны ввести:
3 ENTER
9 ENTER
27 ENTER
64 ENTER
102 ENTER
Шаг 5: Нажмите кнопку STAT, затем с помощью клавиши прокрутки выделите «CALC».
Шаг 6: Нажмите 4, чтобы выбрать «LinReg (ax + b)». Нажмите ENTER, а затем снова ENTER. TI 83 вернет переменные, необходимые для уравнения. Просто вставьте указанные переменные (a, b) в уравнение линейной регрессии (y = ax + b).Для приведенных выше данных это y = 25,3x — 34,9 .
Вот как выполнить линейную регрессию TI 83!
Вернуться к началу
Помните из алгебры, что наклон — это «m» в формуле y = mx + b .
В формуле линейной регрессии наклон равен a в уравнении y ’= b + ax .
В основном это одно и то же. Итак, если вас попросят найти наклон линейной регрессии, все, что вам нужно сделать, это найти b так же, как вы нашли бы m .
Вычислить линейную регрессию вручную, мягко говоря, непросто. Есть лот суммирования (это символ Σ, что означает сложение). Основные шаги приведены ниже, или вы можете посмотреть видео в начале этой статьи. В видео гораздо больше подробно рассказывается о том, как проводить суммирование. Поиск уравнения также даст вам наклон. Если вы не хотите определять уклон вручную (или если вы хотите проверить свою работу), вы также можете использовать Excel.
Как найти наклон линейной регрессии: шаги
Шаг 1: Найдите следующие данные из предоставленной информации: Σx, Σy, Σxy, Σx 2 , Σy 2 .Если вы не помните, как получить эти переменные из данных, прочтите эту статью о том, как найти коэффициент корреляции Пирсона. Выполните указанные здесь шаги, чтобы создать таблицу и найти Σx, Σy, Σxy, Σx 2 и Σy 2 .
Шаг 2: Вставьте данные в формулу b (нет необходимости находить a ).
Если формулы пугают вас, вы можете найти более подробные инструкции о том, как работать с формулой, здесь: Как найти уравнение линейной регрессии: обзор.
Как найти наклон регрессии в Excel 2013
Подпишитесь на наш канал Youtube, чтобы получить больше советов и рекомендаций по статистике.
Вернуться к началу
Коэффициент регрессии — это то же самое, что наклон линии уравнения регрессии . Уравнение для коэффициента регрессии, которое вы найдете в тесте AP Statistics: B 1 = b 1 = Σ [(x i — x) (y i — y)] / Σ [ (x i — x) 2 ].«Y» в этом уравнении — это среднее значение y, а «x» — среднее значение x.
Вы можете найти коэффициент регрессии вручную (как указано в разделе вверху этой страницы).
Однако вам не нужно рассчитывать коэффициент регрессии вручную в тесте AP — вы воспользуетесь калькулятором TI-83. Почему? Вычисление линейной регрессии вручную занимает очень много времени (дайте себе около 30 минут, чтобы провести расчеты и проверить их), и из-за огромного количества вычислений , которое вы должны выполнить, очень высока вероятность того, что вы сделаете математические ошибки. Когда вы найдете уравнение линейной регрессии на TI83, вы получите коэффициент регрессии как часть ответа.
Пример задачи : Найдите коэффициент регрессии для следующего набора данных:
x: 1, 2, 3, 4, 5.
y: 3, 9, 27, 64, 102.
Шаг 1: Нажмите STAT, затем нажмите ENTER, чтобы войти в СПИСКИ. Вам может потребоваться очистить данные, если у вас уже есть числа в L1 или L2. Чтобы очистить данные: переместите курсор на L1, нажмите CLEAR, а затем ENTER. При необходимости повторите для L2.
Шаг 2: Введите свои x-данные в список. Нажимайте клавишу ENTER после каждого ввода.
1 ВВОД
2 ВВОД
3 ВВОД
4 ВВОД
5 ВВОД
Шаг 3: Прокрутите до следующего столбца L2 с помощью клавиш со стрелками в верхнем правом углу клавиатуры.
Шаг 4: Введите y-данные:
3 ENTER
9 ENTER
27 ENTER
64 ENTER
102 ENTER
Шаг 5: Нажмите кнопку STAT, затем выделите «CALC. ”Нажмите ENTER
Шаг 6: Нажмите 4, чтобы выбрать «LinReg (ax + b)». Нажмите Ввод. TI 83 вернет переменные, необходимые для уравнения линейной регрессии. Искомое значение> коэффициент регрессии> равно b, что составляет 25,3 для этого набора данных.
Вот и все!
Вернуться к началу
Две линии линейной регрессии.
Значения теста линейной регрессии используются в простой линейной регрессии точно так же, как значения теста (например, z-оценка или T-статистика) используются при проверке гипотез.Вместо работы с z-таблицей вы будете работать с таблицей t-распределения. Значение теста линейной регрессии сравнивается со статистикой теста, чтобы помочь вам поддержать или отклонить нулевую гипотезу.
Значение теста линейной регрессии: шаги
Пример вопроса : Для набора данных с размером выборки 8 и r = 0,454 найдите значение теста линейной регрессии.
Примечание : r — коэффициент корреляции.
Шаг 1: Найдите r, коэффициент корреляции, , если он еще не был указан вам в вопросе.В этом случае дается r (r = 0,0454). Не знаете, как найти r? См .: Коэффициент корреляции, чтобы узнать, как найти r.
Шаг 2: Используйте следующую формулу для вычисления тестового значения ( n — размер выборки):
Как решить формулу:
- Замените переменные своими числами:
T = .454√ ((8 — 2) / (1 — [. 454] 2 ))- Вычтем 2 из n:
8-2 = 6 - Квадрат r:
.454 × 0,454 = 0,206116 - Вычесть шаг (3) из 1:
1 — .206116 = .793884 - Разделите шаг (2) на шаг (4):
6 / .793884 = 7,557779 - Извлеките квадратный корень из шага (5):
√7,557779 = 2,744
- Умножьте r на шаг (6):
. 454 × 2,744 = 1,24811026
- Вычтем 2 из n:
Значение теста линейной регрессии, T = 1,24811026
Вот и все!
Нахождение тестовой статистики
Значение теста линейной регрессии бесполезно, если вам не с чем его сравнивать. Сравните свое значение со статистикой теста. Статистика теста также представляет собой t-показатель (t), определяемый следующим уравнением:
t = наклон линии регрессии выборки / стандартная ошибка наклона.
См .: Как найти наклон линейной регрессии / Как найти стандартную ошибку наклона (TI-83).
Вы можете найти рабочий пример расчета значения теста линейной регрессии (с альфа-уровнем) здесь: Коэффициенты корреляции.
Вернуться к началу
Точки данных с кредитным плечом могут перемещать линию линейной регрессии.Они склонны быть выбросами. Выброс — это точка с очень высоким или очень низким значением.
Очки влияния
Если оценки параметров (стандартное отклонение выборки, дисперсия и т. Д.) Значительно изменяются при удалении выброса, эта точка данных называется влиятельным наблюдением .
Чем больше точка данных отличается от среднего других значений x, тем больше у нее рычагов . Чем больше кредитное плечо у точки, тем выше вероятность того, что точка будет влиять на (т. е. это может изменить оценки параметров).
Кредитное плечо в линейной регрессии: как оно влияет на графики
В линейной регрессии влиятельная точка (выброс) будет пытаться подтянуть линию линейной регрессии к себе. На графике ниже показано, что происходит с линией линейной регрессии при включении выброса A:
Две линии линейной регрессии. Влиятельная точка A включена в верхнюю строку, но не в нижнюю.
Выбросы с крайними значениями X (значения, не попадающие в диапазон других точек данных) имеют больше возможностей для линейной регрессии, чем точки с меньшими экстремальными значениями x.Другими словами, экстремальных выбросов значения x сдвинут линию на больше, чем менее экстремальные значения.
На следующем графике показана точка данных за пределами диапазона других значений. Значения варьируются от 0 до примерно 70 000. Эта одна точка имеет значение x около 80 000, что выходит за пределы диапазона. Это влияет на линию регрессии намного больше, чем на точку на первом изображении выше, которая находилась внутри диапазона других значений.
Исключительный показатель с высоким долгом. Точка сместила график еще больше, потому что она выходит за пределы диапазона других значений.
Как правило, выбросы, значения которых близки к среднему значению x, будут иметь меньшее влияние, чем выбросы, по направлению к краям диапазона. Выбросы со значениями x за пределами диапазона будут иметь больший рычаг. Значения, которые являются крайними по оси Y (по сравнению с другими значениями), будут иметь большее влияние, чем значения, близкие к другим значениям Y.
Нравится видео? Подпишитесь на наш канал Youtube.
Связь с аффинным преобразованием
Линейная регрессия бесконечно связана с аффинным преобразованием.Формула y ′ = b + ax на самом деле не является линейной… это аффинная функция, которая определяется как линейная функция плюс преобразование. Так что это действительно следует называть аффинной регрессией, а не линейной!
Список литературы
Эдвардс, А. Л. Введение в линейную регрессию и корреляцию. Сан-Франциско, Калифорния: У. Х. Фриман, 1976.
Эдвардс, А. Л. Множественная регрессия и анализ дисперсии и ковариации. Сан-Франциско, Калифорния: У. Х. Фриман, 1979.
. ————————————————— —————————-
Нужна помощь с домашним заданием или контрольным вопросом? С Chegg Study вы можете получить пошаговые ответы на свои вопросы от эксперта в данной области.Ваши первые 30 минут с репетитором Chegg бесплатны!
Комментарии? Нужно опубликовать исправление? Пожалуйста, оставьте комментарий на нашей странице в Facebook .
Коэффициент детерминации (R в квадрате): определение, расчет
Содержание :
Коэффициент детерминации (R в квадрате)
Коэффициент детерминации R 2 используется для анализа того, как различия в одной переменной могут быть объяснены разницей во второй переменной.Например, , когда человек забеременеет, имеет прямое отношение к тому, когда он рожает.
Более конкретно, R-квадрат дает вам процентное изменение y, объясняемое переменными x. Диапазон составляет от 0 до 1 (т.е. от 0% до 100% вариации y можно объяснить переменными x).
Посмотрите это видео, чтобы ознакомиться с кратким определением r в квадрате и узнать, как его найти:
Не можете посмотреть видео? Кликните сюда.
Коэффициент детерминации R 2 аналогичен коэффициенту корреляции , R.Формула коэффициента корреляции покажет вам, насколько сильна линейная связь между двумя переменными. R в квадрате — это квадрат коэффициента корреляции, r (отсюда и термин r в квадрате).
Нахождение R в квадрате / Коэффициент детерминации
Нужна помощь с домашним заданием? Посетите нашу страницу обучения!
Шаг 1: Найдите коэффициент корреляции r (он может быть указан вам в вопросе). Пример, r = 0.543 .
Шаг 2: Возведите коэффициент корреляции в квадрат.
0,543 2 = ,295
Шаг 3: Преобразуйте коэффициент корреляции в проценты .
,295 = 29,5%
Вот и все!
Значение коэффициента детерминации
Коэффициент детерминации можно представить как процент. Это дает вам представление о том, сколько точек данных попадает в результаты линии, образованной уравнением регрессии.Чем выше коэффициент, тем больший процент точек проходит линия при построении точек данных и линии. Если коэффициент равен 0,80, то 80% точек должны попадать в линию регрессии. Значения 1 или 0 будут означать, что линия регрессии представляет все или никакие данные соответственно. Более высокий коэффициент является показателем лучшего соответствия наблюдениям.
CoD может быть отрицательным , хотя обычно это означает, что ваша модель плохо подходит для ваших данных.Он также может стать отрицательным, если вы не установили перехват.
Полезность R
2
Полезность R 2 заключается в его способности находить вероятность будущих событий, попадающих в пределы прогнозируемых результатов. Идея состоит в том, что если добавить больше выборок, коэффициент будет показывать вероятность падения новой точки на линии.
Даже если существует сильная связь между двумя переменными, определение не доказывает причинно-следственную связь. Например, исследование дней рождения может показать, что большое количество дней рождения происходит в течение одного или двух месяцев.Это не означает, что беременность наступает по прошествии времени или смене времен года.
Синтаксис
Коэффициент детерминации обычно записывается как R 2 _p. «P» указывает количество столбцов данных, что полезно при сравнении R 2 различных наборов данных.
В начало
Что такое скорректированный коэффициент детерминации?
Скорректированный коэффициент детерминации (скорректированный R-квадрат) — это поправка для коэффициента детерминации, которая учитывает числа переменных в наборе данных. Он также наказывает вас за очки, не соответствующие модели.
Возможно, вы знаете, что небольшое количество значений в наборе данных (слишком маленький размер выборки) может привести к недостоверной статистике, но вы можете не знать, что слишком много точек данных также может привести к проблемам. Каждый раз, когда вы добавляете точку данных в регрессионный анализ, R 2 будет увеличиваться. R 2 никогда не уменьшается. Следовательно, чем больше очков вы добавите, тем лучше будет казаться, что регрессия «соответствует» вашим данным.Если ваши данные не совсем умещаются в строке, может возникнуть соблазн продолжить добавление данных, пока вы не найдете более подходящего.
Некоторые из добавленных вами баллов будут значительными (соответствовать модели), а другие — нет. R 2 не заботится о незначительных моментах. Чем больше вы добавите, тем выше коэффициент детерминации .
Скорректированный R 2 можно использовать для включения более подходящего числа переменных, что избавит вас от соблазна продолжать добавлять переменные в ваш набор данных. Скорректированный R 2 будет увеличиваться только в том случае, если новая точка данных улучшит регрессию больше, чем вы ожидаете случайно. R 2 не включает все точки данных, всегда ниже, чем R 2 и может быть отрицательным (хотя обычно положительным). Отрицательные значения вероятны, если R 2 близок к нулю — после настройки значение немного опустится ниже нуля.
Подробнее см .: Скорректированный R-квадрат.
Посетите мой канал на Youtube, чтобы получить больше советов по статистике и помощи!
Список литературы
Гоник, Л.(1993). Мультяшный справочник по статистике. HarperPerennial.
Kotz, S .; и др., ред. (2006), Энциклопедия статистических наук, Wiley.
Vogt, W.P. (2005). Словарь статистики и методологии: нетехническое руководство для социальных наук. МУДРЕЦ.
————————————————— —————————-
Нужна помощь с домашним заданием или контрольным вопросом? С Chegg Study вы можете получить пошаговые ответы на свои вопросы от эксперта в данной области. Ваши первые 30 минут с репетитором Chegg бесплатны!
Комментарии? Нужно опубликовать исправление? Пожалуйста, оставьте комментарий на нашей странице в Facebook .
Точечная диаграмма / Точечная диаграмма: определение, примеры, Excel / TI-83 / TI-89 / SPSS
Состав:
Что такое диаграмма рассеяния?
Графики разброса
(также называемые графиками разброса ) аналогичны линейным графикам. На линейном графике используется линия на оси X-Y для построения непрерывной функции, а на точечной диаграмме используется точек для представления отдельных фрагментов данных.В статистике эти графики полезны, чтобы увидеть, связаны ли две переменные друг с другом. Например, точечная диаграмма может предложить линейную зависимость (т. Е. Прямую линию).
Посмотрите видео, чтобы увидеть пример того, как вручную построить диаграмму рассеяния.
Не можете посмотреть видео? Кликните сюда.
Диаграмма рассеяния, предполагающая линейную зависимость.
Точечные диаграммы также называются точечными диаграммами, точечными диаграммами, точечными диаграммами и точечными диаграммами.
Корреляция в диаграммах рассеяния
Связь между переменными называется корреляцией.Корреляция — это просто еще одно слово, обозначающее «отношения». Например, ваш вес связан (коррелирован) с тем, сколько вы едите. Есть два типа корреляции: положительная корреляция и отрицательная корреляция. Если точки данных образуют линию от начала координат от низких значений x и y к высоким значениям x и y, то точки данных — это с положительной корреляцией , как на приведенном выше графике. Если график начинается с высоких значений y и продолжается до низких значений y, тогда график с отрицательной корреляцией .
Вы можете думать о положительной корреляции как о чем-то, что дает положительный результат. Например, чем больше вы тренируетесь, тем лучше ваше сердечно-сосудистое здоровье. «Положительный» не обязательно означает «хорошо»! Чем больше вы курите, тем выше вероятность рака, и чем больше вы водите машину, тем больше вероятность того, что вы попадете в автомобильную аварию.
В начало
3D точечная диаграмма
Трехмерный график рассеяния — это график рассеяния с тремя осями. Например, следующий трехмерный график разброса показывает оценки учащихся по трем предметам: чтение (ось y), письмо (ось x) и математика (ось z).
Учащийся A получил 100 баллов по письму и математике и 90 по чтению, а студент B получил 50 баллов по письму, 30 по чтению и 15 по математике. Для нескольких точек довольно легко построить трехмерные графики, но как только вы начнете разбираться в более крупных наборах данных, вам захочется использовать технологии. К сожалению, в Excel нет возможности создавать эти диаграммы. Статистические программы, обычно доступные в колледжах и университетах (например, SAS), могут их создавать. Доступно довольно много бесплатных вариантов, но я рекомендую:
- Plotly — это простой способ создать трехмерную диаграмму онлайн.
- Gnuplot: загружаемая программа. Легко использовать по сравнению с другими программами.
- R: Также загружаемый. Имеет довольно крутую кривую обучения, но справляется с большинством статистических вычислений. Если вам нужен общий пакет stst (в отличие от того, который просто создает диаграммы), это лучший вариант.
В начало
Что такое пузырьковая диаграмма?
Что такое пузырьковая диаграмма?
Пузырьковый график, показывающий суммы Medicare по услуге / специальности. Изображение: CMS.губ.
Пузырьковая диаграмма — это способ показать, как переменные связаны друг с другом. Она похожа на точечную диаграмму, только вместо точек пузырьки разного размера.
Пузырьковые диаграммы — хороший выбор, если ваши данные имеют 3 серии / характеристики со связанным значением; Другими словами, вам нужно:
- категория со значениями для оси x,
- — категория со значениями для оси Y, а —
- категория со значениями размеров пузырей.
Они часто используются в финансовых целях и для использования с квадрантами декартовой плоскости.
Типы пузырьковой диаграммы
В самой основной форме большие пузыри указывают на большие значения. Размещение пузыря по осям x и y дает вам информацию о том, что представляет собой пузырек. На этой диаграмме показана длина инвестиций (ось X), цена на момент покупки (ось Y) и относительный размер инвестиций на сегодняшний день.
Цветные пузырьковые диаграммы используют цвет для сортировки пузырьков по категориям. Например, я могу отсортировать свою инвестиционную диаграмму по акциям, облигациям и паевым инвестиционным фондам:
Картограмма — это пузырьковая диаграмма карты, на которой по осям x и y отложены долгота и широта.Размер пузыря может указывать на численность населения, количество нефтяных вышек, природные погодные явления или другие географические данные.
Графики иногда называют размерами:
- Двумерные диаграммы имеют только значения x и y. Они эквивалентны диаграмме рассеяния.
- Трехмерные диаграммы имеют оси x-y и размер пузырьков.
- Четырехмерные диаграммы имеют оси x-y, размер и цвет пузырьков.
В начало
Как построить диаграмму рассеяния: обзор
Простой график рассеяния.
Диаграмма рассеяния дает вам визуальное представление о том, что происходит с вашими данными. Точечные графики похожи на линейные графики. Единственное отличие состоит в том, что на линейном графике есть непрерывная линия, а на точечной диаграмме — ряд точек. Диаграммы разброса в статистике создают основу для простой линейной регрессии , где мы берем диаграммы разброса и пытаемся создать пригодную для использования модель с помощью функций.Фактически, регрессия пытается провести черту через все эти точки.
Вернуться к началу
Сделайте точечную диаграмму вручную
Чтобы вручную создать диаграмму рассеяния, нужно выполнить всего три шага.
Постройте точечную диаграмму: шаги
Пример вопроса: создать диаграмму рассеяния для следующих данных:
x | y |
---|---|
3 | 25 |
4,1 | 25 |
5 | 30 |
6 | 29 |
6.1 | 42 |
6,3 | 46 |
Шаг 1: Постройте график. Обозначьте оси x и y. Выберите диапазон, который включает максимумы и минимумы из заданных данных. Например, наши значения x изменяются от 3 до 6,3, поэтому диапазон от 3 до 7 будет подходящим.
Шаг 2: Нарисуйте первую точку на графике. Наша первая точка (3,25).
Шаг 3: . Нарисуйте оставшиеся точки на графике.
Вот и все!
В начало
Как построить диаграмму рассеяния в Excel
В этом разделе я расскажу, как создать диаграмму рассеяния в Excel, а также расскажу о некоторых дополнительных параметрах, таких как форматирование диаграммы, добавление меток и добавление линии тренда (уравнение линейной регрессии).
Посмотрите видео по шагам в Excel 365. Вы найдете более старую версию (2007–2013) ниже шагов:
Если вы не можете посмотреть видео, нажмите здесь.
Ступеньки
Шаг 1. Введите данные в два столбца (прокрутите вниз до второго примера, чтобы увидеть несколько снимков экрана).
Шаг 2: Нажмите «Вставить», затем нажмите «Разброс».
Шаг 3: Выберите тип участка. Например, щелкните первый значок (разброс только с маркерами).
Форматирование
Удалить легенду.
Шаг 1. Щелкните легенду правой кнопкой мыши и нажмите «Удалить».
Очистить белое пространство
Иногда ваши маркеры будут сгруппированы вверху или внизу справа на графике.Вот как избавиться от этого пробела, отформатировав горизонтальную и вертикальную оси.
Шаг 1. Щелкните вкладку «Макет», затем щелкните «Оси».
Шаг 2: Щелкните «Первичный горизонтальный», затем нажмите «Дополнительные основные горизонтальные параметры».
Шаг 3: Щелкните переключатель «Фиксированное значение» и затем введите значение, в котором должна начинаться горизонтальная ось. Нажмите «Закрыть».
Шаг 4: Повторите шаги с 1 по 3, выбрав «Вертикальный» вместо горизонтального.
Добавление меток диаграмм
Excel обычно добавляет ненужные метки или не учитывает нужные метки осей.Чтобы удалить ненужные ярлыки, вы можете щелкнуть и удалить. Вот как добавить ярлык:
Шаг 1. Перейдите на вкладку «Макет».
Шаг 2: Щелкните заголовки «Ось», а затем «Заголовок основной горизонтальной оси».
Шаг 3: Выберите позицию. например, вам может понадобиться заголовок под осью.
Шаг 4: Щелкните текст и введите новую этикетку.
Шаг 5: Повторите шаги с 1 по 4, выбрав «вертикальный» для вертикальной оси.
Совет . Если вам не нравится вертикальное расположение заголовка оси, щелкните правой кнопкой мыши и выберите «Формат заголовка оси.»Щелкните« Выравнивание », а затем выберите направление текста (т. Е. Горизонтальное).
Добавление линии тренда
Шаг 1: Щелкните вкладку «Макет».
Шаг 2. Щелкните «Линия тренда», а затем «Дополнительные параметры линии тренда».
Шаг 3. Щелкните «Показать уравнение в поле диаграммы», а затем нажмите «Закрыть».
Пример 2 : Создайте диаграмму разброса в Microsoft Excel, на которой будут нанесены следующие данные исследования зависимости между ростом и весом пациентов с преддиабетом:
Рост (дюймов): 72, 71,70,67,65,64 , 64,63,62,60
Вес (фунты): 180, 178,190,150,145,132,170,120,143,98
Шаг 1: Введите данные в электронную таблицу. Для правильной работы точечной диаграммы ваши данные должны быть введены в два столбца. В приведенном ниже примере показаны данные, введенные для роста (столбец A) и веса (столбец B).
Шаг 2: Выделите свои данные. Чтобы выделить данные, щелкните левой кнопкой мыши в верхнем левом углу данных и затем перетащите мышь в нижний правый угол.
Шаг 3: Нажмите кнопку «Вставить» на ленте , затем нажмите «Разброс», затем нажмите «Разброс только с маркерами». Microsoft Excel создаст диаграмму рассеяния из ваших данных и отобразит диаграмму рядом с вашими данными в электронной таблице.
Совет: Если вы хотите изменить данные (и, следовательно, ваш график), нет необходимости повторять всю процедуру. Когда вы вводите новые данные в любой из столбцов, Microsoft Excel автоматически вычисляет изменение и мгновенно отображает новый график.
В начало
Инструкции MATLAB
Используйте команду SCATTER (X, Y, S, C).
- Векторы X и Y должны быть одного размера.
- S — площадь каждого пузыря (в точках в квадрате).S может быть вектором или скаляром. Если скалярный, все маркеры будут одного размера.
- C — цвет производителя.
Точечная диаграмма в Minitab
Посмотрите видео о том, как создать диаграмму рассеяния в Minitab:
Не можете посмотреть видео? Кликните сюда.
Изображение: Penn State
Шаг 1: Введите данные в два столбца . Один столбец должен быть переменной x (независимая переменная), а второй столбец должен быть переменной y (зависимой переменной).Убедитесь, что вы поместили заголовок для ваших данных в первую строку каждого столбца — это упростит создание диаграммы рассеяния на шагах 4 и 5.
Шаг 2: Щелкните «График» на панели инструментов, а затем щелкните «График рассеяния».
Шаг 3: Щелкните «Простой» график рассеяния. В большинстве случаев это вариант, который вы будете использовать для диаграмм рассеяния в элементарной статистике. Вы можете выбрать один из других (например, диаграмму рассеяния с линиями), но вам редко понадобится их использовать.
Шаг 4: Щелкните имя вашей переменной y в левом окне, затем щелкните «Выбрать», чтобы переместить эту переменную y в поле переменной y.
Шаг 5: Щелкните имя своей переменной x в левом окне, затем щелкните «Выбрать», чтобы переместить эту переменную x в поле переменной x.
Шаг 6: Нажмите «ОК», чтобы создать диаграмму рассеяния в Minitab. График появится в отдельном окне.
Совет: Если вы хотите изменить отметки (интервал для оси x или оси y), дважды щелкните одно из чисел, чтобы открыть окно редактирования масштаба, где вы можете изменить различные параметры для вашего диаграмма рассеяния, включая отметки.
В начало
Как создать диаграмму рассеяния SPSS
В IBM SPSS Statistics есть несколько различных вариантов диаграмм рассеяния: Простое разбросание, Матричное разбросание, Простая точка, Наложение разброса и 3D-разброс. Какой тип диаграммы рассеяния вы выберете, в основном зависит от того, сколько переменных вы хотите построить:
- Простая диаграмма рассеяния отображает одну переменную относительно другой.
- Матричный точечный график отображает все возможные комбинации двух или более числовых переменных относительно друг друга
- Простой точечный график отображает одну категориальную переменную или одну непрерывную переменную.
- Наложенная диаграмма рассеяния отображает две или более пары переменных.
- 3D-диаграммы рассеяния — это трехмерные графики трех числовых переменных.
Посмотрите видео, чтобы узнать, как построить диаграмму рассеяния SPSS с помощью построителя диаграмм:
Не можете посмотреть видео? Кликните сюда.
Как создать диаграмму рассеяния SPSS с помощью диалогового меню Legacy
Шаг 1: Щелкните «Графики», , затем наведите указатель мыши на «Устаревшие диалоги», затем щелкните «Точечная диаграмма / точка».
Шаг 2: Выберите тип точечной диаграммы. В этом примере щелкните «Простой разброс».
Шаг 3: Нажмите кнопку «Определить» , чтобы открыть окно «Простая диаграмма рассеяния».
Шаг 4: Щелкните переменную, которую вы хотите отобразить на оси Y , а затем щелкните стрелку слева от поля выбора «Ось Y».
Шаг 4: Щелкните переменную, которую вы хотите отобразить на оси X , а затем щелкните стрелку слева от поля выбора «Ось X». Нажмите «ОК», чтобы построить диаграмму рассеяния.
Вот и все!
Совет: Вам не нужно выбирать метки значений по, но если вы это делаете, метки значений используются как метки точек для диаграммы рассеяния. Если вы не выберете переменную для маркировки наблюдений, выбросы и экстремумы могут быть помечены номерами наблюдений.
В начало
Точечная диаграмма на TI-89: обзор
Создание диаграммы рассеяния на TI-89 включает три этапа: доступ к редактору матрицы данных, ввод значений X и Y и последующее построение графика данных.
ТИ-89
Точечная диаграмма на TI-89: Шаги:
Пример задачи: построить диаграмму рассеяния для следующих данных: (1,6), (2,8), (3,9), (4,11) и (5,14).
Доступ к редактору матрицы данных
Шаг 1. Нажмите ПРИЛОЖЕНИЯ, затем перейдите к редактору «Данные / матрица», нажмите ENTER и затем выберите «новый».
Шаг 2: Прокрутите вниз до «Переменная» и введите желаемое имя. Например, введите «scatterone». Примечание: вам не нужно нажимать клавишу АЛЬФА для доступа к альфа-клавиатуре.Просто введите!
Шаг 3: Нажмите ENTER ENTER.
Ввод значений X и Y
Шаг 1: Введите значения X в столбец «c1». Нажимайте ENTER после каждой записи.
Для нашего списка вам нужно будет нажать:
1 ENTER
2 ENTER
3 ENTER
4 ENTER
5 ENTER
Шаг 2: Введите значения Y под столбцом «c2» (используйте клавиши со стрелками для прокрутки к верхнему краю столбца). Нажимайте ENTER после каждой записи.
Для нашего списка вам нужно будет нажать:
6 ENTER
8 ENTER
9 ENTER
11 ENTER
14 ENTER
Графическое изображение данных
Шаг 1: Нажмите F2 для настройки графика.
Шаг 2: Нажмите F1.
Шаг 3: Выберите «разброс» рядом с «типом графика»
Шаг 4. Установите флажок рядом с «типом метки»
Шаг 5: Прокрутите до поля «x» и нажмите АЛЬФА) 1, чтобы ввести «c1».
Шаг 6: Прокрутите до поля «y» и нажмите ALPHA) 2, чтобы ввести «c2».
Шаг 7: Нажмите ENTER ENTER.
Шаг 8: Нажмите ромбовидную клавишу F3, чтобы просмотреть диаграмму рассеяния.
Шаг 9: Нажмите F2, а затем 9, чтобы график рассеяния отображался в правильном окне для данных.
Вот и все!
Посетите наш канал YouTube, чтобы получить больше советов и помощи!
В начало
TI 83 Точечная диаграмма
Посмотрите видео с шагами:
Не можете посмотреть видео? Кликните сюда.
TI 83 Точечная диаграмма: обзор
Создание точечной диаграммы на графическом калькуляторе TI-83 — легкий ветерок с простым в использовании меню LIST. Чтобы построить график рассеяния TI 83 , вам понадобится набор двумерных данных. Двумерные данные — это данные, которые можно отобразить на оси XY: вам понадобится список значений «x» (например, вес) и список значений «y» (например, рост). Значения XY могут быть в двух отдельных списках или они могут быть записаны как координаты XY (x, y). Как только они у вас появятся, это так же просто, как ввести списки в калькулятор и выбрать график.
TI 83 Точечная диаграмма: шаги
Пример задачи: Создайте диаграмму рассеяния TI 83 для следующих координат (2, 3), (4, 4), (6, 9), (8, 11) и (10, 12).
Шаг 1: Нажмите STAT, затем нажмите ENTER, чтобы открыть экран списков. Если у вас уже есть данные в L1 или L2, очистите данные: переместите курсор на L1, нажмите CLEAR, а затем ENTER. Повторите для L2.
Шаг 2: Введите переменные x по очереди. Следуйте за каждым числом, нажимая клавишу ENTER. Для нашего списка вы должны ввести:
2 ENTER
4 ENTER
6 ENTER
8 ENTER
10 ENTER
Шаг 3: Используйте клавиши со стрелками для перехода к следующему столбцу L2.
Шаг 4: Введите переменные y по очереди. Следуйте за каждым числом, нажимая клавишу ввода. Для нашего списка вы должны ввести:
3 ENTER
4 ENTER
9 ENTER
11 ENTER
12 ENTER
Шаг 5: Нажмите 2nd, затем нажмите STATPLOT (клавиша Y =).
Шаг 6: Нажмите ENTER, чтобы войти в StatPlots для Plot1.
Шаг 7: Нажмите ENTER, чтобы включить Plot1.
Шаг 8: Перейдите к следующей строке («Тип») и выделите диаграмму рассеяния (первое изображение).Нажмите Ввод.
Шаг 9: Стрелка вниз до «Xlist». Если «L1» не отображается, нажмите 2-ю и 1. Стрелку вниз до «Ylist». Если «L2» не отображается, нажмите 2-й и 2-й.
Шаг 10: Нажмите ZOOM, затем 9. На экране должна появиться диаграмма рассеяния.
Совет : Нажмите TRACE и нажимайте кнопки со стрелками вправо и влево, чтобы перемещаться от точки к точке, отображая значения XY для этих точек.
Вот как построить точечную диаграмму TI 83!
Потеряли путеводитель? Загрузите новый здесь с веб-сайта TI.
Посетите наш канал Youtube, чтобы получить дополнительную статистику, помощь и советы!
Список литературы
Бейер, У. Х. Стандартные математические таблицы CRC, 31-е изд. Бока Ратон, Флорида: CRC Press, стр. 536 и 571, 2002.
Агрести А. (1990) Анализ категориальных данных. Джон Вили и сыновья, Нью-Йорк.
Kotz, S .; и др., ред. (2006), Энциклопедия статистических наук, Wiley.
Vogt, W.P. (2005). Словарь статистики и методологии: нетехническое руководство для социальных наук. МУДРЕЦ.
————————————————— —————————-
Нужна помощь с домашним заданием или контрольным вопросом? С Chegg Study вы можете получить пошаговые ответы на свои вопросы от эксперта в данной области. Ваши первые 30 минут с репетитором Chegg бесплатны!
Комментарии? Нужно опубликовать исправление? Пожалуйста, оставьте комментарий на нашей странице в Facebook .
Регрессионный анализ — формулы, объяснения, примеры и определения
Что такое регрессионный анализ?
Регрессионный анализ — это набор статистических методов, используемых для оценки взаимосвязей между зависимой переменной и одной или несколькими независимыми переменными Независимая переменная Независимая переменная — это входные данные, предположения или драйверы, которые изменяются для оценки их влияния на зависимую переменную. (результат).. Его можно использовать для оценки силы взаимосвязи между переменными и для моделирования будущей взаимосвязи между ними.
Регрессионный анализ включает несколько вариантов, таких как линейный, множественный линейный и нелинейный. Наиболее распространены простые линейные и множественные линейные модели. Нелинейный регрессионный анализ обычно используется для более сложных наборов данных, в которых зависимые и независимые переменные показывают нелинейную взаимосвязь.
Регрессионный анализ предлагает множество приложений в различных дисциплинах, включая финансы.
Регрессионный анализ — предположения линейной модели
Линейный регрессионный анализ основан на шести фундаментальных предположениях:
- Зависимые и независимые переменные показывают линейную зависимость между наклоном и точкой пересечения.
- Независимая переменная не случайна.
- Значение невязки (ошибки) равно нулю.
- Значение невязки (ошибки) постоянно для всех наблюдений.
- Значение невязки (ошибки) не коррелировано по всем наблюдениям.
- Остаточные (ошибочные) значения подчиняются нормальному распределению.
Регрессионный анализ — Простая линейная регрессия
Простая линейная регрессия — это модель, которая оценивает взаимосвязь между зависимой переменной и независимой переменной. Простая линейная модель выражается с помощью следующего уравнения:
Y = a + bX + ϵ
Где:
- Y — Зависимая переменная
- X — Независимая (объясняющая) переменная
- a — Пересечение
- b — Наклон
- ϵ — Остаточный (ошибка)
Регрессионный анализ — Множественная линейная регрессия
Множественный линейный регрессионный анализ по существу аналогичен простой линейной модели, за исключением того, что в модели используются несколько независимых переменных.Математическое представление множественной линейной регрессии:
Y = a + b
X 1 + c X 2 + d X 3 + ϵ
Где:
- Y — Зависимая переменная
- X 1 , X 2 , X 3 — Независимые (объясняющие) переменные
- a — Пересечение
- b, c, d — Наклоны
- ϵ — Невязка (ошибка)
Множественная линейная регрессия подчиняется тем же условиям, что и простая линейная модель. Однако, поскольку в множественном линейном анализе есть несколько независимых переменных, существует еще одно обязательное условие для модели:
- Неколлинеарность: Независимые переменные должны показывать минимальную корреляцию друг с другом. Если независимые переменные сильно коррелированы друг с другом, будет трудно оценить истинные отношения между зависимыми и независимыми переменными.
Регрессионный анализ в финансах
Регрессионный анализ имеет несколько приложений в финансах.Например, статистический метод является фундаментальным для модели ценообразования капитальных активов (CAPM). Модель ценообразования капитальных активов (CAPM). Модель ценообразования капитальных активов (CAPM) — это модель, которая описывает взаимосвязь между ожидаемой доходностью и риском ценной бумаги. Формула CAPM показывает, что доходность ценной бумаги равна безрисковой доходности плюс премия за риск на основе бета-версии этой ценной бумаги. По сути, уравнение CAPM — это модель, которая определяет взаимосвязь между ожидаемой доходностью актива и премией за рыночный риск.
Анализ также используется для прогнозирования доходности ценных бумаг на основе различных факторов или для прогнозирования эффективности бизнеса. Узнайте больше о методах прогнозирования в курсе CFI по бюджетированию и прогнозированию!
1. Бета и CAPM
В финансах для расчета бета-бета используется регрессионный анализ. Бета (β) инвестиционной ценной бумаги (т. Е. Акции) является мерой ее волатильности доходности относительно всего рынка. Он используется в качестве меры риска и является неотъемлемой частью модели ценообразования капитальных активов (CAPM).Компания с более высокой бета-версией имеет больший риск, а также большую ожидаемую прибыль. (волатильность доходности по отношению к рынку в целом) для акции. Это можно сделать в Excel с помощью функции наклона Функция наклона Функция наклона относится к категории статистических функций Excel. Он вернет наклон линии линейной регрессии через точки данных в известных_y и известных_x. В финансовом анализе SLOPE может быть полезен при расчете бета-версии акции. Формула = LOPE (известные_y, известные_x) Функция использует расширение.
Скачать бесплатный бета-калькулятор CFI Калькулятор бета-версии Этот бета-калькулятор позволяет измерить волатильность доходности отдельной акции относительно всего рынка. Бета (β) инвестиционной ценной бумаги (т. Е. Акции) является мерой ее волатильности доходности относительно всего рынка. Он используется как мера риска и является неотъемлемой частью Cap!
2. Прогнозирование доходов и расходов
При прогнозировании финансовой отчетности Финансовое прогнозирование Финансовое прогнозирование — это процесс оценки или прогнозирования того, как бизнес будет работать в будущем.В этом руководстве о том, как построить финансовый прогноз для компании, может быть полезно провести множественный регрессионный анализ, чтобы определить, как изменения в определенных допущениях или драйверах бизнеса повлияют на доходы или расходы в будущем. Например, может быть очень высокая корреляция между количеством продавцов, нанятых компанией, количеством магазинов, которыми они управляют, и доходом, который приносит бизнес.
В приведенном выше примере показано, как использовать функцию прогноза Функция прогнозирования Функция прогнозирования относится к категории статистических функций Excel.Он рассчитает или спрогнозирует для нас будущую стоимость с использованием существующих значений. В финансовом моделировании функция прогноза может быть полезна при вычислении статистической ценности сделанного прогноза. Например, если мы знаем прошлые доходы и в Excel, чтобы рассчитать доход компании на основе количества показанных объявлений.
Узнайте больше о методах прогнозирования в курсе CFI по бюджетированию и прогнозированию!
Инструменты регрессии
Excel остается популярным инструментом для проведения базового регрессионного анализа в финансах, однако есть еще много более сложных статистических инструментов, которые можно использовать.
Python и R — мощные языки программирования, ставшие популярными для всех типов финансового моделирования, включая регрессию. Эти методы составляют основную часть науки о данных и машинного обучения, где модели обучаются обнаруживать эти отношения в данных.
Узнайте больше о регрессионном анализе, Python и машинном обучении в сертификации CFI Business Intelligence & Data Analysis.
Дополнительные ресурсы
CFI предлагает аналитика по финансовому моделированию и оценке (FMVA) ® Стать сертифицированным аналитиком финансового моделирования и оценки (FMVA) ® Сертификация CFI по финансовому моделированию и оценке (FMVA) ® поможет вам обрести уверенность в себе. необходимость в вашей финансовой карьере.Запишитесь сегодня! программа сертификации для тех, кто хочет вывести свою карьеру на новый уровень. Чтобы узнать больше о связанных темах, ознакомьтесь со следующими бесплатными ресурсами CFI:
- Анализ поведения затрат 10 самых важных навыков финансового моделирования и то, что требуется для хорошего финансового моделирования в Excel.Важнейшие навыки: бухгалтерский учет
- Методы прогнозированияМетоды прогнозированияЛучшие методы прогнозирования. В этой статье мы объясним четыре типа методов прогнозирования доходов, которые финансовые аналитики используют для прогнозирования будущих доходов.
- Метод High-Low Метод High-Low В учете затрат метод high-low — это метод, используемый для разделения смешанных затрат на переменные и постоянные. Хотя метод высокого-низкого
Что такое линейная регрессия? | Примеры линейной регрессии
Линейная регрессия количественно определяет взаимосвязь между одной или несколькими прогностическими переменными и одной выходной переменной . Линейная регрессия обычно используется для прогнозного анализа и моделирования. Например, его можно использовать для количественной оценки относительного влияния возраста, пола и диеты (переменные-предикторы) на рост (переменная результата). Линейная регрессия также известна как множественная регрессия , многомерная регрессия , обычная регрессия наименьших квадратов (МНК) и регрессия . В этом посте будут показаны примеры линейной регрессии, включая пример простой линейной регрессии и пример множественной линейной регрессии .
Попробуйте свою собственную линейную регрессию!
Пример простой линейной регрессии
В таблице ниже приведены некоторые данные с первых дней существования итальянской швейной компании Benetton. Каждая строка в таблице показывает продажи Benetton за год и сумму, потраченную на рекламу в этом году. В этом случае интересующий нас результат — это продажи — это то, что мы хотим спрогнозировать. Если мы используем рекламу в качестве переменной-предиктора, линейная регрессия оценивает, что Продажи = 168 + 23 Рекламы .То есть, если расходы на рекламу увеличатся на один миллион евро, то ожидается, что продажи вырастут на 23 миллиона евро, а если бы не было рекламы, мы бы ожидали, что объем продаж составит 168 миллионов евро.
Пример множественной линейной регрессии
Линейная регрессия с одной переменной-предиктором известна как простая регрессия . В реальных приложениях обычно используется более одной переменной-предиктора. Такие регрессии называются множественной регрессией . Для получения дополнительной информации ознакомьтесь с этим сообщением о том, почему вам не следует использовать множественную линейную регрессию для анализа ключевых драйверов с примерами данных для примеров множественной линейной регрессии.
Возвращаясь к примеру Benetton, мы можем включить год переменную в регрессию, что дает результат продаж = 323 + 14 рекламы + 47 лет. Интерпретация этого уравнения заключается в том, что каждый дополнительный миллион евро расходов на рекламу приведет к дополнительным 14 миллионам евро продаж, и что продажи будут расти из-за факторов, не связанных с рекламой, на 47 миллионов евро в год.
Попробуйте свою собственную линейную регрессию!
Проверка качества регрессионных моделей
Оценка регрессии — вещь относительно простая. Сложность использования регрессии — избегать использования неправильной регрессии. Ниже приведены стандартные регрессионные диагностики для более ранней регрессии.
В столбце Оценка показаны значения, использованные в уравнениях ранее. Эти оценки также известны как коэффициенты , параметры и . Столбец Standard Error дает количественную оценку неопределенности оценок. Стандартная ошибка для рекламы относительно мала по сравнению с оценкой, которая говорит нам о том, что оценка является довольно точной, на что также указывает высокое значение t (, что составляет оценка / стандартное ) и небольшое p — значение. Кроме того, статистика R-Squared 0,98 очень высока, что позволяет предположить, что это хорошая модель.
Ключевым предположением линейной регрессии является то, что в анализ включены все соответствующие переменные. Мы можем увидеть важность этого предположения, посмотрев, что происходит, когда включается год . Мало того, что реклама стала намного менее важной (с пониженным коэффициентом с 23 до 14), но и увеличилась стандартная ошибка. Коэффициент больше не является статистически значимым (то есть значение p- 0,22 выше стандартного порогового значения.05). Это означает, что, хотя оценка эффекта от рекламы составляет 14, мы не можем быть уверены, что истинный эффект не равен нулю.
В дополнение к просмотру статистики, показанной в таблице выше, существует ряд дополнительных технических диагностических средств, которые необходимо изучить при проверке регрессионных моделей, включая проверку выбросов , факторов инфляции дисперсии , гетероскедастичности , автокорреляции , а иногда и нормальность остатков.Эта диагностика также выявляет чрезвычайно высокий коэффициент инфляции отклонения (VIF) , равный 55 для каждого из Рекламы и Года. Поскольку эти две переменные сильно коррелированы, невозможно разделить их относительные эффекты, т. Е. Они смешаны.
Терминология
Переменные-предикторы
также известны как ковариаты , , независимые переменные , , регрессоры , , факторы , и особенности , среди прочего.Выходная переменная также известна как зависимая переменная и переменная ответа .
Попробуйте свою собственную линейную регрессию!
Мы надеемся, что этот пост дал вам ответ «Что такое линейная регрессия»! Узнайте больше о терминологии науки о данных в нашей серии статей «Что такое» или бесплатно исследуйте собственную линейную регрессию.
2.9 — Примеры простой линейной регрессии
Пример 1: Данные о рождаемости среди подростков и уровне бедности
Этот набор данных размером n = 51 относится к 50 штатам и округу Колумбия в США (бедность.txt). Переменные: y = коэффициент рождаемости в 2002 году на 1000 женщин в возрасте от 15 до 17 лет и x = уровень бедности, который представляет собой процент населения штата, проживающего в домохозяйствах с доходами ниже установленного федеральным уровнем бедности. (Источник данных: Mind On Statistics , 3-е издание, Utts and Heckard).
График данных ниже (коэффициент рождаемости по вертикали) показывает в целом линейную зависимость, в среднем, с положительным наклоном. По мере увеличения уровня бедности рождаемость женщин в возрасте от 15 до 17 лет также имеет тенденцию к увеличению.
На следующем графике показана линия регрессии, наложенная на данные.
Уравнение подобранной линии регрессии приведено в верхней части графика.Уравнение действительно должно указывать, что оно предназначено для «средней» рождаемости (или «предсказанная» рождаемость тоже подойдет), потому что уравнение регрессии описывает среднее значение y как функцию одной или нескольких x-переменных. В статистической записи уравнение можно записать в виде \ (\ hat {y} = 4,267 + 1,373x \).
- Интерпретация наклона (значение = 1,373) состоит в том, что коэффициент рождаемости в возрасте от 15 до 17 лет увеличивается в среднем на 1,373 единицы на каждую единицу (один процент) увеличения уровня бедности.
- Интерпретация точки пересечения (значение = 4,267) состоит в том, что если бы существовали штаты с уровнем бедности = 0, прогнозируемое среднее значение рождаемости в возрасте от 15 до 17 лет было бы 4,267 для этих штатов. Поскольку нет штатов с уровнем бедности = 0, такая интерпретация точки пересечения не имеет практического смысла для этого примера.
На графике с линией регрессии мы также видим информацию о том, что s = 5,55057 и r 2 = 53.3%.
- Значение s примерно говорит нам о стандартном отклонении разницы между значениями y отдельных наблюдений и прогнозами y на основе линии регрессии.
- Значение r 2 может быть истолковано как означающее, что уровень бедности «объясняет» 53,3% наблюдаемой вариации средней рождаемости в штатах в возрасте от 15 до 17 лет.
Значение R 2 (прил.) (52,4%) представляет собой корректировку к R 2 в зависимости от количества x-переменных в модели (здесь только одна) и размера выборки. При наличии только одной переменной x скорректированное значение R 2 не имеет значения.
Пример 2: Функция легких у детей в возрасте от 6 до 10 лет
Данные взяты из n = 345 детей в возрасте от 6 до 10 лет. Переменные: y = объем форсированного выдоха (FEV), мера того, сколько воздуха кто-то может принудительно выдохнуть из легких, и x = возраст в годах. (Источник данных: данные здесь являются частью набора данных, приведенного в Kahn, Michael (2005). «Большая проблема для преподавания статистики», The Journal of Statistical Education , 13 (2).
Ниже представлен график данных с наложенной простой линией линейной регрессии.
- Расчетное уравнение регрессии: средний ОФВ = 0,01165 + 0,26721 × возраст. Например, для 8-летнего ребенка мы можем использовать уравнение, чтобы оценить, что средний ОФВ = 0,01165 + 0,26721 × (8) = 2,15.
- Интерпретация наклона состоит в том, что средний ОФВ увеличивается на 0,26721 за каждый год увеличения возраста (в наблюдаемом возрастном диапазоне).
Интересной и, возможно, важной особенностью этих данных является то, что отклонение индивидуальных значений y от линии регрессии увеличивается с возрастом.Эта особенность данных называется непостоянной дисперсией . Например, значения ОФВ у 10-летних более изменчивы, чем значения ОФВ у 6-летних. Это видно по вертикальным диапазонам данных на графике. Это может привести к проблемам с использованием простой модели линейной регрессии для этих данных, и это проблема, которую мы рассмотрим более подробно в Уроке 4.
Выше мы проанализировали только часть всего набора данных. Полный набор данных (fev_dat.txt) показан на графике ниже:
Как мы видим, диапазон возрастов теперь составляет от 3 до 19 лет, и расчетное уравнение регрессии составляет FEV = 0.43165 + 0,22204 × возраст. И наклон, и точка пересечения заметно изменились, но дисперсия все еще остается непостоянной. Это показывает, что важно знать, как вы анализируете свои данные. Если вы используете только подмножество данных, охватывающее более короткий диапазон значений предикторов, то вы можете получить результаты, заметно отличающиеся от результатов, если бы вы использовали полный набор данных.
.
Регрессионный анализ—ArcGIS Insights | Документация
Регрессионный анализ статистический аналитический метод, позволяющий вычислить предполагаемые отношения между зависимой переменной одной или несколькими независимыми переменными. Используя регрессионный анализ, вы можете моделировать отношения между выбранным переменными, а также прогнозируемыми значениями на основе модели.
Обзор регрессионного анализа
Регрессионный анализ использует выбранный метод оценки, зависимую переменную и одну или несколько независимых переменных для создания уравнения, которое оценивает значения зависимой переменной.
Модель регрессии включает выходные данные, например R2 и p-значения, по которым можно понять, насколько хорошо модель оценивает зависимую переменную.
Диаграммы, например матрица точечной диаграммы, гистограмма и точечная диаграмма, также используются в регрессионном анализе для анализа отношений и проверки допущений.
Регрессионный анализ используется для решения следующих типов проблем:
- Выявить, какая независимая переменная связана с зависимой.
- Понять отношения между зависимой и независимыми переменными.
- Предсказать неизвестные значения зависимой переменной.
Примеры
Аналитик в рамках исследования для небольшой розничной сети изучает эффективность работы различных магазинов. Он хочет выяснить, почему некоторые магазины показывают очень небольшой объем продаж. Аналитик строит модель регрессии с независимыми переменными, такими как средний возраст и средний доход жителей, проживающих вокруг магазинов, а так же расстояние до торговых центров и остановок общественного транспорта, чтобы выявить, какая именно переменная наиболее влияет на продажи.
Аналитик департамента образования исследует эффективность новой программы питания в школе. Аналитик строит модель регрессии для показателей успеваемости, используя такие независимые переменные, как размер класса, доход семьи, размер подушевого финансирования учащихся и долю учащихся, питающихся в школе. Уравнение модели используется для выявления относительного вклада каждой переменной в показатели успеваемости учебного заведения.
Аналитик неправительственной организации изучает эффект глобальных выбросов парниковых газов. Аналитик строит модель регрессии для выбросов в последнее время, зафиксированных в каждой стране, используя независимые переменные, такие как валовой внутренний продукт( ВВП), численность населения, производство электроэнергии с использованием добываемого углеводородного топлива и использование транспортных средств. Эту модель можно использовать использована для прогнозирования будущих выбросов парниковых газов на основе предполагаемых значений значений ВВП и численности населения.
Наименьшие квадраты
Регрессионный анализ в ArcGIS Insights моделируется на основе Метода наименьших квадратов (МНК).
МНК – форма множественной линейной регрессии, допускающей, что отношения между зависимыми и независимыми переменными должны моделироваться подгонкой линейного уравнения к данным наблюдений.
МНК использует следующее уравнение:
yi=β0+β1x1+β2x2+...+βnxn+ε
, где:
- yi=наблюдаемое=наблюдаемое значение независимой переменной в точке i
- β0=y-интерсепт (отрезок на координатной оси, постоянное значение)
- βn=коэффициент регрессии или уклона независимой переменной N в точке i
- xn=значение переменной N в точке i
- ε=ошибка уравнения регрессии
Допущения (Предположения)
Каждый метод регрессии имеет несколько допущений, которые должны быть выполнены для того, чтобы уравнение считалось надежным. Допущения МНК должны быть проверены при создании модели регрессии.
Следующие допущения должны быть проверены и удовлетворены при использовании метода МНК:
- Модель должна быть линейной.
- Данные должны быть распределены произвольно.
- Независимые переменные не должны быть коллинеарны.
- Независимые переменные должны иметь незначительную погрешность измерения.
- Предполагаемая сумма невязок должна быть равна нулю.
- Невязки должны иметь равномерную вариабельность.
- Распределение невязок должно соответствовать нормальному.
- Смежные невязки не должны обнаруживать автокорреляцию.
Модель должна быть линейной.
Регрессия МНК используется только при построении линейной модели. Линейную зависимость между зависимой и независимыми переменными можно проверить используя точечную диаграмму (рассеивания). Матрица точечной диаграммы может проверить все переменные, при условии, что всего используется не более 5 переменных.
Данные должны быть распределены произвольно.
Данные, используемые в регрессионном анализе, должны быть произвольно распределены, то есть выборки данных не должны зависеть от какого-либо внешнего фактора. Произвольное распределение можно проверить, используя невязки в модели регрессии. Невязки, рассчитываемые как результат модели регрессии, не должны коррелировать при нанесении их на точечную диаграмму или матрицу точечной диаграммы вместе с независимыми переменными.
Независимые переменные не должны быть коллинеарны.
Коллинеарность — это линейная связь между независимыми переменными, которая создает избыточность в модели. В ряде случаев модель создается с коллинеарностью. Тем не менее, если одна из коллинеарных переменных зависит от другой, возможно, стоит удалить ее из модели. Оценить коллинеарность можно с помощью точечной диаграммы или матрицы точечной диаграммы независимых переменных.
Независимые переменные должны иметь незначительную погрешность измерения.
Точность модели регрессии соответствует точности входных данных. Если независимые переменные имеют большой разброс ошибок, модель нельзя считать точной. При выполнении регрессионного анализа очень важно использовать наборы данных только из известных и доверенных источников, чтобы быть уверенным в незначительности ошибок.
Предполагаемая сумма невязок должна быть равна нулю.
Невязки представляют собой разность между ожидаемыми и наблюдаемыми значениями в регрессионном анализе. Наблюдаемые значения выше кривой регрессии имеют положительное значение невязки, а значения ниже кривой регрессии – отрицательные. Кривая регрессии должны проходить через центр точек данных; соответственно сумма невязок должны стремиться к нулю. Сумму значений поля можно вычислить в суммарной таблице.
Невязки должны иметь равномерную вариабельность.
Величина вариабельности должна быть одинаковой для всех невязок. Это допущение проверяется с использованием точечной диаграммы невязок (ось y) и оцениваемых значений (ось x). Результирующая точечная диаграмма отображается как горизонтальная полоса с произвольно разбросанными точками по всей площади.
Распределение невязок должно соответствовать нормальному.
Нормальное распределение – кривая в форме колокола – является естественным распределением, где высокая частота явления наблюдается рядом со средним значением, и по мере увеличения расстояния от среднего частота снижается. В статистическом анализе нормальное распределение часто используется как нулевая гипотеза. Если распределение невязок соответствует нормальному, линия наилучшего соответствия проходит по центру наблюдаемых точек данных, а не отклоняется, приближаясь к одним, и отклоняясь от других. Это допущение можно проверить, построив гистограмму невязок. Кривая нормального распределения может не поместиться в карточку и сдвиги и эксцессы переносятся на обратную сторону карточки гистограммы.
Смежные невязки не должны обнаруживать автокорреляцию.
Это допущение основано на хронологии данных. Если данные соответствуют хронологии, каждая точка данных должна быть независима от предыдущей или последующей точки данных. Поэтому при выполнении регрессионного анализа важно убедиться, что хронологический порядок данных соответствует нормальному ходу времени. Это допущение вычисляется с использованием теста Дарбина-Уотсона.
Тест Дарбина-Уотсона измеряет автокорреляцию невязок в модели регрессии. Критерий Дурбина-Ватсона использует шкалу от 0 до 4, где значения от 0 до 2 указывают на положительную автокорреляцию, 2 – отсутствие автокорреляции, а от 2 до 4 отрицательную автокорреляцию. То есть, чтобы соответствовать допущению об отсутствии автокорреляции невязок, необходимо получить значение, приближающееся к 2. В целом, значения между 1.5 и 2.5 считаются допустимыми, а меньше 1.5 или больше 2.5 указывают на то, что модель не соответствует утверждению об отсутствии автокорреляции.
Пригодность модели
Точность уравнения регрессии – основа регрессионного анализа. Все модели будут иметь некую ошибку, но понимание этой статистики поможет вам определить, можно ли использовать эту модель для вашего анализа, или необходимо выполнить дополнительные преобразования.
Существуют два метода проверки корректности модели регрессии: исследовательский анализ и подтверждающий анализ.
Исследовательский анализ
Исследовательский анализ – технология анализа данных с использованием разнообразных статистических и визуальных методов. В рамках исследовательского анализа вы проверяете допущения регрессии МНК и сравниваете эффективность различных независимых переменных. Исследовательский анализ позволяет вам сравнить эффективность и точность разных моделей, но не может определить, должны ли вы использовать или отклонить ту или иную модель. Исследовательский анализ необходимо проводить перед анализом подтверждения для каждой модели регрессии, возможно, несколько раз, для сравнения разных моделей.
Как часть исследовательского анализа могут быть использованы следующие диаграммы и статистические показатели:
- Точечная диаграмма (рассеяния) и матрица точечной диаграммы
- Гистограмма и анализ нормального распределения
- Уравнение регрессии и прогнозирование новых наблюдений
- Коэффициент детерминации, R2 и скорректированный R2
- Стандартная ошибка невязки
- Точечная диаграмма
Исследовательский анализ начинается, когда вы выбираете независимые переменные, и до построения модели регрессии. Так как МНК – метод линейной регрессии, основное допущение – модель должна быть линейной. Точечная диаграмма (рассеяния) и матрица точечной диаграммы могут быть использованы для анализа линейной зависимости между зависимой переменной и независимыми переменными. Матрица точечной диаграммы может отобразить до 4х независимых переменных с зависимой переменной, что позволяет сразу провести сравнение между всеми переменными. Простая диаграмма рассеяния может отобразить только две переменные: одну зависимую и одну независимую. Просмотр диаграммы рассеяния с зависимой переменной и одной независимой переменной позволяет сделать более точное допущение об отношении между переменными. Линейность можно проверить перед созданием модели регрессии, чтобы определить, какие именно независимые переменные следует использовать для создания пригодной модели.
Несколько выходных статистических показателей также доступны после создания модели регрессии, к ним относятся: уравнение регрессии, значение R2 и критерий Дурбина-Ватсона. После создания модели регрессии вы должны использовать выходные показатели, а также диаграммы и таблицы для проверки остальных допущений регрессии МНК. Если ваша модель удовлетворяет допущениям, вы можете продолжить исследовательский анализ.
Уравнение регрессии дает возможность оценить влияние каждой независимой переменной на прогнозируемые значения, включая коэффициент регрессии для каждой независимой переменной. Можно сравнить величины уклона для определения влияния каждой независимой переменной на зависимую переменную; Чем дальше от нуля значение уклона (неважно, в положительную, или отрицательную сторону) – тем больше влияние. Уравнение регрессии также может быть использовано для прогнозирования значений зависимой переменной через вод значений каждой независимой переменной.
Коэффициент детерминации, обозначаемый как R2, измеряет, насколько хорошо уравнение регрессии моделирует фактические точки данных. Значение R2 – число в диапазоне от 0 до 1, причем, чем ближе значение к 1, тем более точная модель. Если R2 равен 1, это указывает на идеальную модель, что крайне маловероятно в реальных ситуациях, учитывая сложность взаимодействий между различными факторами и неизвестными переменными. Поэтому следует стремиться к созданию регрессионной модели с максимально возможным значением R2 , понимая, что значение не может быть равно 1.
При выполнении регрессионного анализа существует риск создания модели регрессии, имеющей допустимое значение R2, путем добавления независимых переменных, случайным образом показывающих хорошее соответствие. Значение Скорректированный R2, которое также должно находиться в диапазоне между 0 и 1, учитывает дополнительные независимые переменные, уменьшая роль случайности в вычислении. Скорректированный R2 нужно использовать в модели с большим количеством независимых переменных или при сравнении моделей с различным числом независимых переменных.
Стандартная ошибка невязки измеряет точность, с которой регрессионная модель может предсказывать значения с новыми данными. Меньшие значения указывают на более точную модель, соответственно при сравнении нескольких моделей, та, где это значение самое меньшее из всех – модель, в которой минимизирована стандартная ошибка невязки.
Точечная диаграмма может быть использована для анализа независимых переменных, с целью выявления кластеризации или выбросов, которые могут влиять на точность модели.
Анализ подтверждения
Анализ подтверждения — процесс оценки модели в сравнении с нулевой гипотезой. В регрессионном анализа нулевая гипотеза утверждает, что отношения между зависимой и независимыми переменными отсутствуют. Для модели с отсутствием отношений величина уклона равна 0. Если элементы анализа подтверждения статистически значимы — вы можете отклонить нулевую гипотезу ((другими словами, статистически подтверждается наличие отношений между зависимой и независимыми переменными).
Для определения значимости, как компонента анализа, используются следующие статистические показатели:
- F-статистика, и связанное с ней p-значение
- T-статистика, и связанное с ней p-значение
- Доверительные интервалы
F-статистика — глобальный статистический показатель, возвращаемый F-критерием, который показывает возможности прогнозирования модели через расчет коэффициентов регрессии в модели, которые значительно отличаются от 0. F-критерий анализирует комбинированное влияние независимых переменных, а не оценивает каждую в отдельности. С F-статистикой связано соответствующее p-значение, которое является мерой вероятности того, что детерминированные отношения между переменными являются случайными Так как p-значения базируются на вероятности, значения располагаются в диапазоне от 0.0 до 1.0. Небольшое p-значение, обычно 0.05 или меньше, свидетельствует о том, что в модели реально есть отношения между переменными (то есть, выявленная закономерность не является случайной) что дает нам право отвергнуть нулевую гипотезу. В этом случае, вероятность того, что отношения в модели случайны, равна 0.05, или 1 к 20. Или, вероятность того, что отношения реальны, равна 0.95, или 19 к 20.
Показатель t-статистика — это локальный статистический показатель, возвращаемый t-критерием, который показывает возможности прогнозирования для каждой независимой переменной отдельно. Так же, как и F-критерий, t-критерий анализирует коэффициенты регрессии в модели, которые значительно отличаются от 0. Так как t-критерий применяется к каждой независимой переменной, модель вернет значение t-статистики для каждой независимой переменной, а не одно значение для всей модели. Каждое значение t-статистики имеет связанное с ним p-значение, которое указывает на значимость независимой переменной. Так же, как и для F-критерия, p-значение для каждого t-критерия должно быть 0.05 или менее, чтобы мы могли отвергнуть нулевую гипотезу. Если p-значение для независимой переменной больше 0.05, эту переменную не стоит включать в модель, и необходимо строить новую модель, даже если глобальное значение вероятности для исходной модели указывает на статистическую значимость.
Доверительные интервалы визуализируют коэффициенты регрессии для каждой независимой переменной и могут быть 90, 95 и 99 процентов. Поэтому доверительные интервалы можно использовать наряду с p-значениями t-критерия для оценки значимости нулевой гипотезы для каждой независимой переменной. Коэффициенты регрессии на должны быть равны 0, только в этом случае вы можете отклонить нулевую гипотезу и продолжить использовать модель. Поэтому, для каждой независимой переменной, коэффициент регрессии, и связанный с ним доверительный интервал не может перекрываться с 0. Если доверительные интервалы в 99 или 95 процентов для данной независимой переменой перекрываются с 0, эта независимая переменная не дает возможности отклонить нулевую гипотезу. Включение этой переменной в модель может негативно повлиять на общую значимость вашей модели. Если только 90-процентный доверительный интервал перекрывается с 0, эта переменная может быть включена в модель, общая статистическая значимость которой вас удовлетворяет. В идеале, доверительные интервалы для всех независимых переменных должны быть как можно дальше от 0.
Другие выходные данные
Остальные выходные данные, такие как прогнозируемые значения и невязки также важны для допущений регрессии МНК. В этом разделе вы можете узнать подробнее, как эти значения вычисляются.
Ожидаемые значения
Ожидаемые значения вычисляются на основе уравнения регрессии и значений каждой независимой переменной. В идеале, ожидаемые значения должны совпадать с наблюдаемыми (реальными значениями зависимой переменной).
Ожидаемые значения, вместе с наблюдаемым значениями, используются для вычисления невязок.
Невязки
Невязки в регрессионном анализе – это различия между наблюдаемыми значениями в наборе данных и ожидаемыми значениями, вычисленными с помощью уравнения регрессии.
Невязки A и B для отношений выше вычисляются следующим образом:
невязкиA = наблюдаемыеA - ожидаемыеA невязкиA = 595 - 487.62 невязкиA = 107.38
невязкиB = наблюдаемыеB - ожидаемыеB невязкиB = 392 - 527.27 невязкиB = -135.27
Невязки используются для вычисления ошибки уравнения регрессии, а также для проверки некоторых допущений.
Отзыв по этому разделу?
Простая линейная регрессия
16. 1 Простая линейная регрессия
Рис. 16.1: Вспомогательное меню Regression (Регрессия)
При изучении линейного регрессионного анализа снова будут проведено различие между простым анализом (одна независимая переменная) и множественным анализом (несколько независимых переменных). Никаких принципиальных отличий между этими видами регрессии нет, однако простая линейная регрессия является простейшей и применяется чаще всех остальных видов.
Этот вид регрессии лучше всего подходит для того, чтобы продемонстрировать основополагающие принципы регрессионного анализа. Рассмотрим пример из раздела корреляционный анализ с зависимостью показателя холестерина спустя один месяц после начала лечения от исходного показателя. Можно легко заметить очевидную связь: обе переменные развиваются в одном направлении и множество точек, соответствующих наблюдаемым значениям показателей, явно концентрируется (за некоторыми исключениями) вблизи прямой (прямой регрессии). В таком случае говорят о линейной связи.
у = b • х + а,
где b — регрессионные коэффициенты, a — смещение по оси ординат (OY).
Смещение по оси ординат соответствует точке на оси Y (вертикальной оси), где прямая регрессии пересекает эту ось. Коэффициент регрессии b через соотношение:
b = tg(a) — указывает на угол наклона прямой.
При проведении простой линейной регрессии основной задачей является определение параметров b и а. Оптимальным решением этой задачи является такая прямая, для которой сумма квадратов вертикальных расстояний до отдельных точек данных является минимальной.
Если мы рассмотрим показатель холестерина через один месяц (переменная chol1) как зависимую переменную (у), а исходную величину как независимую переменную (х),
то тогда для проведения регрессионного анализа нужно будет определить параметры соотношения:
chol1 = b • chol0 + a
После определения этих параметров, зная исходный показатель холестерина, можно спрогнозировать показатель, который будет через один месяц.
Расчёт уравнения регрессии
Откройте файл hyper.sav.
Выберите в меню Analyze… (Анализ) ► Regression…(Регрессия) ► Linear… (Линейная). Появится диалоговое окно Linear Regression (Линейная регрессия).
Перенесите переменную chol1 в поле для зависимых переменных и присвойте переменной chol0 статус независимой переменной.
Ничего больше не меняя, начните расчёт нажатием ОК.
Рис.16.2: Диалоговое окно Линейная регрессия
Вывод основных результатов выглядит следующим образом:
Model Summary (Сводная таблица по модели)
Model (Модель) | R | R Square (R-квадрат) | Adjusted R Square (Скорректир. R-квадрат) | Std. Error of the Estimate (Стандартная ошибка оценки) |
1 | ,861а | ,741 | ,740 | 25,26 |
а. Predictors: (Constant), Cholesterin, Ausgangswert (Влияющие переменные: (константы), холестерин, исходная величина)
ANOVA b
Model (Модель) | Sum of Squares (Сумма Квадратов) | df | Mean Square (Среднее значение квадрата) | F | Sig. (Значимость) | |
1 | Regression (Регрессия) | 314337,948 | 1 | 314337,9 | 492,722 | ,000a |
Residual (Остатки) | 109729,408 | 172 | 637,962 | |||
Total (Сумма) | 424067,356 | 173 |
a. Predictors: (Constant), Cholesterin, Ausgangswert (Влияющие переменные: (константа), холестерин, исходная величина).
b. Dependent Variable: Cholesterin, nach 1 Monat (Зависимая переменная холестерин через 1 месяц)
Coefficients (Коэффициенты) а
Model (Модель) | Unstandardized Coefficients (Не стандартизированные коэффициенты) | Standardized Coefficients (Стандартизированные коэффициенты) | t | Sig. (Значимость) | ||
B | Std: Error (Станд. ошибка) | ß (Beta) | ||||
1 | (Constant) (Константа) | 34,546 | 9,416 | 3,669 | ,000 | |
Cholesterin, Ausgangswert | ,863 | ,039 | ,861 | 22,197 | ,000 |
a. Dependent Variable (Зависимая переменная)
Рассмотрим сначала нижнюю часть результатов расчётов. Здесь выводятся коэффициент регрессии b и смещение по оси ординат а под именем «константа». То есть, уравнение регрессии выглядит следующим образом:
chol1 = 0,863 • chol0 + 34,546
Если значение исходного показателя холестерина составляет, к примеру, 280, то через один месяц можно ожидать показатель равный 276.
Частные рассчитанных коэффициентов и их стандартная ошибка дают контрольную величину Т; соответственный уровень значимости относится к существованию ненулевых коэффициентов регрессии. Значение коэффициента ß будет рассмотрено при изучении многомерного анализа.
Средняя часть расчётов отражает два источника дисперсии: дисперсию, которая описывается уравнением регрессии (сумма квадратов, обусловленная регрессией) и дисперсию, которая не учитывается при записи уравнения (остаточная сумма квадратов). Частное от суммы квадратов, обусловленных регрессией и остаточной суммы квадратов называется «коэфициентом детерминации». В таблице результатов это частное выводится под именем «R-квадрат». В нашем примере мера определённости равна:
314337,948 / 424067,356 = 0,741
Эта величина характеризует качество регрессионной прямой, то есть степень соответствия между регрессионной моделью и исходными данными. Мера определённости всегда лежит в диапазоне от 0 до 1. Существование ненулевых коэффициентов регрессии проверяется посредством вычисления контрольной величины F, к которой относится соответствующий уровень значимости.
В простом линейном регрессионном анализе квадратный корень из коэфициента детерминации, обозначаемый «R», равен корреляционному коэффициенту Пирсона. При множественном анализе эта величина менее наглядна, нежели сам коэфициент детерминации. Величина «Cмещенный R-квадрат» всегда меньше, чем несмещенный. При наличии большого количества независимых переменных, мера определённости корректируется в сторону уменьшения. Принципиальный вопрос о том, может ли вообще имеющаяся связь между переменными рассматриваться как линейная, проще и нагляднее всего решать, глядя на соответствующую диаграмму рассеяния. Кроме того, в пользу гипотезы о линейной связи говорит также высокий уровень дисперсии, описываемой уравнением регрессии.
И, наконец, стандартизированные прогнозируемые значения и стандартизированные остатки можно предоставить в виде графика. Вы получите этот график, если через кнопку Plots…(Графики) зайдёте в соответствующее диалоговое окно и зададите в нём параметры *ZRESID и *ZPRED в качестве переменных, отображаемых по осям у и х соответственно. В случае линейной регрессии остатки распределяются случайно по обе стороны от горизонтальной нулевой линии.
Сохранение новых переменных
Многочисленные вспомогательные значения, рассчитываемые в ходе построения уравнения регрессии, можно сохранить как переменные и использовать в дальнейших расчётах.
Рис. 16.3: Диалоговое окно Линейная регрессия: Сохранение
Интересными здесь представляются опции Standardized (Стандартизированные значения) и Unstandardized (Нестандартизированные значения), которые находятся под рубрикой Predicted values (Прогнозируемые величины опции). При выборе опции Не стандартизированные значения будут рассчитывается значения у, которое соответствуют уравнению регрессии. При выборе опции Стандартизированные значения прогнозируемая величина нормализуется. SPSS автоматически присваивает новое имя каждой новообразованной переменной, независимо от того, рассчитываете ли Вы прогнозируемые значения, расстояния, прогнозируемые интервалы, остатки или какие-либо другие важные статистические характеристики. Нестандартизированным значениям SPSS присваивает имена pre_1 (predicted value), pre_2 и т.д., а стандартизированным zpr_l.
В редакторе данных будет образована новая переменная под именем рrе_1 и добавлена в конец списка переменных в файле. Для объяснения значений, находящихся в переменной рrе_1, возьмём случай 5. Для случая 5 переменная рrе_1 содержит нестандартизированное прогнозируемое значение 263,11289. Это прогнозируемое значение слегка отличается в сторону увеличения от реального показателя содержания холестерина, взятого через один месяц (chol1) и равного 260. Нестандартизированное прогнозируемое значение для переменной chol1, так же как и другие значения переменной рге_1, было вычислено исходя из соответствующего уравнения регрессии.
Если мы в уравнение регрессии:
chol1 = 0,863 • chol0 + 34,546
подставим исходное значение для chol0 (265), то получим: chol1 = 0,863 • 265 + 34,546 = 263,241
Небольшое отклонение от значения, хранящегося в переменной рге_1 объясняется тем, что SPSS использует в расчётах более точные значения, чем те, которые выводятся в окне просмотра результатов.
Добавьте для этого в конец файла hyper.sav, ещё два случая, используя фиктивные значения для переменной chol0. Пусть к примеру, это будут значения 282 и 314.
Мы исходим из того, что нам не известны значения показателя холестерина через месяц после начала лечения, и мы хотим спрогнозировать значение переменной chol1.
В конце списка переменных добавится переменная рге_2. Для нового добавленного случая (№175) для переменной chol1 будет предсказано значение 277,77567, а для случая №176 — значение 305,37620.
Построение регрессионной прямой
Чтобы на диаграмме рассеяния изобразить регрессионную прямую, поступите следующим образом:
Выберите в меню следующие опции Graphs … (Графики) / Scatter plots… / Диаграммы рассеяния. Откроется диалоговое окно Scatter plots… (Диаграмма рассеяния) — (рис. 16.4).
В диалоговом окне Scatter plots…(Диаграмма рассеяния) оставьте предварительную установку Simple (Простая) и щёлкните на кнопке Define (Определить). Откроется диалоговое окно Simple Scatter plot (Простая диаграмма рассеяния) (рис. 16.5).
Перенесите переменную chol1 в поле оси Y, а переменную chol0 в поле оси X.
Подтвердите щелчком на ОК. В окне просмотра результатов появится диаграмма рассеяния (рис. 16.6).
Щёлкните дважды на этом графике, чтобы перенести его в редактор диаграмм.
Выберите в редакторе диаграмм меню Chart… (Диаграмма) / Options… (Опции). Откроется диалоговое окно Scatterplot Options (Опции для диаграммы рассеяния) (рис. 16.7).
В рубрике Fit Line (Приближенная кривая) поставьте флажок напротив опции Total (Целиком для всего файла данных) и щёлкните на кнопке Fit Options (Опции для приближения). Откроется диалоговое окно Scatterplot Options: Fit Line (Опции для диаграммы рассеяния: приближенная кривая) (см. рис. 16.8).
Подтвердите предварительную установку Linear Regression (Линейная регрессия) щелчком Continue (Далее) и затем на ОК.
Закройте редактор диаграмм и щёлкните один раз где-нибудь вне графика. Теперь в диаграмме рассеяния отображается регрессионная прямая (рис. 16.9).
Рис. 16.4: Диалоговое окно Scatter plots… (Диаграмма рассеяния)
Рис. 16.5: Диалоговое окно Simple Scatterplot (Простая диаграмма рассеяния).
Рис. 16.6: Диаграмма рассеяния в окне просмотра
Рис. 16.7: Диалоговое окно Scatterplot Options (Опции для диаграммы рассеяния)
Рис. 16.8: Диалоговое окно Scatterplot Options: Fit Line (Опции для диаграммы рассеяния:
Рис. 16.9: Диаграмма рассеяния с регрессионной прямой
Выбор осей
Для диаграмм рассеяния часто оказывается необходимой дополнительная корректировка осей. Продемонстрируем такую коррекцию при помощи одного примера. В файле raucher.sav находятся десять фиктивных наборов данных. Переменная konsum указывает на количество сигарет, которые выкуривает один человек в день, а переменная puls на количество времени, необходимое каждому испытуемому для восстановления пульса до нормальной частоты после двадцати приседаний. Как было показано ранее, постройте диаграмму рассеяния с внедрённой регрессионной прямой.
В диалоговом окне Simple Scatterplot (Простая диаграмма рассеяния) перенесите переменную puls в поле оси Y, а переменную konsum — в поле оси X. После соответствующей обработки данных в окне просмотра появится диаграмма рассеяния, изображённая на рисунке 16.10.
Рис. 16.10: Диаграмма рассеяния с регрессионной прямой до коррекции осей
Так как никто не выкуривает минус 10 сигарет в день, точка начала отсчёта оси X является не совсем корректной. Поэтому эту ось необходимо откорректировать.
Дважды щёлкните на графике и в меню редактора диаграмм вберите опции Chart… (Диаграмма) / Axis… (Оси). Откроется диалоговое окно Axis Selection (Выбор оси) (рис. 16.11).
Подтвердите предварительный выбор оси X нажатием кнопки ОК. Откроется диалоговое окно X-Scale Axis (Ось X) (рис. 16.12).
В редактируемом поле Displayed (Отображаемый) в рубрике Range (Диапазон) измените минимальное значение на 0.
Подтвердите нажатием на ОК.
Выберите вновь в меню редактора диаграмм опции Chart… (Диаграмма* Axis… (Оси)
Активируйте в диалоговом окне Axis Selection (Выбор оси) опцию Y Scale (Ось Y). Откроется диалоговое окно Y-Scale Axis (Ось Y).
И здесь в рубрике Range (Диапазон) в редактируемом поле Displayed (Отображаемый) измените минимальное значение на «0».
Подтвердите нажатием на ОК.
Рис. 16.11: Диалоговое окно Axis Selection (Выбор оси)
Рис. 16.12: Диалоговое окно X-Scale Axis (Ось X)
В окне просмотра Вы увидите откорректированную диаграмму рассеяния (см. рис. 16.13).
Рис. 16.13: Диаграмма рассеяния с регрессионной прямой после корректировки осей
На откорректированной диаграмме рассеяния теперь стало проще распознать начальную точку на оси Y, которая образуется при пересечении с регрессионной прямой. Значение этой точки примерно равно 2,9. Сравним это значение с уравнением регрессии для переменных puls (зависимая переменная) и konsum (независимая переменная). В результате расчёта уравнения регрессии в окне отображения результатов появятся следующие значения:
Coefficients (Коэффициенты)а
Model (Модель) | Unstandardized Coefficients (Не стандартизированные коэффициенты) | Standardized Coefficients (Стандартизированные коэффициенты) | t | Sig. (Значимость) | ||
B | Std: Error (Станд. ошибка) | ß (Beta) | ||||
1 | (Constant) (Константа) | 2,871 | ,639 | 4,492 | ,002 | |
tgl. Zigarettenkonsum | ,145 | ,038 | ,804 | 3,829 | ,005 |
a. Dependent Variable: Pulsfrequenz unter 80 (Зависимая переменная: частота пульса ниже 80)
Что дает следующее уравнение регрессии:
puls = 0,145 • konsum + 2,871
Константа в вышеприведенном уравнении регрессии (2,871) соответствует точке на оси Y, которая образуется в точке пересечения с регрессионной прямой.
Линейная регрессия на Python: объясняем на пальцах
Линейная регрессия применяется для анализа данных и в машинном обучении. Постройте свою модель на Python и получите первые результаты!
Регрессия ищет отношения между переменными.
Для примера можно взять сотрудников какой-нибудь компании и понять, как значение зарплаты зависит от других данных, таких как опыт работы, уровень образования, роль, город, в котором они работают, и так далее.
Регрессия решает проблему единого представления данных анализа для каждого работника. Причём опыт, образование, роль и город – это независимые переменные при зависимой от них зарплате.
Таким же способом можно установить математическую зависимость между ценами домов в определённой области, количеством комнат, расстоянием от центра и т. д.
Регрессия рассматривает некоторое явление и ряд наблюдений. Каждое наблюдение имеет две и более переменных. Предполагая, что одна переменная зависит от других, вы пытаетесь построить отношения между ними.
Другими словами, вам нужно найти функцию, которая отображает зависимость одних переменных или данных от других.
Зависимые данные называются зависимыми переменными, выходами или ответами.
Независимые данные называются независимыми переменными, входами или предсказателями.
Обычно в регрессии присутствует одна непрерывная и неограниченная зависимая переменная. Входные переменные могут быть неограниченными, дискретными или категорическими данными, такими как пол, национальность, бренд, etc.
Общей практикой является обозначение данных на выходе – ?, входных данных – ?. В случае с двумя или более независимыми переменными, их можно представить в виде вектора ? = (?₁, …, ?ᵣ), где ? – количество входных переменных.
Регрессия полезна для прогнозирования ответа на новые условия. Можно угадать потребление электроэнергии в жилом доме из данных температуры, времени суток и количества жильцов.
Где она вообще нужна?
Регрессия используется во многих отраслях: экономика, компьютерные и социальные науки, прочее. Её важность растёт с доступностью больших данных.
Линейная регрессия – одна из важнейших и широко используемых техник регрессии. Эта самый простой метод регрессии. Одним из его достоинств является лёгкость интерпретации результатов.
Постановка проблемы
Линейная регрессия некоторой зависимой переменной y на набор независимых переменных x = (x₁, …, xᵣ), где r – это число предсказателей, предполагает, что линейное отношение между y и x: y = 𝛽₀ + 𝛽₁x₁ + ⋯ + 𝛽ᵣxᵣ + 𝜀. Это уравнение регрессии. 𝛽₀, 𝛽₁, …, 𝛽ᵣ – коэффициенты регрессии, и 𝜀 – случайная ошибка.
Линейная регрессия вычисляет оценочные функции коэффициентов регрессии или просто прогнозируемые весы измерения, обозначаемые как b₀, b₁, …, bᵣ. Они определяют оценочную функцию регрессии f(x) = b₀ + b₁x₁ + ⋯ + bᵣxᵣ. Эта функция захватывает зависимости между входами и выходом достаточно хорошо.
Для каждого результата наблюдения i = 1, …, n, оценочный или предсказанный ответ f(xᵢ) должен быть как можно ближе к соответствующему фактическому ответу yᵢ. Разницы yᵢ − f(xᵢ) для всех результатов наблюдений называются остатками. Регрессия определяет лучшие прогнозируемые весы измерения, которые соответствуют наименьшим остаткам.
Для получения лучших весов, вам нужно минимизировать сумму остаточных квадратов (SSR) для всех результатов наблюдений: SSR = Σᵢ(yᵢ − f(xᵢ))². Этот подход называется методом наименьших квадратов.
Простая линейная регрессия
Простая или одномерная линейная регрессия – случай линейной регрессии с единственной независимой переменной x.
А вот и она:
Реализация простой линейной регрессии начинается с заданным набором пар (зелёные круги) входов-выходов (x-y). Эти пары – результаты наблюдений. Наблюдение, крайнее слева (зелёный круг) имеет на входе x = 5 и соответствующий выход (ответ) y = 5. Следующее наблюдение имеет x = 15 и y = 20, и так далее.
Оценочная функция регрессии (чёрная линия) выражается уравнением f(x) = b₀ + b₁x. Нужно рассчитать оптимальные значения спрогнозированных весов b₀ и b₁ для минимизации SSR и определить оценочную функцию регрессии. Величина b₀, также называемая отрезком, показывает точку, где расчётная линия регрессии пересекает ось y. Это значение расчётного ответа f(x) для x = 0. Величина b₁ определяет наклон расчетной линии регрессии.
Предсказанные ответы (красные квадраты) – точки линии регрессии, соответствующие входным значениям. Для входа x = 5 предсказанный ответ равен f(5) = 8.33 (представленный крайним левыми квадратом).
Остатки (вертикальные пунктирные серые линии) могут быть вычислены как yᵢ − f(xᵢ) = yᵢ − b₀ − b₁xᵢ для i = 1, …, n. Они представляют собой расстояния между зелёными и красными пунктами. При реализации линейной регрессии вы минимизируете эти расстояния и делаете красные квадраты как можно ближе к предопределённым зелёным кругам.
Пришло время реализовать линейную регрессию в Python. Всё, что вам нужно, – подходящие пакеты, функции и классы.
Пакеты Python для линейной регрессии
NumPy – фундаментальный научный пакет для быстрых операций над одномерными и многомерными массивами. Он облегчает математическую рутину и, конечно, находится в open-source.
Незнакомы с NumPy? Начните с официального гайда.
Пакет scikit-learn – это библиотека, широко используемая в машинном обучении. Она предоставляет значения для данных предварительной обработки, уменьшает размерность, реализует регрессию, классификацию, кластеризацию и т. д. Находится в open-source, как и NumPy.
Начните знакомство с линейными моделями и работой пакета на сайте scikit-learn.
Простая линейная регрессия со scikit-learn
Начнём с простейшего случая линейной регрессии.
Следуйте пяти шагам реализации линейной регрессии:
- Импортируйте необходимые пакеты и классы.
- Предоставьте данные для работы и преобразования.
- Создайте модель регрессии и приспособьте к существующим данным.
- Проверьте результаты совмещения и удовлетворительность модели.
- Примените модель для прогнозов.
Это общие шаги для большинства подходов и реализаций регрессии.
Шаг 1: Импортируйте пакеты и классы
Первым шагом импортируем пакет NumPy и класс LinearRegression
из sklearn.linear_model
:
import numpy as np from sklearn. linear_model import LinearRegression
Теперь у вас есть весь функционал для реализации линейной регрессии.
Фундаментальный тип данных NumPy – это тип массива numpy.ndarray
. Далее под массивом подразумеваются все экземпляры типа numpy.ndarray
.
Класс sklearn.linear_model.LinearRegression
используем для линейной регрессии и прогнозов.
Шаг 2 : Предоставьте данные
Вторым шагом определите данные, с которыми предстоит работать. Входы (регрессоры, x) и выход (предиктор, y) должны быть массивами (экземпляры класса numpy.ndarray
) или похожими объектами. Вот простейший способ предоставления данных регрессии:
x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1)) y = np.array([5, 20, 14, 32, 22, 38])
Теперь у вас два массива: вход x и выход y. Вам нужно вызвать .reshape()
на x, потому что этот массив должен быть двумерным или более точным – иметь одну колонку и необходимое количество рядов. Это как раз то, что определяет аргумент (-1, 1).
Вот как x и y выглядят теперь:
>>> print(x) [[ 5] [15] [25] [35] [45] [55]] >>> print(y) [ 5 20 14 32 22 38]
Шаг 3: Создайте модель
На этом шаге создайте и приспособьте модель линейной регрессии к существующим данным.
Давайте сделаем экземпляр класса LinearRegression
, который представит модель регрессии:
model = LinearRegression()
Эта операция создаёт переменную model
в качестве экземпляра LinearRegression
. Вы можете предоставить несколько опциональных параметров классу LinearRegression
:
- fit_intercept – логический (
True
по умолчанию) параметр, который решает, вычислять отрезок b₀ (True
) или рассматривать его как равный нулю (False
). - normalize – логический (
False
по умолчанию) параметр, который решает, нормализовать входные переменные (True
) или нет (False
). - copy_X – логический (
True
по умолчанию) параметр, который решает, копировать (True
) или перезаписывать входные переменные (False
). - n_jobs – целое или
None
(по умолчанию), представляющее количество процессов, задействованных в параллельных вычислениях.None
означает отсутствие процессов, при -1 используются все доступные процессоры.
Наш пример использует состояния параметров по умолчанию.
Пришло время задействовать model
. Сначала вызовите .fit()
на model
:
model.fit(x, y)
С помощью .fit()
вычисляются оптимальные значение весов b₀ и b₁, используя существующие вход и выход (x и y) в качестве аргументов. Другими словами, .fit()
совмещает модель. Она возвращает self
— переменную model
. Поэтому можно заменить две последние операции на:
model = LinearRegression(). fit(x, y)
Эта операция короче и делает то же, что и две предыдущие.
Шаг 4: Получите результаты
После совмещения модели нужно убедиться в удовлетворительности результатов для интерпретации.
Вы можете получить определения (R²) с помощью .score()
, вызванной на model
:
>>> r_sq = model.score(x, y) >>> print('coefficient of determination:', r_sq) coefficient of determination: 0.715875613747954
.score()
принимает в качестве аргументов предсказатель x и регрессор y, и возвращает значение R².
model
содержит атрибуты .intercept_
, который представляет собой коэффициент, и b₀ с .coef_
, которые представляют b₁:
>>> print('intercept:', model.intercept_) intercept: 5.633333333333329 >>> print('slope:', model.coef_) slope: [0.54]
Код выше показывает, как получить b₀ и b₁. Заметьте, что .intercept_
– это скаляр, в то время как .coef_
– массив.
Примерное значение b₀ = 5.63 показывает, что ваша модель предсказывает ответ 5.63 при x, равном нулю. Равенство b₁ = 0.54 означает, что предсказанный ответ возрастает до 0.54 при x, увеличенным на единицу.
Заметьте, что вы можете предоставить y как двумерный массив. Тогда результаты не будут отличаться:
>>> new_model = LinearRegression().fit(x, y.reshape((-1, 1))) >>> print('intercept:', new_model.intercept_) intercept: [5.63333333] >>> print('slope:', new_model.coef_) slope: [[0.54]]
Как вы видите, пример похож на предыдущий, но в данном случае .intercept_
– одномерный массив с единственным элементом b₀, и .coef_
– двумерный массив с единственным элементом b₁.
Шаг 5: Предскажите ответ
Когда вас устроит ваша модель, вы можете использовать её для прогнозов с текущими или другими данными.
Получите предсказанный ответ, используя .predict()
:
>>> y_pred = model.predict(x) >>> print('predicted response:', y_pred, sep='\n') predicted response: [ 8.33333333 13.73333333 19.13333333 24.53333333 29.93333333 35.33333333]
Применяя .predict()
, вы передаёте регрессор в качестве аргумента и получаете соответствующий предсказанный ответ.
Вот почти идентичный способ предсказать ответ:
>>> y_pred = model.intercept_ + model.coef_ * x >>> print('predicted response:', y_pred, sep='\n') predicted response: [[ 8.33333333] [13.73333333] [19.13333333] [24.53333333] [29.93333333] [35.33333333]]
В этом случае вы умножаете каждый элемент массива x с помощью model.coef_
и добавляете model.intercept_
в ваш продукт.
Вывод отличается от предыдущего примера количеством измерений. Теперь предсказанный ответ – это двумерный массив, в отличии от предыдущего случая, в котором он одномерный.
Измените количество измерений x до одного, и увидите одинаковый результат. Для этого замените x на x.reshape(-1)
, x.flatten()
или x.ravel()
при умножении с помощью model.coef_
.
На практике модель регрессии часто используется для прогнозов. Это значит, что вы можете использовать приспособленные модели для вычисления выходов на базе других, новых входов:
>>> x_new = np.arange(5).reshape((-1, 1)) >>> print(x_new) [[0] [1] [2] [3] [4]] >>> y_new = model.predict(x_new) >>> print(y_new) [5.63333333 6.17333333 6.71333333 7.25333333 7.79333333]
Здесь .predict()
применяется на новом регрессоре x_new
и приводит к ответу y_new
. Этот пример удобно использует arange()
из NumPy для генерации массива с элементами от 0 (включительно) до 5 (исключительно) – 0, 1, 2, 3, и 4.
О LinearRegression
вы узнаете больше из официальной документации.
Теперь у вас есть своя модель линейной регрессии!
Источник
Нравится Data Science? Другие материалы по теме:
- 6 советов, которые спасут специалиста Data Science
- Как изучать Data Science в 2019: ответы на частые вопросы
- Схема успешного развития data-scientist специалиста в 2019 году
4 примера использования линейной регрессии в реальной жизни
Линейная регрессия — один из наиболее часто используемых методов в статистике. Он используется для количественной оценки взаимосвязи между одной или несколькими переменными-предикторами и переменной отклика.
Самая основная форма линейной регрессии известна как простая линейная регрессия, которая используется для количественной оценки взаимосвязи между одной переменной-предиктором и одной переменной-откликом.
Если у нас есть более одной переменной-предиктора, мы можем использовать множественную линейную регрессию, которая используется для количественной оценки взаимосвязи между несколькими переменными-предикторами и переменной ответа.
В этом руководстве представлены четыре различных примера использования линейной регрессии в реальной жизни.
Линейная регрессия Пример из реальной жизни #1Компании часто используют линейную регрессию, чтобы понять взаимосвязь между расходами на рекламу и доходами.
Например, они могут соответствовать простой модели линейной регрессии, используя расходы на рекламу в качестве переменной-предиктора и доход в качестве переменной-отклика. Модель регрессии примет следующий вид:
доход = β 0 + β 1 (расходы на рекламу)
Коэффициент β 0 представляет общий ожидаемый доход, когда расходы на рекламу равны нулю.
Коэффициент β 1 представляет собой среднее изменение общего дохода при увеличении расходов на рекламу на одну единицу (например, на один доллар).
Если β 1 отрицательное значение, это будет означать, что большие расходы на рекламу связаны с меньшим доходом.
Если β 1 близко к нулю, это будет означать, что расходы на рекламу мало влияют на доход.
И если β 1 положительное значение, это будет означать, что увеличение расходов на рекламу связано с увеличением дохода.
В зависимости от значения β 1 компания может принять решение о сокращении или увеличении своих расходов на рекламу.
Линейная регрессия Пример из реальной жизни #2Медицинские исследователи часто используют линейную регрессию, чтобы понять взаимосвязь между дозировкой лекарств и кровяным давлением пациентов.
Например, исследователи могут давать пациентам различные дозы определенного лекарства и наблюдать за реакцией их кровяного давления. Они могут соответствовать простой модели линейной регрессии, используя дозировку в качестве предиктора и артериальное давление в качестве переменной отклика. Модель регрессии будет иметь следующий вид:
кровяное давление = β 0 + β 1 (дозировка)
.
Коэффициент β 1 представляет собой среднее изменение артериального давления при увеличении дозы на одну единицу.
Если β 1 отрицательное значение, это будет означать, что увеличение дозы связано со снижением артериального давления.
Если β 1 близко к нулю, это будет означать, что увеличение дозы не связано с изменением артериального давления.
Если β 1 положительный результат, это будет означать, что увеличение дозы связано с повышением артериального давления.
В зависимости от значения β 1 исследователи могут решить изменить дозировку, назначаемую пациенту.
Линейная регрессия Пример из реальной жизни #3Ученые-агрономы часто используют линейную регрессию для измерения влияния удобрений и воды на урожайность сельскохозяйственных культур.
Например, ученые могут использовать разное количество удобрений и воды на разных полях и посмотреть, как это повлияет на урожайность. Они могут соответствовать модели множественной линейной регрессии, используя удобрения и воду в качестве переменных-предикторов и урожайность в качестве переменной отклика. Модель регрессии примет следующий вид:
Выход урожая = β 0 + β 1 (количество удобрений) + β 2 (Количество воды)
Укажущий доход β 0 без удобрений и воды.
Коэффициент β 1 представляет собой среднее изменение урожайности при увеличении количества удобрений на одну единицу, при условии, что количество воды остается неизменным.
Коэффициент β 2 представляет собой среднее изменение урожайности при увеличении количества воды на одну единицу, при условии, что количество удобрений остается неизменным.
В зависимости от значений β 1 и β 2 ученые могут изменить количество удобрений и воды, используемых для получения максимальной урожайности.
Линейная регрессия Пример из реальной жизни #4Исследователи данных профессиональных спортивных команд часто используют линейную регрессию для измерения влияния различных режимов тренировок на результаты игроков.
Например, специалисты по данным в НБА могут проанализировать, как разное количество еженедельных занятий йогой и тяжелой атлетикой влияет на количество очков, набранных игроком. Они могут соответствовать модели множественной линейной регрессии, используя занятия йогой и занятия тяжелой атлетикой в качестве переменных-предикторов и общее количество баллов, набранных в качестве переменной отклика. Модель регрессии будет иметь следующий вид:
набранных баллов = β 0 + β 1 (занятия йогой) + β 2 (занятия тяжелой атлетикой)
Коэффициент β 0 представляет собой ожидаемое количество очков, набранных игроком, который участвует в нулевых занятиях йогой и нулевых занятиях тяжелой атлетикой.
Коэффициент β 1 представляет собой среднее изменение в баллах, набранных при увеличении количества еженедельных занятий йогой на единицу, при условии, что количество еженедельных занятий тяжелой атлетикой остается неизменным.
Коэффициент β 2 представляет собой среднее изменение в баллах, набранных при увеличении количества еженедельных занятий тяжелой атлетикой на единицу, при условии, что количество еженедельных занятий йогой остается неизменным.
В зависимости от значений β 1 и β 2 специалисты по обработке и анализу данных могут порекомендовать игроку более или менее еженедельно заниматься йогой и тяжелой атлетикой, чтобы максимально набрать очки.
ЗаключениеЛинейная регрессия используется в самых разных реальных ситуациях в различных отраслях промышленности. К счастью, статистическое программное обеспечение позволяет легко выполнять линейную регрессию.
Не стесняйтесь изучить следующие учебные пособия, чтобы узнать, как выполнять линейную регрессию с использованием различных программ:
Как выполнить простую линейную регрессию в Excel
Как выполнить множественную линейную регрессию в Excel
Как выполнить множественную линейную регрессию в R
Как для выполнения множественной линейной регрессии в Stata
Как выполнить линейную регрессию на калькуляторе TI-84
Опубликовано Заком
Просмотреть все сообщения Зака
Базовая регрессия: прогнозирование эффективности использования топлива
В задаче регрессии цель состоит в том, чтобы предсказать вывод непрерывного значения, такого как цена или вероятность. Сравните это с задачей классификации , где цель состоит в том, чтобы выбрать класс из списка классов (например, если на картинке изображено яблоко или апельсин, распознать, какой фрукт изображен на картинке).
В этом учебном пособии используется классический набор данных Auto MPG и демонстрируется, как строить модели для прогнозирования эффективности использования топлива в конце 19-го века. Автомобили 70-х и начала 1980-х годов. Для этого вы снабдите модели описанием многих автомобилей того времени. Это описание включает такие атрибуты, как цилиндры, рабочий объем, мощность и вес.
В этом примере используется Keras API. (Посетите учебные пособия и руководства Keras, чтобы узнать больше.)
# Используйте seaborn для парного графика.
pip install -q seaborn
импортировать matplotlib.pyplot как plt импортировать numpy как np импортировать панд как pd импортировать Seaborn как sns # Сделайте распечатки NumPy более удобными для чтения. np.set_printoptions (точность = 3, подавление = Истина)
импортировать тензорный поток как tf из тензорного потока импортировать керас из слоев импорта tensorflow.keras печать (tf.__версия__)
2.9.1
Набор данных Auto MPG
Набор данных доступен в репозитории машинного обучения UCI.
Получите данные
Сначала загрузите и импортируйте набор данных с помощью pandas:
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data ' column_names = ['MPG', 'Цилиндры', 'Объем двигателя', 'Мощность', 'Вес', «Ускорение», «Год модели», «Происхождение»] raw_dataset = pd.read_csv (url, имена = имена столбцов, na_values='?', комментарий='\t', sep=' ', skipinitialspace=Истина)
набор данных = raw_dataset.copy() набор данных.хвост()
Очистить данные
Набор данных содержит несколько неизвестных значений:
dataset.isna().sum()
0 миль на галлон Цилиндры 0 Смещение 0 6 лошадиных сил Вес 0 Ускорение 0 Год модели 0 Происхождение 0 dtype&двоеточие; int64
Отбросьте эти строки, чтобы сделать этот начальный учебник простым:
набор данных = набор данных. dropna()
Столбец "Происхождение"
является категориальным, а не числовым. Итак, следующим шагом будет горячее кодирование значений в столбце с помощью pd.get_dummies.
tf.keras.Model
для выполнения такого преобразования, но это выходит за рамки этого урока. Ознакомьтесь с учебными пособиями по классификации структурированных данных с использованием слоев предварительной обработки Keras или загрузкой данных CSV.набор данных['Происхождение'] = набор данных['Происхождение'].map({1: 'США', 2: 'Европа', 3: 'Япония'})
набор данных = pd.get_dummies (набор данных, столбцы = ['Происхождение'], префикс = '', prefix_sep = '') набор данных.хвост()
Разделить данные на наборы для обучения и тестирования
Теперь разделите набор данных на обучающий набор и тестовый набор. Вы будете использовать тестовый набор для окончательной оценки ваших моделей.
train_dataset = набор данных.sample(frac=0.8, random_state=0) test_dataset = набор данных.drop (train_dataset.index)
Проверка данных
Просмотрите совместное распределение нескольких пар столбцов из обучающей выборки.
Верхний ряд предполагает, что эффективность использования топлива (MPG) является функцией всех остальных параметров. В других строках указано, что они являются функциями друг друга.
sns.pairplot(train_dataset[['MPG', 'Цилиндры', 'Смещение', 'Вес']], diag_kind='kde')
Давайте также проверим общую статистику. Обратите внимание, что каждая функция охватывает очень разные диапазоны:
train_dataset.describe().transpose()
Отделить объекты от меток
Отделить целевое значение — «метку» — от объектов. Эта метка является значением, которое вы будете обучать модели прогнозировать.
train_features = train_dataset.copy() test_features = test_dataset.copy() train_labels = train_features.pop('MPG') test_labels = test_features.pop('MPG')
Нормализация
В таблице статистики легко увидеть, насколько различаются диапазоны каждой функции:
train_dataset.describe().transpose()[['mean', 'std']]
Рекомендуется нормализовать объекты, использующие разные масштабы и диапазоны.
Одна из причин, по которой это важно, заключается в том, что характеристики умножаются на веса модели. Таким образом, масштаб выходных данных и масштаб градиентов зависят от масштаба входных данных.
Хотя модель может сходиться без нормализации признаков, нормализация делает обучение более стабильным.
Примечание: В нормализации однократных функций нет никаких преимуществ — здесь это сделано для простоты. Дополнительные сведения об использовании слоев предварительной обработки см. в руководстве «Работа со слоями предварительной обработки» и в учебнике «Классификация структурированных данных с использованием слоев предварительной обработки Keras».Слой нормализации
tf.keras.layers.Normalization
— это чистый и простой способ добавить нормализацию признаков в вашу модель.
Первым шагом является создание слоя:
normalizer = tf.keras.layers.Normalization(axis=-1)
Затем подгоните состояние слоя предварительной обработки к данным, вызвав Normalization.adapt
:
normalizer.adapt(np.array(train_features))
Вычислите среднее значение и дисперсию и сохраните их в слое:
print(normalizer.mean.numpy())
[[ 5,478 195,318 104,869 2990,252 15,559 75,898 0,178 0,197 0,624]]
Когда слой вызывается, он возвращает входные данные, каждая функция нормализована независимо:
first = np. array(train_features[:1]) с np.printoptions (точность = 2, подавление = True): print('Первый пример:', сначала) Распечатать() print('Normalized:', нормализатор(first).numpy())
Первый пример&колон; [[ 4. 90. 75. 2125. 14.5 74. 0. 0. 1. ]] Нормированный&двоеточие; [[-0,87 -1,01 -0,79-1,03 -0,38 -0,52 -0,47 -0,5 0,78]]
Линейная регрессия
Перед построением модели глубокой нейронной сети начните с линейной регрессии с использованием одной и нескольких переменных.
Линейная регрессия с одной переменной
Начните с линейной регрессии с одной переменной, чтобы предсказать 'MPG'
из 'Лошадиных сил'
.
Обучение модели с помощью tf.keras
обычно начинается с определения архитектуры модели. Используйте tf. keras.Sequential
, которая представляет собой последовательность шагов.
Модель линейной регрессии с одной переменной состоит из двух шагов:
- Нормализация входных признаков
'Horsepower'
с использованием слоя предварительной обработкиtf.keras.layers.Normalization
. - Примените линейное преобразование (\(y = mx+b\)) для создания 1 вывода с использованием линейного слоя (
tf.keras.layers.Dense
).
Количество входов может быть установлено с помощью аргумент input_shape
или автоматически при первом запуске модели.
Сначала создайте массив NumPy, состоящий из функций 'Horsepower'
. Затем создайте экземпляр tf.keras.layers.Normalization
и подгоните его состояние к данным лошадиных сил:
лошадиных сил = np. array(train_features['Horsepower']) horsepower_normalizer = слои. Нормализация (input_shape = [1,], ось = нет) horsepower_normalizer.adapt(лошадиная сила)
Сборка модели Keras Sequential:
лошадиная сила_модель = tf.keras.Sequential([ лошадиная сила_нормализатор, слои.Dense (единицы = 1) ]) лошадиная сила_model.summary()
Модель&двоеточие; "последовательный" _________________________________________________________________ Слой (тип) Выходная форма Параметр # ================================================== =============== normalization_1 (Нормализация (Нет, 1) 3 ион) плотный (Плотный) (Нет, 1) 2 ================================================== =============== Всего параметров & двоеточие; 5 Обучаемые параметры & двоеточие; 2 Необучаемые параметры & двоеточие; 3 _________________________________________________________________
Эта модель будет предсказывать «миль на галлон»
из «лошадиных сил»
.
Запустите необученную модель на первых 10 значениях «лошадиных сил». Результат не будет хорошим, но обратите внимание, что он имеет ожидаемую форму (10, 1)
:
horsepower_model.predict(hp[:10])
1/1 [=============================] - 0 с 365 мс/шаг массив([[ 0,547], [0,309], [-1,009], [0,767], [0,693], [0,272], [0,822], [ 0,693], [0,181], [0,309]], dtype=float32)
После построения модели настройте процедуру обучения, используя метод Keras Model.compile
. Наиболее важными аргументами для компиляции являются потери
и оптимизатор
, поскольку они определяют, что будет оптимизировано ( mean_absolute_error
) и как (с использованием tf. keras.optimizers.Adam
).
лошадиных сил_модель.компилировать( оптимизатор = tf.keras.optimizers.Adam (learning_rate = 0,1), потеря = 'средняя_абсолютная_ошибка')
Используйте Keras Model.fit
для выполнения обучения на 100 эпох:
%%time история = лошадиная сила_модель.фит( train_features['Лошадиные силы'], train_labels, эпохи=100, # Подавить ведение журнала. подробный=0, # Рассчитать результаты проверки на 20% обучающих данных. валидация_сплит = 0,2)
Время ЦП&колон; пользователь 6,12 с, sys: 1,58 с, всего&двоеточие; 7,71 с Время стены&колон; 4,77 с
Визуализируйте ход обучения модели, используя статистику, хранящуюся в история
объект:
hist = pd.DataFrame(history.history) история['эпоха'] = история. эпоха гист.хвост()
по определению plot_loss (история): plt.plot (история. история ['потеря'], метка = 'потеря') plt.plot(history.history['val_loss'], label='val_loss') plt.ylim([0, 10]) plt.xlabel('Эпоха') plt.ylabel('Ошибка [MPG]') plt.legend() plt.grid(Истина)
plot_loss(история)
Соберите результаты набора тестов на потом:
test_results = {} test_results['лошадиная_модель'] = лошадиная сила_модель.оценить( test_features['Лошадиная сила'], test_labels, подробный=0)
Поскольку это регрессия с одной переменной, прогнозы модели легко просмотреть как функцию входных данных:
x = tf.linspace(0,0, 250, 251) y = модель_лошадиной_силы.predict(x)
8/8 [=============================] - 0 с 2 мс/шаг
по определению plot_horsepower(x, y): plt. scatter(train_features['Лошадиные силы'], train_labels, label='Данные') plt.plot(x, y, color='k', label='Предсказания') plt.xlabel('Лошадиная сила') plt.ylabel('MPG') plt.legend()
plot_лошадиная сила (х, у)
Линейная регрессия с несколькими входными данными
Вы можете использовать почти идентичные настройки для прогнозирования на основе нескольких входных данных. Эта модель по-прежнему делает то же самое \(y = mx+b\), за исключением того, что \(m\) является матрицей, а \(b\) является вектором.
Снова создайте двухэтапную модель Keras Sequential с первым слоем, являющимся нормализатором
( tf.keras.layers.Normalization(axis=-1)
), который вы определили ранее и адаптировали ко всему набору данных:
linear_model = tf.keras.Sequential([ нормализатор, слои. Dense (единицы = 1) ])
Когда вы вызываете Model.predict
для пакета входных данных, он производит единиц = 1
выходных данных для каждого примера:
linear_model.predict(train_features[:10])
1/1 [=============================] - 0 с 50 мс/шаг массив([[ 2.115], [-0,548], [-1,732], [0,632], [1,328], [-1,164], [1,402], [-2,089], [-0,057], [ 2.02 ]], dtype=float32)
При вызове модели будут построены ее матрицы весов — убедитесь, что веса ядра
(\(m\) в \(y=mx+b\)) имеют вид (9, 1)
:
linear_model.layers[1].kernel
Настройте модель с помощью Keras Model. compile
и обучить с Model.fit
на 100 эпох:
linear_model.compile( оптимизатор = tf.keras.optimizers.Adam (learning_rate = 0,1), потеря = 'средняя_абсолютная_ошибка')
%%время история = linear_model.fit( поезд_особенности, train_labels, эпохи=100, # Подавить ведение журнала. подробный=0, # Рассчитать результаты проверки на 20% обучающих данных. валидация_сплит = 0,2)
Время ЦП&колон; пользователь 5,97 с, sys: 1,74 с, всего&двоеточие; 7,71 с Время стены&колон; 4,76 с
Использование всех входных данных в этой регрессионной модели обеспечивает гораздо меньшую ошибку обучения и проверки, чем horsepower_model
, у которой был один вход:
plot_loss(history)
Соберите результаты набора тестов на потом:
test_results['linear_model'] = linear_model. evaluate( test_features, test_labels, подробно=0)
Регрессия с глубокой нейронной сетью (ГНС)
В предыдущем разделе вы реализовали две линейные модели для одного и нескольких входных данных.
Здесь вы реализуете модели DNN с одним и несколькими входами.
Код в основном тот же, за исключением того, что модель расширена за счет включения некоторых «скрытых» нелинейных слоев. Название «скрытый» здесь просто означает, что он не подключен напрямую к входам или выходам.
Эти модели будут содержать на несколько слоев больше, чем линейная модель:
- Слой нормализации, как и прежде (с
horsepower_normalizer
для модели с одним входом инормализатором
для модели с несколькими входами). - Два скрытых, нелинейных,
плотных
слоя с нелинейностью функции активации ReLU (relu
). - Линейный
Плотный
Слой с одним выходом.
Обе модели будут использовать одну и ту же процедуру обучения, поэтому метод compile
включен в функцию build_and_compile_model
ниже.
по умолчанию build_and_compile_model (норма): модель = keras.Sequential([ норма, слои.Dense(64, активация='relu'), слои.Dense(64, активация='relu'), слои.Плотные(1) ]) model.compile (потеря = 'mean_absolute_error', оптимизатор = tf.keras.optimizers.Adam (0,001)) модель возврата
Регрессия с использованием DNN и одного входа
Создайте модель DNN только с «лошадиными силами»
в качестве входных данных и horsepower_normalizer
(определено ранее) в качестве слоя нормализации:
dnn_horsepower_model = build_and_compile_model(horsepower_normalizer)
У этой модели гораздо больше обучаемых параметров, чем у линейных моделей:
dnn_horsepower_model. summary()
Модель&двоеточие; "последовательный_2" _________________________________________________________________ Слой (тип) Выходная форма Параметр # ================================================== =============== normalization_1 (Нормализация (Нет, 1) 3 ион) плотности_2 (Плотные) (Нет, 64) 128 плотности_3 (Плотные) (Нет, 64) 4160 плотности_4 (Плотные) (Нет, 1) 65 ================================================== =============== Всего параметров & двоеточие; 4356 Обучаемые параметры & двоеточие; 4353 Необучаемые параметры & двоеточие; 3 _________________________________________________________________
Обучение модели с помощью Keras Model. fit
:
%%time история = dnn_horsepower_model.fit( train_features['Лошадиные силы'], train_labels, валидация_сплит = 0,2, подробный=0, эпохи=100)
Время ЦП&колон; пользователь 6,54 с, sys: 1,5 с, всего&двоеточие; 8,04 с Время стены&колон; 5,06 с
Эта модель работает немного лучше, чем линейная модель с одним входом horsepower_model
:
plot_loss(history)
Если вы построите прогнозы как функцию 'Horsepower'
, вы должны заметить, как эта модель использует нелинейность, обеспечиваемую скрытыми слоями:
x = tf.linspace(0.0, 250, 251) y = dnn_horsepower_model.predict(x)
8/8 [=============================] - 0 с 2 мс/шаг
plot_лошадиная сила (х, у)
Соберите результаты тестового набора на потом:
test_results['dnn_horsepower_model'] = dnn_horsepower_model. evaluate( test_features['Лошадиные силы'], test_labels, подробный=0)
Регрессия с использованием DNN и нескольких входных данных
Повторите предыдущий процесс, используя все входные данные. Производительность модели немного улучшается по сравнению с проверочным набором данных.
dnn_model = build_and_compile_model (нормализатор) dnn_model.summary()
Модель&двоеточие; "последовательный_3" _________________________________________________________________ Слой (тип) Выходная форма Параметр # ================================================== =============== нормализация (Normalizatio (Нет, 9) 19 н) плотности_5 (Плотные) (Нет, 64) 640 плотности_6 (Плотные) (Нет, 64) 4160 плотности_7 (Плотные) (Нет, 1) 65 ================================================== =============== Всего параметров & двоеточие; 4884 Обучаемые параметры & двоеточие; 4865 Необучаемые параметры & двоеточие; 19_________________________________________________________________
%%время история = dnn_model. fit( поезд_особенности, train_labels, валидация_сплит = 0,2, подробный=0, эпохи=100)
Время ЦП&колон; пользователь 6,53 с, sys: 1,53 с, всего&двоеточие; 8,05 с Время стены&колон; 5,02 с
plot_loss(история)
Соберите результаты в тестовом наборе:
test_results['dnn_model'] = dnn_model.evaluate(test_features, test_labels, verbose=0)
Производительность
Поскольку все модели прошли обучение, вы можете просмотреть производительность их набора тестов:
pd.DataFrame(test_results, index=['Средняя абсолютная ошибка [MPG]']).T
Эти результаты соответствуют ошибке проверки, обнаруженной во время обучения.
Делайте прогнозы
Теперь вы можете делать прогнозы с помощью dnn_model
на тестовом наборе с помощью Keras Model. predict
и просматривать потери:
test_predictions = dnn_model.predict(test_features).flatten() а = plt.axes (аспект = 'равно') plt.scatter(test_labels, test_predictions) plt.xlabel('Истинные значения [MPG]') plt.ylabel('Предсказания [MPG]') лимс = [0, 50] plt.xlim(lims) плт.илим(лимс) _ = plt.plot(лимс, лимс)
3/3 [==============================] - 0 с 2 мс/шаг
Похоже, что модель предсказывает достаточно хорошо.
Теперь проверьте распределение ошибок:
error = test_predictions - test_labels plt.hist(ошибка, бинов=25) plt.xlabel('Ошибка прогноза [MPG]') _ = plt.ylabel('Количество')
Если вы довольны моделью, сохраните ее для последующего использования с Model.save
:
dnn_model.save('dnn_model')
INFO:tensorflow:Активы, записанные в: dnn_model/активы
Если вы перезагрузите модель, она выдаст идентичный результат:
reloaded = tf. keras.models.load_model('dnn_model') test_results['reloaded'] = reloaded.evaluate( test_features, test_labels, подробно=0)
pd.DataFrame(test_results, index=['Средняя абсолютная ошибка [MPG]']).T
Заключение
В этой записной книжке представлены несколько методов решения проблемы регрессии. Вот еще несколько советов, которые могут помочь:
- Среднеквадратическая ошибка (MSE) (
tf.keras.losses.MeanSquaredError
) и средняя абсолютная ошибка (MAE) (tf.keras.losses.MeanAbsoluteError
) являются общими функциями потерь, используемыми для задач регрессии. MAE менее чувствителен к выбросам. Различные функции потерь используются для задач классификации. - Точно так же показатели оценки, используемые для регрессии, отличаются от классификации.
- Если функции числовых входных данных имеют значения в разных диапазонах, каждая функция должна масштабироваться независимо до одного и того же диапазона.
- Переобучение — распространенная проблема для моделей DNN, хотя в этом руководстве она не была проблемой. Посетите учебник Overfit and underfit для получения дополнительной помощи.
# Лицензия Массачусетского технологического института # # Copyright (c) 2017 Франсуа Шолле # # Настоящим предоставляется бесплатное разрешение любому лицу, # копия этого программного обеспечения и связанных с ним файлов документации ("Программное обеспечение"), # иметь дело с Программным обеспечением без ограничений, в том числе без ограничений # права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование, # и/или продавать копии Программного обеспечения, а также разрешать лицам, которым # Программное обеспечение предоставляется для этого при соблюдении следующих условий: # # Вышеприведенное уведомление об авторских правах и это уведомление о разрешении должны быть включены в # все копии или существенные части Программного обеспечения. # # ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ # ПОДРАЗУМЕВАЕТСЯ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, # ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЕ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ # АВТОРЫ ИЛИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГОЕ # ОТВЕТСТВЕННОСТЬ, ВОЗНИКАЮЩАЯ ПО ДОГОВОРУ, ДЕЛИКТУ ИЛИ ИНЫМ ОБРАЗОМ # ИЗ, ВНЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМ # ДЕЛА В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.
Простая линейная регрессия | Простое введение и примеры
Регрессионные модели описывают взаимосвязь между переменными путем подгонки линии к наблюдаемым данным. В моделях линейной регрессии используется прямая линия, а в моделях логистической и нелинейной регрессии — кривая. Регрессия позволяет оценить, как изменяется зависимая переменная по мере изменения независимой переменной (переменных).
Простая линейная регрессия используется для оценки связи между две количественные переменные . Вы можете использовать простую линейную регрессию, когда хотите знать:
- Насколько сильна взаимосвязь между двумя переменными (например, взаимосвязь между осадками и эрозией почвы).
- Значение зависимой переменной при определенном значении независимой переменной (например, степень эрозии почвы при определенном уровне осадков).
Ваша независимая переменная (доход) и зависимая переменная (счастье) являются количественными, поэтому вы можете провести регрессионный анализ, чтобы увидеть, существует ли между ними линейная связь.
Если у вас есть более одной независимой переменной, используйте множественную линейную регрессию.
Содержание
- Допущения простой линейной регрессии
- Как выполнить простую линейную регрессию
- Интерпретация результатов
- Представление результатов
- Можете ли вы предсказать значения вне диапазона ваших данных?
- Часто задаваемые вопросы о простой линейной регрессии
Допущения простой линейной регрессии
Простая линейная регрессия — это параметрический тест , означающий, что он делает определенные предположения о данных. Эти предположения таковы:
- Однородность дисперсии (гомоскедастичность) : размер ошибки в нашем прогнозе существенно не меняется в зависимости от значений независимой переменной.
- Независимость наблюдений : наблюдения в наборе данных были собраны с использованием статистически достоверных методов выборки, и между наблюдениями нет скрытых взаимосвязей.
- Нормальность : Данные имеют нормальное распределение.
Линейная регрессия делает одно дополнительное предположение:
- Отношение между независимой и зависимой переменной является линейным : линия наилучшего соответствия точкам данных является прямой линией (а не кривой или каким-либо группирующим фактором).
Если ваши данные не соответствуют предположениям о гомоскедастичности или нормальности, вы можете вместо этого использовать непараметрический критерий, такой как ранговый критерий Спирмена.
Пример: данные, которые не соответствуют предположениям. Вы считаете, что существует линейная зависимость между потреблением вяленого мяса и заболеваемостью колоректальным раком в США. Однако вы обнаружили, что при высоком уровне потребления мяса было собрано гораздо больше данных, чем при низком. потребления мяса, в результате чего существует гораздо больше различий в оценке показателей заболеваемости раком в низком диапазоне, чем в высоком диапазоне. Поскольку данные нарушают предположение о гомоскедастичности, они не работают для регрессии, но вместо этого вы выполняете ранговый тест Спирмена.Если ваши данные нарушают предположение о независимости наблюдений (например, если наблюдения повторяются во времени), вы можете выполнить линейную модель смешанных эффектов, которая учитывает дополнительную структуру данных.
Как выполнить простую линейную регрессию
Формула простой линейной регрессии
Формула простой линейной регрессии:
- y — прогнозируемое значение зависимой переменной ( y ) для любого заданного значения независимой переменной ( x ).
- B 0 — точка пересечения , прогнозируемое значение y , когда x равно 0.
- B 1 — это коэффициент регрессии — насколько мы ожидаем, что y изменится при увеличении x .
- x — это независимая переменная (переменная, которую мы ожидаем, влияет на y ).
- e — это ошибка оценки, или степень вариации в нашей оценке коэффициента регрессии.
Линейная регрессия находит линию наилучшего соответствия вашим данным путем поиска коэффициента регрессии (B 1 ), который минимизирует общую ошибку (e) модели.
Хотя вы можете выполнить линейную регрессию вручную, это утомительный процесс, поэтому большинство людей используют статистические программы, которые помогают им быстро анализировать данные.
Простая линейная регрессия в R
R — бесплатная, мощная и широко используемая статистическая программа. Загрузите набор данных, чтобы попробовать сами, используя наш пример дохода и счастья.
Набор данных для простой линейной регрессии (.csv)
Загрузите набор данных yield.data в среду R, а затем выполните следующую команду, чтобы сгенерировать линейную модель, описывающую взаимосвязь между доходом и счастьем:
Код R для простой линейной регрессии доход.счастье.lm <- lm(счастье ~ доход, данные = доход.данные)
Этот код берет данные, которые вы собрали данные = доход.данные
, и вычисляет эффект, который независимая переменная доход
оказывает на зависимую переменную счастье
, используя уравнение для линейной модели: lm()
.
Чтобы узнать больше, следуйте нашему полному пошаговому руководству по линейной регрессии в R.
Предотвратите плагиат, запустите бесплатную проверку.
Попробуй бесплатноИнтерпретация результатов
Чтобы просмотреть результаты модели, вы можете использовать функцию summary()
в R:
summary(income. happiness.lm)
Эта функция берет наиболее важные параметры из линейной модели и помещает их в таблицу, которая выглядит следующим образом:
В этой выходной таблице сначала повторяется формула, которая использовалась для получения результатов («Вызов»), а затем обобщаются остатки модели («Остатки»), которые дают представление о том, насколько хорошо модель соответствует реальным данным.
Далее идет таблица «Коэффициенты». Первая строка дает оценки y-отрезка, а вторая строка дает коэффициент регрессии модели.
Строка 1 таблицы помечена как (Перехват)
. Это y-пересечение уравнения регрессии со значением 0,20. Вы можете включить это в свое уравнение регрессии, если хотите предсказать значения счастья в диапазоне доходов, который вы наблюдали:
Следующая строка в таблице «Коэффициенты» — доход. Это строка, описывающая оценочное влияние дохода на сообщаемое счастье:
. Столбец Estimate
представляет собой расчетный эффект , также называемый коэффициентом регрессии или значением r 2 . Число в таблице (0,713) говорит нам о том, что на каждую единицу увеличения дохода (где одна единица дохода = 10 000) соответствует увеличение сообщаемого счастья на 0,71 единицы (где счастье — это шкала от 1 до 10).
Стандартный номер . Столбец Error
отображает стандартную ошибку оценки. Это число показывает, насколько сильно различаются наши оценки взаимосвязи между доходом и счастьем.
В столбце t value
отображается статистика теста . Если не указано иное, тестовая статистика, используемая в линейной регрессии, представляет собой t -значение из двустороннего t-критерия. Чем больше статистика теста, тем меньше вероятность того, что наши результаты были получены случайно.
В столбце Pr(>| t |)
отображается p -значение . Это число говорит нам, насколько вероятно, что мы увидим оценочное влияние дохода на счастье, если нулевая гипотеза об отсутствии эффекта верна.
Поскольку p -значение такое низкое ( p < 0,001), мы можем отклонить нулевую гипотезу и сделать вывод, что доход оказывает статистически значимое влияние на счастье.
Последние три строки сводной информации о модели представляют собой статистические данные о модели в целом. Самое важное, на что следует обратить внимание, это число 9.0136 p -значение модели. Здесь оно значимо ( p < 0,001), что означает, что эта модель хорошо подходит для наблюдаемых данных.
Представление результатов
При сообщении о результатах включите расчетный эффект (т. е. коэффициент регрессии), стандартную ошибку оценки и p -значение. Вы также должны интерпретировать свои цифры, чтобы вашим читателям было понятно, что означает ваш коэффициент регрессии:
Мы обнаружили значительную взаимосвязь ( p < 0,001) между доходом и счастьем (R 2 = 0,71 ± 0,018), с увеличением зарегистрированного счастья на 0,71 единицы на каждые 10 000 увеличения дохода.Также может быть полезно включить график с вашими результатами. Для простой линейной регрессии вы можете просто отобразить наблюдения по осям x и y, а затем включить линию регрессии и функцию регрессии:
Можете ли вы предсказать значения вне диапазона ваших данных?
Нет! Мы часто говорим, что регрессионные модели можно использовать для предсказывает значение зависимой переменной при определенных значениях независимой переменной. Однако это верно только для диапазона значений, где мы фактически измерили отклик.
В качестве примера можно использовать наш регрессионный анализ дохода и счастья. Между 15 000 и 75 000 мы нашли r 2 , равное 0,73 ± 0,0193. Но что, если мы проведем второй опрос людей, зарабатывающих от 75 000 до 150 000?
r 2 для отношения между доходом и счастьем теперь составляет 0,21, или 0,21-единицу увеличения сообщаемого счастья на каждые 10 000 увеличения дохода. Хотя связь по-прежнему статистически значима (p<0,001), наклон стал намного меньше, чем раньше.
Что, если бы мы не измеряли эту группу, а вместо этого экстраполировали линию от доходов 15–75 тыс. до доходов 70–150 тыс.?
Как видите, если бы мы просто экстраполировали данные о доходах от 15 до 75 тысяч, мы бы переоценили счастье людей в диапазоне доходов от 75 до 150 тысяч.
Если мы вместо этого подгоним кривую к данным, она будет гораздо лучше соответствовать реальному образцу.
Похоже, что счастье на самом деле выравнивается при более высоких доходах, поэтому мы не можем использовать ту же линию регрессии, которую мы рассчитали на основе данных о более низких доходах, для прогнозирования счастья при более высоких уровнях дохода.
Даже когда вы видите четкую закономерность в своих данных, вы не можете знать наверняка, сохраняется ли эта закономерность за пределами диапазона фактически измеренных значений. Поэтому важно избегать экстраполяции за пределы того, что на самом деле говорят вам данные.
Часто задаваемые вопросы о простой линейной регрессии
- Что такое регрессионная модель?
Регрессионная модель — это статистическая модель, которая оценивает взаимосвязь между одной зависимой переменной и одной или несколькими независимыми переменными с помощью линии (или плоскости в случае двух или более независимых переменных).
Регрессионную модель можно использовать, когда зависимая переменная является количественной, за исключением случая логистической регрессии, когда зависимая переменная является бинарной.
- Что такое простая линейная регрессия? org/Answer">
- Как рассчитывается ошибка в модели линейной регрессии?
Линейная регрессия чаще всего использует среднеквадратичную ошибку (MSE) для расчета ошибки модели. MSE рассчитывается следующим образом:
- измерение расстояния наблюдаемых значений y от предсказанных значений y при каждом значении x;
- возведения в квадрат каждого из этих расстояний;
- вычисление среднего значения каждого из квадратов расстояний.
Линейная регрессия подгоняет линию к данным, находя коэффициент регрессии, который приводит к наименьшему значению MSE.
Простая линейная регрессия — это модель регрессии, которая оценивает взаимосвязь между одной независимой переменной и одной зависимой переменной с помощью прямой линии. Обе переменные должны быть количественными.
Например, зависимость между температурой и расширением ртути в термометре можно смоделировать с помощью прямой линии: при повышении температуры ртуть расширяется. Эта линейная зависимость настолько надежна, что мы можем использовать ртутные термометры для измерения температуры.
Линейная регрессия в Python — Real Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Начиная с линейной регрессии в Python
Вы живете в эпоху больших объемов данных, мощных компьютеров и искусственного интеллекта. Это только начало. Наука о данных и машинное обучение способствуют распознаванию изображений, разработке автономных транспортных средств, принятию решений в финансовом и энергетическом секторах, достижениям в медицине, развитию социальных сетей и многому другому. Линейная регрессия является важной частью этого.
Линейная регрессия — один из фундаментальных методов статистики и машинного обучения. Если вы хотите заниматься статистикой, машинным обучением или научными вычислениями, есть большая вероятность, что вам это понадобится. Лучше сначала построить прочный фундамент, а затем переходить к более сложным методам.
К концу этой статьи вы узнаете:
- Что такое линейная регрессия
- Что такое линейная регрессия используется для
- Как работает линейная регрессия
- Как реализовать линейную регрессию в Python, шаг за шагом
Бесплатный бонус: Нажмите здесь, чтобы получить доступ к бесплатному руководству по ресурсам NumPy, в котором вы найдете лучшие учебные пособия, видео и книги для улучшения ваших навыков работы с NumPy.
Примите участие в викторине: Проверьте свои знания с помощью нашей интерактивной викторины «Линейная регрессия в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройдите тест »
Регрессия
Регрессионный анализ — одна из важнейших областей статистики и машинного обучения. Существует множество методов регрессии. Линейная регрессия является одним из них.
Удалить рекламу
Что такое регрессия?
Регрессионный поиск взаимосвязей между переменными . Например, вы можете понаблюдать за несколькими работниками какой-нибудь компании и попытаться понять, как их заработная плата зависит от их характеристик , таких как опыт, уровень образования, должность, город работы и так далее.
Это проблема регрессии, в которой данные, относящиеся к каждому сотруднику, представляют собой одно наблюдение . Предполагается, что опыт, образование, должность и город являются самостоятельными характеристиками, а зарплата зависит от них.
Аналогичным образом можно попытаться установить математическую зависимость цен на жилье от площади, количества спален, удаленности от центра города и т.д.
Как правило, в регрессионном анализе вы рассматриваете какое-то интересное явление и имеете ряд наблюдений. Каждое наблюдение имеет два или более признаков. Следуя предположению, что по крайней мере один из признаков зависит от других, вы пытаетесь установить связь между ними.
Другими словами, вам нужно найти функция, которая достаточно хорошо отображает одни функции или переменные в другие .
Зависимые функции называются зависимыми переменными , выходами или откликами . Независимые функции называются независимыми переменными , входными данными , регрессорами или предикторами .
Проблемы регрессии обычно имеют одну непрерывную и неограниченную зависимую переменную. Однако входными данными могут быть непрерывные, дискретные или даже категориальные данные, такие как пол, национальность или торговая марка.
Обычно выходы обозначаются знаком 𝑦, а входы — знаком 𝑥. Если независимых переменных две и более, то их можно представить в виде вектора 𝐱 = (𝑥₁, …, 𝑥ᵣ), где 𝑟 — количество входов.
Когда вам нужна регрессия?
Как правило, вам нужна регрессия, чтобы ответить, влияет ли одно явление на другое и каким образом, или как связаны несколько переменных. Например, вы можете использовать его, чтобы определить , если и в какой степени опыт или пол влияют на заработную плату.
Регрессия также полезна, когда вы хотите спрогнозировать реакцию, используя новый набор предикторов. Например, вы можете попытаться спрогнозировать потребление электроэнергии домохозяйством на следующий час, учитывая температуру наружного воздуха, время суток и количество жителей в этом домохозяйстве.
Регрессия используется во многих областях, включая экономику, информатику и социальные науки. Его важность возрастает с каждым днем с появлением больших объемов данных и повышением осведомленности о практической ценности данных.
Линейная регрессия
Линейная регрессия, вероятно, является одним из наиболее важных и широко используемых методов регрессии. Это один из самых простых методов регрессии. Одним из основных его преимуществ является простота интерпретации результатов.
Формулировка проблемы
При реализации линейной регрессии некоторой зависимой переменной 𝑦 на множестве независимых переменных 𝐱 = (𝑥₁, …, 𝑥ᵣ), где 𝑟 — количество предикторов, предполагается линейная связь между 𝑦 и 𝐱: 𝑦 = 𝛽₀ + 𝛽₁𝑥₁ + ⋯ + 𝛽ᵣ𝑥ᵣ + 𝜀. Это уравнение уравнение регрессии . 𝛽₀, 𝛽₁, …, 𝛽ᵣ — коэффициентов регрессии , а 𝜀 — случайных ошибок .
Линейная регрессия вычисляет оценок коэффициентов регрессии или просто предсказанных весов , обозначаемых 𝑏₀, 𝑏₁, …, 𝑏ᵣ. Эти оценщики определяют оценочную функцию регрессии 𝑓(𝐱) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ + 𝑏ᵣ𝑥ᵣ. Эта функция должна достаточно хорошо фиксировать зависимости между входными и выходными данными.
оцененный или предсказанный ответ , 𝑓(𝐱ᵢ) для каждого наблюдения 𝑖 = 1, …, 𝑛 должен быть как можно ближе к соответствующему фактическому ответу 𝑦ᵢ. Разности 𝑦ᵢ - 𝑓(𝐱ᵢ) для всех наблюдений 𝑖 = 1, …, 𝑛 называются остатками . Регрессия заключается в определении лучших предсказанных весов , то есть весов, соответствующих наименьшим остаткам.
Чтобы получить наилучшие веса, вы обычно минимизируете сумму квадратов остатков (SSR) для всех наблюдений 𝑖 = 1, …, 𝑛: SSR = Σᵢ(𝑦ᵢ - 𝑓(𝐱ᵢ))². Этот подход называется методом обычных наименьших квадратов .
Удалить рекламу
Регрессия производительности
Изменение фактических ответов 𝑦ᵢ, 𝑖 = 1, …, 𝑛 происходит частично из-за зависимости от предикторов 𝐱ᵢ. Тем не менее, есть также дополнительная неотъемлемая дисперсия вывода.
Коэффициент детерминации , обозначаемый как 𝑅², говорит вам, какую величину вариации 𝑦 можно объяснить зависимостью от 𝐱, используя конкретную модель регрессии. Большее значение 𝑅² указывает на лучшее соответствие и означает, что модель может лучше объяснить изменение выходных данных при различных входных данных.
Значение 𝑅² = 1 соответствует SSR = 0. Это идеальное соответствие , поскольку значения прогнозируемых и фактических ответов полностью совпадают друг с другом.
Простая линейная регрессия
Простая линейная регрессия или линейная регрессия с одной переменной является простейшим случаем линейной регрессии, поскольку она имеет одну независимую переменную, 𝐱 = 𝑥.
На следующем рисунке показана простая линейная регрессия:
Пример простой линейной регрессииПри реализации простой линейной регрессии вы обычно начинаете с заданного набора пар вход-выход (𝑥-𝑦). Эти пары являются вашими наблюдениями, они показаны на рисунке зелеными кружками. Например, самое левое наблюдение имеет ввод 𝑥 = 5, а фактический вывод или ответ 𝑦 = 5. Следующее наблюдение имеет 𝑥 = 15 и 𝑦 = 20 и так далее.
Расчетная функция регрессии, представленная черной линией, имеет уравнение 𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥. Ваша цель — рассчитать оптимальные значения предсказанных весов 𝑏₀ и 𝑏₁, которые минимизируют SSR, и определить предполагаемую функцию регрессии.
Значение 𝑏₀, также называемое точкой пересечения , показывает точку, в которой предполагаемая линия регрессии пересекает ось 𝑦. Это значение предполагаемого отклика 𝑓(𝑥) для 𝑥 = 0. Значение 𝑏₁ определяет наклон предполагаемой линии регрессии.
Прогнозируемые ответы, показанные красными квадратами, представляют собой точки на линии регрессии, соответствующие входным значениям. Например, для ввода 𝑥 = 5 прогнозируемый ответ равен 𝑓(5) = 8,33, что представляет крайний левый красный квадрат.
Вертикальные пунктирные серые линии представляют остатки, которые можно рассчитать как Это расстояния между зелеными кружками и красными квадратами. Когда вы реализуете линейную регрессию, вы на самом деле пытаетесь минимизировать эти расстояния и сделать красные квадраты как можно ближе к предопределенным зеленым кругам, насколько это возможно.
Множественная линейная регрессия
Множественная или многомерная линейная регрессия — это случай линейной регрессии с двумя или более независимыми переменными.
Если есть только две независимые переменные, то расчетная функция регрессии равна 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂. Он представляет собой плоскость регрессии в трехмерном пространстве. Цель регрессии состоит в том, чтобы определить значения весов 𝑏₀, 𝑏₁ и 𝑏₂, чтобы эта плоскость была как можно ближе к фактическим ответам, при этом давая минимальное SSR.
Случай с более чем двумя независимыми переменными аналогичен, но более общий. Предполагаемая функция регрессии равна 𝑓(𝑥₁, …, 𝑥ᵣ) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ +𝑏ᵣ𝑥ᵣ, и необходимо определить 𝑟 + 1 вес, когда количество входных данных равно 𝑟.
Полиномиальная регрессия
Полиномиальную регрессию можно рассматривать как обобщенный случай линейной регрессии. Вы предполагаете полиномиальную зависимость между выходом и входом и, следовательно, полиномиальную оценочную функцию регрессии.
Другими словами, помимо линейных членов, таких как 𝑏₁𝑥₁, ваша функция регрессии 𝑓 может включать нелинейные члены, такие как 𝑏₂𝑥₁², 𝑏₃𝑥₁³ или даже 𝑏₄𝑥₁𝑥₂, 𝑏₅𝑥₁²𝑑.
Простейший пример полиномиальной регрессии имеет одну независимую переменную, а оценочная функция регрессии представляет собой полином второй степени: 𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥 + 𝑏₂𝑥².
Теперь помните, что вы хотите вычислить 𝑏₀, 𝑏₁ и 𝑏₂, чтобы минимизировать SSR. Это ваши неизвестные!
Имея это в виду, сравните предыдущую функцию регрессии с функцией 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂, используемой для линейной регрессии. Они выглядят очень похожими и являются линейными функциями неизвестных 𝑏₀, 𝑏₁ и 𝑏₂. Вот почему вы можете решить задача полиномиальной регрессии как линейная задача с членом 𝑥², рассматриваемым как входная переменная.
В случае двух переменных и полинома второй степени функция регрессии имеет эту форму: 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ + 𝑏₅𝑥₂².
Порядок решения проблемы идентичен предыдущему случаю. Вы применяете линейную регрессию для пяти входных данных: 𝑥₁, 𝑥₂, 𝑥₁², 𝑥₁𝑥₂ и 𝑥₂². В результате регрессии вы получаете значения шести весов, минимизирующих SSR: 𝑏₀, 𝑏₁, 𝑏₂, 𝑏₃, 𝑏₄ и 𝑏₅.
Конечно, есть и более общие проблемы, но этого должно быть достаточно, чтобы проиллюстрировать суть.
Удалить рекламу
Недооснащение и переоснащение
Один очень важный вопрос, который может возникнуть при реализации полиномиальной регрессии, связан с выбором оптимальной степени функции полиномиальной регрессии.
Для этого нет простого правила. Это зависит от случая. Однако вам следует помнить о двух проблемах, которые могут последовать за выбором степени: недооснащение и переоснащение .
Недообучение происходит, когда модель не может точно отразить зависимости между данными, обычно вследствие своей простоты. Он часто дает низкий 𝑅² с известными данными и плохими возможностями обобщения при применении к новым данным.
Переоснащение происходит, когда модель изучает как зависимости данных, так и случайные колебания. Другими словами, модель слишком хорошо усваивает существующие данные. Сложные модели, которые имеют много функций или терминов, часто подвержены переоснащению. Применительно к известным данным такие модели обычно дают высокие 𝑅². Однако они часто плохо обобщаются и имеют значительно более низкий 𝑅² при использовании с новыми данными.
На следующем рисунке показаны модели с недостаточным, хорошо подобранным и переоснащенным оборудованием:
Пример недообученных, хорошо подогнанных и переобученных моделейНа верхнем левом графике показана линия линейной регрессии с низким значением 𝑅². Также может быть важно, что прямая линия не может учитывать тот факт, что фактическая реакция увеличивается по мере того, как 𝑥 удаляется от двадцати пяти и приближается к нулю. Это, вероятно, пример недостаточной подготовки.
Верхний правый график иллюстрирует полиномиальную регрессию со степенью, равной двум. В данном случае это может быть оптимальная степень для моделирования этих данных. Модель имеет значение 𝑅², которое во многих случаях является удовлетворительным и хорошо показывает тенденции.
Нижний левый график представляет собой полиномиальную регрессию со степенью, равной трем. Значение 𝑅² выше, чем в предыдущих случаях. Эта модель лучше ведет себя с известными данными, чем предыдущие. Однако он показывает некоторые признаки переобучения, особенно для входных значений, близких к sixy, когда линия начинает уменьшаться, хотя фактические данные этого не показывают.
Наконец, на нижнем правом графике вы можете увидеть идеальное совпадение: шесть точек и линия полинома пятой степени (или выше) дают 𝑅² = 1. Каждый фактический ответ равен соответствующему прогнозу.
В некоторых ситуациях это может быть именно то, что вам нужно. Однако во многих случаях это переоснащенная модель. Скорее всего, он будет плохо работать с невидимыми данными, особенно с входными данными больше пятидесяти.
Например, он предполагает, без каких-либо доказательств, что существует значительное падение числа ответов для 𝑥 больше пятидесяти и что 𝑦 достигает нуля для 𝑥 около шестидесяти. Такое поведение является следствием чрезмерных усилий по изучению и подгонке существующих данных.
Существует множество ресурсов, где можно найти дополнительную информацию о регрессии в целом и о линейной регрессии в частности. Страница регрессионного анализа в Википедии, статья о линейной регрессии в Википедии и статья о линейной регрессии в Академии Хана — хорошие отправные точки.
Пакеты Python для линейной регрессии
Пришло время начать реализацию линейной регрессии в Python. Для этого вы будете применять соответствующие пакеты, их функции и классы.
NumPy — это фундаментальный научный пакет Python, который позволяет выполнять множество высокопроизводительных операций с одномерными и многомерными массивами. Он также предлагает множество математических процедур. Конечно, это с открытым исходным кодом.
Если вы не знакомы с NumPy, вы можете воспользоваться официальным руководством пользователя NumPy и прочитать Учебное пособие по NumPy: ваши первые шаги в науке о данных в Python. Кроме того, Look Ma, No For-Loops: Array Programming with NumPy and Pure Python vs NumPy vs TensorFlow Performance Comparison могут дать вам хорошее представление о приросте производительности, которого вы можете достичь при применении NumPy.
Пакет scikit-learn — это широко используемая библиотека Python для машинного обучения, построенная поверх NumPy и некоторых других пакетов. Он предоставляет средства для предварительной обработки данных, уменьшения размерности, реализации регрессии, классификации, кластеризации и многого другого. Как и NumPy, scikit-learn также имеет открытый исходный код.
Вы можете проверить страницу Обобщенные линейные модели на веб-сайте scikit-learn, чтобы узнать больше о линейных моделях и лучше понять, как работает этот пакет.
Если вы хотите реализовать линейную регрессию и нуждаетесь в функциональности, выходящей за рамки scikit-learn, вам следует рассмотреть statsmodels . Это мощный пакет Python для оценки статистических моделей, выполнения тестов и многого другого. Это также с открытым исходным кодом.
Вы можете найти больше информации о statsmodels на официальном сайте.
Теперь, чтобы следовать этому руководству, вы должны установить все эти пакеты в виртуальную среду:
(venv) $ python -m pip install numpy scikit-learn statsmodels
Это установит NumPy, scikit-learn, statsmodels и их зависимости.
Удалить рекламу
Простая линейная регрессия с помощью scikit-learn
Вы начнете с простейшего случая — простой линейной регрессии. При реализации линейной регрессии есть пять основных шагов:
- Импортируйте нужные пакеты и классы.
- Предоставляйте данные для работы и, в конечном итоге, выполняйте соответствующие преобразования.
- Создайте регрессионную модель и сопоставьте ее с существующими данными.
- Проверьте результаты подгонки модели, чтобы узнать, является ли она удовлетворительной.
- Применить модель для прогнозов.
Эти шаги являются более или менее общими для большинства регрессионных подходов и реализаций. В оставшейся части руководства вы узнаете, как выполнять эти шаги для нескольких различных сценариев.
Шаг 1. Импорт пакетов и классов
Первым шагом является импорт пакета numpy
и класса LinearRegression
из sklearn.linear_model
:
>>>
>>> импортировать numpy как np >>> из sklearn.linear_model импортировать линейную регрессию
Теперь у вас есть все функции, необходимые для реализации линейной регрессии.
Основным типом данных NumPy является тип массива с именем numpy.ndarray
. В остальной части этого руководства используется термин массив для ссылки на экземпляры типа numpy.ndarray
.
Вы будете использовать класс sklearn.linear_model.LinearRegression
для выполнения линейной и полиномиальной регрессии и соответствующих прогнозов.
Шаг 2: Введите данные
Второй шаг — определение данных для работы. Входные данные (регрессоры, 𝑥) и выходные данные (отклик, 𝑦) должны быть массивами или подобными объектами. Это самый простой способ предоставления данных для регрессии:
>>>
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1)) >>> y = np.array([5, 20, 14, 32, 22, 38])
Теперь у вас есть два массива: входной x
и выходной y
. Вы должны вызвать .reshape()
на x
, потому что этот массив должен быть двумерным или, точнее, он должен иметь один столбец и столько строк, сколько необходимо . Это именно то, что аргумент (-1, 1)
из .reshape()
указывает.
Вот как сейчас выглядят x
и y
:
>>>
>>> х массив([[ 5], [15], [25], [35], [45], [55]]) >>> г массив([ 5, 20, 14, 32, 22, 38])
Как видите, x
имеет два измерения, а x. shape
равно (6, 1)
, тогда как y
имеет одно измерение, а y.shape
равно (6)
.
Шаг 3: Создайте модель и подгоните ее
Следующим шагом является создание модели линейной регрессии и ее подгонка с использованием существующих данных.
Создайте экземпляр класса LinearRegression
, который будет представлять модель регрессии:
>>>
>>> модель = линейная регрессия()
Этот оператор создает переменную модели
как экземпляр LinearRegression
. Вы можете указать несколько необязательных параметров для Линейная регрессия
:
-
fit_intercept
— логическое значение, которое, еслиTrue
, решает вычислить точку пересечения 𝑏₀ или, еслиFalse
, считает ее равной нулю. По умолчанию этоTrue
. -
normalize
— логическое значение, которое, еслиTrue
, решает нормализовать входные переменные. По умолчанию он равенFalse
, и в этом случае он не нормализует входные переменные. -
copy_X
— это логическое значение, которое решает, следует ли копировать (True
) или перезаписывать входные переменные (False
). По умолчанию этоTrue
. -
n_jobs
— либо целое число, либоNone
. Он представляет количество заданий, используемых в параллельных вычислениях. По умолчанию этоNone
, что обычно означает одно задание.-1
означает использование всех доступных процессоров.
Ваша модель
, как определено выше, использует значения по умолчанию для всех параметров.
Пришло время начать использовать модель. Во-первых, вам нужно вызвать . fit()
на модели
:
>>>
>>> model.fit(x, y) Линейная регрессия()
С помощью .fit()
вы вычисляете оптимальные значения весов 𝑏₀ и 𝑏₁, используя существующие входные и выходные данные, x
и y
, в качестве аргументов. Другими словами, .fit()
подходит к модели . Он возвращает self
, что является самой переменной модели
. Вот почему вы можете заменить два последних утверждения на это:
>>>
>>> модель = LinearRegression().fit(x, y)
Этот оператор делает то же самое, что и два предыдущих. Это просто короче.
Шаг 4. Получите результаты
После подбора модели вы можете получить результаты, чтобы проверить, работает ли модель удовлетворительно, и интерпретировать ее.
Вы можете получить коэффициент детерминации, 𝑅², с помощью . score()
, вызванного на модели
:
>>>
>>> r_sq = model.score(x, y) >>> print(f"коэффициент детерминации: {r_sq}") коэффициент детерминации: 0,7158756137479542
Когда вы применяете .score()
, аргументами также являются предиктор x
и ответ y
, а возвращаемое значение равно 𝑅².
Атрибуты модель
— это .intercept_
, который представляет коэффициент 𝑏₀, и .coef_
, который представляет 𝑏₁:
>>>
>>> print(f"intercept: {model.intercept_}") перехват: 5.6333333333333329 >>> print(f"наклон: {model.coef_}") наклон: [0,54]
В приведенном выше коде показано, как получить 𝑏₀ и 𝑏₁. Вы можете заметить, что .intercept_
— это скаляр, а .coef_
— массив.
Примечание: По соглашению в scikit-learn символ подчеркивания в конце означает, что атрибут оценивается. В этом примере .intercept_
и .coef_
являются оценочными значениями.
Значение 𝑏₀ приблизительно равно 5,63. Это показывает, что ваша модель предсказывает ответ 5,63, когда 𝑥 равно нулю. Значение 𝑏₁ = 0,54 означает, что прогнозируемый ответ увеличивается на 0,54, когда 𝑥 увеличивается на единицу.
Вы заметите, что вы можете указать и
в виде двумерного массива. В этом случае вы получите аналогичный результат. Вот как это может выглядеть:
>>>
>>> new_model = LinearRegression().fit(x, y.reshape((-1, 1))) >>> print(f"перехват: {new_model.intercept_}") перехват: [5.63333333] >>> print(f"наклон: {new_model.coef_}") наклон: [[0,54]]
Как видите, этот пример очень похож на предыдущий, но в данном случае .intercept_
— одномерный массив с единственным элементом 𝑏₀, а .coef_
— двумерный массив с один элемент 𝑏₁.
Шаг 5. Прогноз ответа
Когда у вас есть удовлетворительная модель, вы можете использовать ее для прогнозов с использованием существующих или новых данных. Чтобы получить прогнозируемый ответ, используйте .predict()
:
>>>
>>> y_pred = model.predict(x) >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [ 8,33333333 13,73333333 19,13333333 24,53333333 29,93333333 35,33333333]
При применении .predict()
, вы передаете регрессор в качестве аргумента и получаете соответствующий прогнозируемый ответ. Это почти идентичный способ предсказания ответа:
>>>
>>> y_pred = model.intercept_ + model.coef_ * x >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [[ 8.33333333] [13,73333333] [19.13333333] [24.53333333] [29,93333333] [35.33333333]]
В этом случае вы умножаете каждый элемент x
на model.coef_
и добавьте к продукту model.intercept_
.
Результат здесь отличается от предыдущего примера только размерами. Прогнозируемый ответ теперь представляет собой двумерный массив, тогда как в предыдущем случае он имел одно измерение.
Если уменьшить количество размеров x
до одного, то эти два подхода дадут один и тот же результат. Вы можете сделать это, заменив x
на x.reshape(-1)
, x.flatten()
или x.ravel()
при умножении на model.coef_
.
На практике для прогнозов часто применяются регрессионные модели. Это означает, что вы можете использовать подобранные модели для расчета выходных данных на основе новых входных данных:
>>>
>>> x_new = np.arange(5).reshape((-1, 1)) >>> х_новый массив([[0], [1], [2], [3], [4]]) >>> y_new = model.predict(x_new) >>> у_новый массив([5.63333333, 6.17333333, 6.71333333, 7.25333333, 7.79333333])
Здесь .predict()
применяется к новому регрессору x_new
и дает ответ y_new
. В этом примере удобно использовать arange()
из numpy
для создания массива с элементами от 0 включительно до 5, но без учета, то есть 0
, 1
, 2
, 3
, и 4
.
Дополнительную информацию о LinearRegression
можно найти на странице официальной документации.
Удалить рекламу
Множественная линейная регрессия с помощью scikit-learn
Вы можете реализовать множественную линейную регрессию, выполнив те же шаги, что и для простой регрессии. Основное отличие состоит в том, что ваш массив x
теперь будет иметь два или более столбца.
Шаги 1 и 2: Импорт пакетов и классов и предоставление данных
Сначала вы импортируете numpy
и sklearn.linear_model.LinearRegression
и предоставляете известные входные и выходные данные:
>>>
>>> импортировать numpy как np >>> из sklearn.linear_model импортировать линейную регрессию >>> х = [ ... [0, 1], [5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35] ... ] >>> у = [4, 5, 20, 14, 32, 22, 38, 43] >>> х, у = нп. массив(х), нп.массив(у)
Это простой способ определить ввод x
и вывод y
. Вы можете распечатать x
и y
, чтобы увидеть, как они выглядят сейчас:
>>>
>>> х массив([[ 0, 1], [ 5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35]]) >>> г массив([ 4, 5, 20, 14, 32, 22, 38, 43])
В множественной линейной регрессии x
— это двумерный массив, по крайней мере, с двумя столбцами, а y
— обычно одномерный массив. Это простой пример множественной линейной регрессии, и x
имеет ровно два столбца.
Шаг 3: Создайте модель и подгоните ее
Следующим шагом является создание регрессионной модели как экземпляра LinearRegression
и ее сопоставление с .fit()
:
>>>
>>> модель = LinearRegression(). fit(x, y)
Результатом этого оператора является переменная модели
, ссылающаяся на объект типа LinearRegression
. Он представляет регрессионную модель, приспособленную к существующим данным.
Шаг 4. Получите результаты
Свойства модели можно получить так же, как и в случае простой линейной регрессии:
>>>
>>> r_sq = model.score(x, y) >>> print(f"коэффициент детерминации: {r_sq}") коэффициент детерминации: 0,86159356776 >>> print(f"перехват: {model.intercept_}") перехват: 5.522579819 >>> print(f"коэффициенты: {model.coef_}") коэффициенты: [0,44706965 0,25502548]
Вы получаете значение 𝑅², используя .score()
и значения оценок коэффициентов регрессии с .intercept_
и .coef_
. Опять же, .intercept_
содержит смещение 𝑏₀, а теперь .coef_
представляет собой массив, содержащий 𝑏₁ и 𝑏₂.
В этом примере точка пересечения приблизительно равна 5,52, и это значение прогнозируемого отклика при 𝑥₁ = 𝑥₂ = 0. Увеличение 𝑥₁ на 1 дает увеличение прогнозируемого отклика на 0,45. Точно так же, когда 𝑥₂ увеличивается на 1, ответ увеличивается на 0,26.
Шаг 5. Прогноз ответа
Прогнозы также работают так же, как и в случае простой линейной регрессии:
>>>
>>> y_pred = model.predict(x) >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [ 5,77760476 8,012953 12,73867497 17,9744479 23,97529728 29,4660957 38,78227633 41,27265006]
Прогнозируемый ответ получается с помощью .predict()
, что эквивалентно следующему:
>>>
>>> y_pred = model.intercept_ + np.sum(model.coef_ * x, axis=1) >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [ 5,77760476 8,012953 12,73867497 17,9744479 23,97529728 29,4660957 38,78227633 41,27265006]
Вы можете предсказать выходные значения, умножая каждый столбец ввода на соответствующий вес, суммируя результаты и добавляя точку пересечения к сумме.
Вы можете применить эту модель и к новым данным:
>>>
>>> x_new = np.arange(10).reshape((-1, 2)) >>> х_новый массив([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]) >>> y_new = model.predict(x_new) >>> у_новый массив ([ 5.77760476, 7.18179502, 8.58598528, 9.954, 11.3943658])
Это прогноз с использованием модели линейной регрессии.
Удалить рекламу
Полиномиальная регрессия с помощью scikit-learn
Реализация полиномиальной регрессии с помощью scikit-learn очень похожа на линейную регрессию. Есть только один дополнительный шаг: вам нужно преобразовать массив входных данных, чтобы включить нелинейные термины, такие как 𝑥².
Шаг 1. Импорт пакетов и классов
В дополнение к numpy
и sklearn.linear_model.LinearRegression
вы также должны импортировать класс PolynomialFeatures
из sklearn. preprocessing
:
>>>
>>> импортировать numpy как np >>> из sklearn.linear_model импортировать линейную регрессию >>> из sklearn.preprocessing импортировать PolynomialFeatures
Импорт завершен, и у вас есть все необходимое для работы.
Шаг 2а: Введите данные
Этот шаг определяет ввод и вывод и аналогичен случаю линейной регрессии:
>>>
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1)) >>> y = np.array([15, 11, 2, 8, 25, 32])
Теперь у вас есть ввод и вывод в подходящем формате. Имейте в виду, что вам нужно ввести двумерный массив . Вот почему используется .reshape()
.
Шаг 2b: преобразование входных данных
Это новый шаг , который необходимо реализовать для полиномиальной регрессии!
Как вы узнали ранее, вам нужно включить 𝑥² — и, возможно, другие термины — в качестве дополнительных функций при реализации полиномиальной регрессии. По этой причине вы должны преобразовать входной массив x
, чтобы он содержал любые дополнительные столбцы со значениями 𝑥² и, в конечном итоге, дополнительные функции.
Входной массив можно преобразовать несколькими способами, например, используя вставить ()
из numpy
. А вот класс PolynomialFeatures
очень удобен для этой цели. Идите вперед и создайте экземпляр этого класса:
>>>
>>> трансформатор = PolynomialFeatures (степень = 2, include_bias = False)
Преобразователь переменной
ссылается на экземпляр PolynomialFeatures
, который можно использовать для преобразования входных данных x
.
Вы можете указать несколько необязательных параметров для Полиномиальные характеристики
:
-
Degree
— целое число (2
по умолчанию), представляющее степень функции полиномиальной регрессии. -
interaction_only
— это логическое значение (False
по умолчанию), которое решает, следует ли включать только функции взаимодействия (True
) или все функции (False
). -
include_bias
является логическим значением (True
по умолчанию), который решает, включать ли столбец смещения или пересечения значений1
(True
) или нет (False
).
В этом примере используются значения по умолчанию для всех параметров, кроме include_bias
. Иногда вам захочется поэкспериментировать со степенью функции, и в любом случае для удобочитаемости может быть полезно предоставить этот аргумент.
Прежде чем применять трансформатор
, вам нужно установить его с .fit()
:
>>>
>>> трансформатор.подходит(х) Полиномиальные характеристики (include_bias = False)
После установки преобразователя
он готов к созданию нового модифицированного входного массива. Вы применяете .transform()
для этого:
>>>
>>> x_ = трансформатор.преобразование(х)
Это преобразование входного массива с помощью .transform()
. Он принимает входной массив в качестве аргумента и возвращает измененный массив.
Вы также можете использовать .fit_transform()
, чтобы заменить три предыдущих оператора только одним:
>>>
>>> x_ = PolynomialFeatures (степень = 2, include_bias = False).fit_transform (x)
С помощью .fit_transform()
вы подгоняете и преобразуете входной массив в одном выражении. Этот метод также принимает входной массив и фактически делает то же самое, что и .fit()
и .transform()
, вызываемые в этом порядке. Он также возвращает измененный массив. Вот как выглядит новый входной массив:
>>>
>>> х_ массив([[ 5. , 25.], [15., 225.], [25., 625.], [35., 1225.], [45., 2025.], [ 55., 3025.]])
Модифицированный входной массив содержит два столбца: один с исходными входными данными, а другой с их квадратами. Вы можете найти больше информации о PolynomialFeatures
на странице официальной документации.
Шаг 3: Создайте модель и подгоните ее
Этот шаг такой же, как и в случае линейной регрессии. Вы создаете и подгоняете модель:
>>>
>>> model = LinearRegression().fit(x_, y)
Теперь регрессионная модель создана и подобрана. Он готов к применению. Вы должны иметь в виду, что первый аргумент .fit()
— это модифицированный входной массив x_
, а не исходный x
.
Шаг 4. Получите результаты
Получить свойства модели можно так же, как и в случае линейной регрессии:
>>>
>>> r_sq = model. score(x_, y)
>>> print(f"коэффициент детерминации: {r_sq}")
коэффициент детерминации: 0,86262498563
>>> print(f"перехват: {model.intercept_}")
перехват: 21.372321428571436
>>> print(f"коэффициенты: {model.coef_}")
коэффициенты: [-1,32357143 0,02839286]
Опять же, .score()
возвращает 𝑅². Его первый аргумент также является модифицированным вводом x_
, а не x
. Значения весов связаны с .intercept_
и .coef_
. Здесь .intercept_
представляет 𝑏₀, а .coef_
ссылается на массив, содержащий 𝑏₁ и 𝑏₂.
Вы можете получить очень похожий результат с другими аргументами преобразования и регрессии:
>>>
>>> x_ = PolynomialFeatures (степень = 2, include_bias = True).fit_transform (x)
Если вы вызываете PolynomialFeatures
с параметром по умолчанию include_bias=True
, или если его просто опустить, то вы получите новый входной массив x_
с дополнительным крайним левым столбцом, содержащим только 1
значений. Этот столбец соответствует перехвату. Вот как выглядит измененный входной массив в этом случае:
>>>
>>> х_ массив([[1.000e+00, 5.000e+00, 2.500e+01], [1.000e+00, 1.500e+01, 2.250e+02], [1.000e+00, 2.500e+01, 6.250e+02], [1.000e+00, 3.500e+01, 1.225e+03], [1.000e+00, 4.500e+01, 2.025e+03], [1.000e+00, 5.500e+01, 3.025e+03]])
Первый столбец x_
содержит единицы, второй содержит значения x
, а третий содержит квадраты x
.
Перехват уже включен в крайний левый столбец единиц, и вам не нужно включать его снова при создании экземпляра LinearRegression
. Таким образом, вы можете предоставить fit_intercept=False
. Вот как выглядит следующий оператор:
>>>
>>> model = LinearRegression(fit_intercept=False).fit(x_, y)
Переменная модель
снова соответствует новому входному массиву x_
. Поэтому в качестве первого аргумента следует передавать x_
вместо x
.
Этот подход дает следующие результаты, аналогичные предыдущему случаю:
>>>
>>> r_sq = model.score(x_, y)
>>> print(f"коэффициент детерминации: {r_sq}")
коэффициент детерминации: 0,86262498564
>>> print(f"перехват: {model.intercept_}")
перехват: 0.0
>>> print(f"коэффициенты: {model.coef_}")
коэффициенты: [21,37232143 -1,32357143 0,02839286]
Вы видите, что теперь .intercept_
равно нулю, но .coef_
на самом деле содержит 𝑏₀ в качестве первого элемента. Все остальное то же самое.
Шаг 5. Прогноз ответа
Если вы хотите получить предсказанный ответ, просто используйте .predict()
, но помните, что аргумент должен быть модифицированным вводом x_
вместо старого x
:
>>>
>>> y_pred = model. predict(x_) >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [15,46428571 7,286 6,02857143 9,82857143 19,30714286 34,46428571]
Как видите, предсказание работает почти так же, как и в случае линейной регрессии. Это просто требует измененного ввода вместо оригинала.
Вы можете применить идентичную процедуру, если у вас есть несколько входных переменных . У вас будет входной массив с более чем одним столбцом, но все остальное будет таким же. Вот пример:
>>>
>>> # Шаг 1: Импорт пакетов и классов >>> импортировать numpy как np >>> из sklearn.linear_model импортировать линейную регрессию >>> из sklearn.preprocessing импортировать PolynomialFeatures >>> # Шаг 2а: Предоставьте данные >>> х = [ ... [0, 1], [5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35] ... ] >>> у = [4, 5, 20, 14, 32, 22, 38, 43] >>> х, у = нп.массив(х), нп.массив(у) >>> # Шаг 2b: преобразование входных данных >>> x_ = PolynomialFeatures(степень=2, include_bias=False). fit_transform(x) >>> # Шаг 3: Создайте модель и подгоните ее >>> model = LinearRegression().fit(x_, y) >>> # Шаг 4: Получите результаты >>> r_sq = model.score(x_, y) >>> перехват, коэффициенты = model.intercept_, model.coef_ >>> # Шаг 5: Предсказать ответ >>> y_pred = model.predict(x_)
Этот пример регрессии дает следующие результаты и прогнозы:
>>>
>>> print(f"коэффициент детерминации: {r_sq}") коэффициент детерминации: 0,94537014422 >>> print(f"перехват: {перехват}") перехват: 0,8430556452395876 >>> print(f"коэффициенты:\n{коэффициенты}") коэффициенты: [ 2,44828275 0,16160353 -0,15259677 0,47928683 -0,4641851 ] >>> print(f"предсказанный ответ:\n{y_pred}") прогнозируемый ответ: [ 0,54047408 11,36340283 16,07809622 15,79139 29,73858619 23,50834636 39.05631386 41.046]
В этом случае существует шесть коэффициентов регрессии, включая перехват, как показано в расчетной функции регрессии 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ + 𝑏₅𝑥₂².
Вы также можете заметить, что полиномиальная регрессия дала более высокий коэффициент детерминации, чем множественная линейная регрессия для той же проблемы. Поначалу можно было подумать, что получение такого большого 𝑅² — отличный результат. Может быть.
Однако в реальных ситуациях наличие сложной модели и 𝑅², очень близкого к единице, также может быть признаком переобучения. Чтобы проверить производительность модели, вы должны протестировать ее с новыми данными, то есть с наблюдениями, которые не использовались для подгонки или обучения модели. Чтобы узнать, как разделить набор данных на тренировочный и тестовый подмножества, ознакомьтесь с разделом Разделить набор данных с помощью функции train_test_split() от scikit-learn.
Удалить рекламу
Расширенная линейная регрессия со статистическими моделями
Вы также можете реализовать линейную регрессию в Python с помощью пакета statsmodels. Как правило, это желательно, когда вам нужны более подробные результаты.
Процедура аналогична процедуре scikit-learn.
Шаг 1: Импорт пакетов
Сначала вам нужно выполнить импорт. Помимо numpy
нужно импортировать statsmodels.api
:
>>>
>>> импортировать numpy как np >>> импортировать statsmodels.api как sm
Теперь у вас есть необходимые пакеты.
Шаг 2. Предоставление данных и преобразование входных данных
Вы можете предоставлять входные и выходные данные так же, как и при использовании scikit-learn:
>>>
>>> х = [ ... [0, 1], [5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35] ... ] >>> у = [4, 5, 20, 14, 32, 22, 38, 43] >>> х, у = нп.массив(х), нп.массив(у)
: Входной и выходной массивы созданы, но работа еще не завершена.
Вам нужно добавить столбец единиц к входным данным, если вы хотите, чтобы статистические модели вычисляли перехват 𝑏₀. По умолчанию 𝑏₀ не учитывается. Это всего лишь один вызов функции:
>>>
>>> x = sm.add_constant(x)
Вот как вы добавляете столбец единиц к x
с помощью add_constant()
. Он принимает входной массив x
в качестве аргумента и возвращает новый массив со столбцом единиц, вставленным в начале. вот так x
и y
смотрим сейчас:
>>>
>>> х массив([[ 1., 0., 1.], [1., 5., 1.], [1., 15., 2.], [1., 25., 5.], [1., 35., 11.], [1., 45., 15.], [1., 55., 34.], [ 1., 60., 35.]]) >>> г массив([ 4, 5, 20, 14, 32, 22, 38, 43])
Вы можете видеть, что модифицированное x
имеет три столбца: первый столбец единиц, соответствующий 𝑏₀ и заменяющий точку пересечения, а также два столбца исходных признаков.
Шаг 3: Создайте модель и подгоните ее
Модель регрессии, основанная на обычном методе наименьших квадратов, является экземпляром класса statsmodels. regression.linear_model.OLS
. Вот как вы можете получить его:
>>>
>>> модель = sm.OLS(y, x)
Здесь следует быть осторожным! Обратите внимание, что первый аргумент — это вывод, за которым следует ввод. Это противоположный порядок соответствующих функций scikit-learn.
Есть еще несколько необязательных параметров. Чтобы найти больше информации об этом классе, вы можете посетить страницу официальной документации.
После того, как ваша модель создана, вы можете применить к ней .fit()
:
>>>
>>> результаты = model.fit()
Вызывая .fit()
, вы получаете переменную results
, которая является экземпляром класса statsmodels.regression.linear_model.RegressionResultsWrapper
. Этот объект содержит много информации о модели регрессии.
Шаг 4. Получите результаты
Переменная results
относится к объекту, который содержит подробную информацию о результатах линейной регрессии. Объяснение этих результатов выходит далеко за рамки этого руководства, но здесь вы узнаете, как их извлечь.
Вы можете вызвать .summary()
, чтобы получить таблицу с результатами линейной регрессии:
>>>
>>> print(results.summary()) Результаты регрессии МНК ================================================== ============================ отд. Переменная: y R-квадрат: 0,862 Модель: OLS Adj. R-квадрат: 0,806 Метод: метод наименьших квадратов F-статистика: 15,56 Дата: Чт, 12 мая 2022 г. Вероятность (F-статистика): 0,00713 Время: 14:15:07 Логарифмическая вероятность: -24,316 № Наблюдения: 8 AIC: 54,63 Остатки Df: 5 BIC: 54,87 Модель ДФ: 2 Тип ковариации: неустойчивая ================================================== ============================ coef std err t P>|t| [0,025 0,975] -------------------------------------------------- --------------------------- константа 5,5226 4,431 1,246 0,268 -5,867 16,912 х1 0,4471 0,285 1,567 0,178 -0,286 1,180 х2 0,2550 0,453 0,563 0,598 -0,910 1,420 ================================================== ============================ Омнибус: 0,561 Дурбин-Ватсон: 3,268 Prob(Omnibus): 0,755 Ярке-Бера (JB): 0,534 Перекос: 0,380 Вероятность (JB): 0,766 Эксцесс: 1,987 Конд. № 80.1 ================================================== ============================ Предупреждения: [1] Стандартные ошибки предполагают, что ковариационная матрица ошибок верно указано.
Эта таблица очень обширна. Вы можете найти множество статистических значений, связанных с линейной регрессией, включая 𝑅², 𝑏₀, 𝑏₁ и 𝑏₂.
В этом конкретном случае вы можете получить предупреждение о том, что kurtosistest действителен только для n>=20
. Это связано с небольшим количеством наблюдений, приведенных в примере.
Вы можете извлечь любое значение из таблицы выше. Вот пример:
>>>
>>> print(f"коэффициент детерминации: {results.rsquared}") коэффициент детерминации: 0,86159356776 >>> print(f"скорректированный коэффициент детерминации: {results.rsquared_adj}") скорректированный коэффициент детерминации: 0,8062314962259487 >>> print(f"коэффициенты регрессии: {results.params}") коэффициенты регрессии: [5,52257928 0,44706965 0,25502548]
Вот как вы получаете некоторые результаты линейной регрессии:
-
. rsquared
содержит 𝑅². -
.rsquared_adj
представляет скорректированное 𝑅², то есть 𝑅², скорректированное в соответствии с количеством входных признаков. -
.params
ссылается на массив с 𝑏₀, 𝑏₁ и 𝑏₂.
Вы также можете заметить, что эти результаты идентичны результатам, полученным с помощью scikit-learn для той же задачи.
Чтобы узнать больше о результатах линейной регрессии, посетите страницу официальной документации.
Шаг 5. Прогноз ответа
Вы можете получить прогнозируемый ответ на входные значения, используемые для создания модели, используя .fittedvalues
или .predict()
с входным массивом в качестве аргумента:
>>>
>>> print(f"прогнозируемый ответ:\n{results.fittedvalues}") прогнозируемый ответ: [ 5,77760476 8,012953 12,73867497 17,9744479 23,97529728 29,4660957 38,78227633 41,27265006] >>> print(f"предсказанный ответ:\n{results. predict(x)}") прогнозируемый ответ: [ 5,77760476 8,012953 12,73867497 17,9744479 23,97529728 29,4660957 38,78227633 41,27265006]
Это прогнозируемый ответ для известных входных данных. Если вам нужны прогнозы с новыми регрессорами, вы также можете применить .predict()
с новыми данными в качестве аргумента:
>>>
>>> x_new = sm.add_constant(np.arange(10).reshape((-1, 2))) >>> х_новый массив([[1., 0., 1.], [1., 2., 3.], [1., 4., 5.], [1., 6., 7.], [1., 8., 9.]]) >>> y_new = results.predict(x_new) >>> у_новый массив ([ 5.77760476, 7.18179502, 8.58598528, 9.954, 11.3943658])
Вы можете заметить, что предсказанные результаты совпадают с результатами, полученными с помощью scikit-learn для той же задачи.
Удалить рекламу
За пределами линейной регрессии
Линейная регрессия иногда не подходит, особенно для нелинейных моделей высокой сложности.
К счастью, есть другие методы регрессии, подходящие для случаев, когда линейная регрессия не работает. Некоторыми из них являются машины опорных векторов, деревья решений, случайный лес и нейронные сети.
Существует множество библиотек Python для регрессии с использованием этих методов. Большинство из них бесплатны и имеют открытый исходный код. Это одна из причин, по которой Python является одним из основных языков программирования для машинного обучения.
Пакет scikit-learn предоставляет средства для использования других методов регрессии способом, очень похожим на то, что вы видели. Он содержит классы для машин опорных векторов, деревьев решений, случайного леса и многого другого с методами .fit()
, .predict()
, .score()
и так далее.
Заключение
Теперь вы знаете, что такое линейная регрессия и как ее реализовать с помощью Python и трех пакетов с открытым исходным кодом: NumPy, scikit-learn и statsmodels. Вы используете NumPy для обработки массивов. Линейная регрессия реализована следующим образом:
- scikit-learn , если вам не нужны подробные результаты и вы хотите использовать подход, совместимый с другими методами регрессии
- статистические модели , если вам нужны расширенные статистические параметры модели
Оба подхода заслуживают изучения и дальнейшего изучения. Ссылки в этой статье могут быть очень полезными для этого.
В этом руководстве вы изучили следующие шаги для выполнения линейной регрессии в Python:
- Импорт пакетов и классов , которые вам нужны
- Предоставить данные для работы и, в конечном итоге, выполнить соответствующие преобразования
- Создайте регрессионную модель и подгоните ее к существующим данным
- Проверьте результаты подгонки модели, чтобы узнать, подходит ли модель
- Применить модель для прогнозов
Вот и все! Если у вас есть вопросы или комментарии, пожалуйста, оставьте их в разделе комментариев ниже.
Примите участие в викторине: Проверьте свои знания с помощью нашей интерактивной викторины «Линейная регрессия в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройди тест »
Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Начиная с линейной регрессии в Python
Машинное обучение Python Linear Regression
❮ Предыдущая Далее ❯
Регрессия
Термин регрессия используется, когда вы пытаетесь найти взаимосвязь между переменными.
В машинном обучении и статистическом моделировании эта взаимосвязь используется для прогнозирования исхода будущих событий.
Линейная регрессия
Линейная регрессия использует взаимосвязь между точками данных для проведения прямой линии через все они.
Эту строку можно использовать для прогнозирования будущих значений.
В машинном обучении очень важно предсказывать будущее.
Как это работает?
В Python есть методы для поиска взаимосвязи между точками данных и построения линии линейной регрессии. мы покажем вам как использовать эти методы вместо того, чтобы повторять математические формулы.
В приведенном ниже примере по оси X отложен возраст, а по оси Y — скорость. Мы зафиксировали возраст и скорость 13 автомобилей, когда они проезжали через городская тюрьма. Давайте посмотрим, можно ли использовать собранные нами данные в линейной регрессия:
Пример
Начните с построения графика рассеяния:
импортировать matplotlib.pyplot как plt
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
[99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y)
plt.show()
Результат:
Выполнить пример »
Пример
Импортировать scipy
и провести линию линейной регрессии:
импортировать matplotlib. pyplot как plt
из статистики импорта scipy
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
[99,86,87,88,111,86,103,87,94,78,77,85,86]
наклон, точка пересечения, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
обратный наклон * x + точка пересечения
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()
Результат:
Выполнить пример 6 »
Объяснение примера
Импортируйте необходимые модули.
Вы можете узнать о модуле Matplotlib в нашем учебном пособии по Matplotlib.
Вы можете узнать о модуле SciPy в нашем учебном пособии по SciPy.
импортировать matplotlib.pyplot как plt
из scipy
статистика импорта
Создайте массивы, представляющие значения осей x и y:
х = [5,7,8,7,2,17,2,9,4,11,12,9,6]
у = [99,86,87,88,111,86,103,87,94,78,77 ,85,86]
Выполнение метода, который возвращает некоторые важные ключевые значения линейной регрессии:
наклон, перехват, r,
p, std_err = stats. linregress(x, y)
Создайте функцию, которая использует наклон
и перехватывает
значений, чтобы вернуть новое значение. Этот
новое значение представляет, где на оси Y будет соответствующее значение x
размещено:
def myfunc(x):
возвратный наклон * x + перехват
Пропустить через функцию каждое значение массива x. Это приведет к новому массив с новыми значениями для оси Y:
mymodel = list(map(myfunc, x))
Нарисуйте исходную диаграмму рассеяния:
plt.scatter(x, y)
Нарисуйте линию линейной регрессии:
plt.plot(x, mymodel)
Показать диаграмму:
plt.show()
R для отношения
Важно знать, как соотношение между значениями ось абсцисс и значения оси у равны, если нет зависимости линейной регрессия не может быть использована для предсказания чего-либо.
Это отношение - коэффициент корреляции - называется р
.
Значение r
находится в диапазоне от -1 до 1, где 0 означает отсутствие связи, а 1
(и -1)
означает 100% родство.
Python и модуль Scipy вычислят это значение для вас, все, что вам нужно нужно передать ему значения x и y.
Пример
Насколько мои данные соответствуют линейной регрессии?
из статистики импорта scipy
x =
[5,7,8,7,2,17,2,9,4,11,12,9,6]
г =
[99,86,87,88,111,86,103,87,94,78,77,85,86]
наклон, точка пересечения, r, p, std_err = stats.linregress(x, y)
print(r)
Попробуйте сами »
Примечание: Результат -0,76 показывает, что существует связь, не идеально, но это указывает на то, что мы могли бы использовать линейную регрессию в будущем предсказания.
Предсказание будущих значений
Теперь мы можем использовать собранную информацию для предсказания будущих значений.
Пример: Попробуем предсказать скорость 10-летнего автомобиля.
Для этого нам нужна та же функция myfunc()
из примера выше:
защита myfunc(x):
наклон обратного хода * x + точка пересечения
Пример
Предсказать скорость 10-летнего автомобиля:
из статистики импорта scipy
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
[99,86,87,88,111,86,103,87,94,78,77,85,86]
наклон, точка пересечения, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
наклон возврата * x + точка пересечения
скорость = myfunc(10)
печать(скорость)
Выполнить пример »
Пример предсказал скорость 85,6, которую мы также могли прочитать из схема:
Плохо подходит?
Давайте создадим пример, где линейная регрессия не будет лучшим методом прогнозировать будущие значения.
Пример
Эти значения для осей x и y должны привести к очень плохой подгонке для линейного регрессия:
импортировать matplotlib. pyplot как plt
из статистики импорта scipy
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36, 66,72,40]
у =
[21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
уклон, перехват, r, p, std_err = stats.linregress(x, y)
def
myfunc(x):
наклон возврата * x + точка пересечения
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()
Результат:
Выполнить пример »
И 0 r
0 отношения?
Пример
Вы должны получить очень низкое значение r
.
импортировать numpy
из статистики импорта scipy
х =
[89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
г =
[21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
наклон, точка пересечения, r, p, std_err = stats.linregress(x, y)
print(r)
Попробуйте сами »
Результат: 0,013 указывает на очень плохую взаимосвязь и говорит нам, что этот набор данных не подходит для линейной регрессии .
❮ Предыдущий Далее ❯
Пример регрессии: простая модель
Модели линейной регрессии
Примечания к линейным регрессионный анализ (файл в формате pdf)
Введение к линейному регрессионному анализу
Математика простой регрессии
Примеры регрессии
· Средние бейсбольные мячи
· Продажи пива и цена, часть 1: описание анализ
· Продажи пива по сравнению с цена, часть 2: примерка простой модели
· Продажи пива и цена, часть 3: трансформации переменных
· Продажи пива по сравнению с цена, часть 4: дополнительные предикторы
· Северная Каролина природный газ потребление в зависимости от температуры
· Дополнительные наборы данных регрессии на regressit.com
Что искать в вывод регрессии
Что хорошо
значение для R-квадрат?
Каков итог? Как сравнивать модели
Проверка допущений линейной регрессии
Дополнительные примечания по регрессии
анализ
Пошаговые и всевозможные регрессии
Файл Excel с
простые формулы регрессии
Файл Excel с регрессией формулы в матричной форме
Примечания к логистической регрессии (новинка!)
Если вы используете Преуспейте в своей работе или в обучении в какой-либо степени, вам следует ознакомиться с последними выпуск RegressIt, бесплатной надстройки Excel для линейной и логистической регрессии. Смотри в regressit.com . Версия с линейной регрессией работает как на ПК, так и на компьютерах Mac и имеет более богатый и простой в использовании интерфейс и намного лучше спроектированный вывод, чем другие надстройки для статистического анализа. Может стать хорошим дополнением, если не заменить любое программное обеспечение регрессии, которое вы используете в настоящее время, Excel или что-то другое. RegressЭто отличный инструмент для интерактивного презентации, онлайн-обучение регрессии и разработка видеороликов примеры регрессионного моделирования. Включает обширный встроенный документацию и всплывающие учебные заметки, а также некоторые новые функции для поддерживать систематическую оценку и проверку работы учащихся в больших масштабах. Там это отдельная логистика регрессионная версия с очень интерактивные таблицы и диаграммы, которые работают на ПК. ReressIt также сейчас включает в себя двустороннюю интерфейс с R, который позволяет вы можете запускать модели линейной и логистической регрессии в R без написания кода что угодно.
Если у вас есть использовали собственную надстройку Excel для анализа данных для регрессии (Пакет инструментов анализа), это время остановиться. Не имеет изменился с тех пор, как он был впервые представлен в 1993 году, и это был плохой дизайн даже тогда. Это игрушка (причем неуклюжая), а не инструмент для серьезной работы. Посещать эта страница для обсуждения: Что не так с пакетом инструментов анализа Excel для регрессии
Уже выполнены некоторые описательные данные анализ, в ходе которого мы довольно много узнали об отношениях и времени закономерности между ценой пива и переменными продаж пива, давайте наивно перейти к соответствует простой модели регрессии предсказать продажи 18 упаковок по цене 18 упаковок . Я говорю «наивно», потому что, хотя мы знаем, что существует очень сильная связь между ценой и спрос, диаграмма рассеяния показала, что есть проблема с одним из предположения регрессионной модели, а именно, что вертикальные отклонения от линия регрессии (ошибки предсказания) должна иметь примерно одинаковую дисперсию для маленькие и большие предсказания. Также, есть некоторые логические проблемы с моделью, которая предполагает связь между продажи и цена должны быть совершенно линейными в ситуациях, когда наименьшие значения продаж крошечные по сравнению с крупнейшими. Отложив эти опасения в сторону момент, вот стандартный вывод сводки регрессии (в формате RegressIt) для модели, в которой SALES_18PK является зависимой переменной, а PRICE_18PK — независимая переменная:
Числа интерпретируются следующим образом:
a. оценочное уравнение регрессии распечатано вверху: Прогноз CASES_18PK = 1 812 - 93,007*PRICE_18PK 90 005 . Он показывает, как коэффициенты, которые появляются в сводной таблице регрессии ниже, должны использоваться при прогнозировании продаж от цены. Это уравнение прямая линия, точек пересечения которой равны 1812 (высота линии в точке, где PRICE_18PK равна нулю, к которому он никогда не приблизится на практике) и который имеет наклон -93.007, что означает модель предсказывает, что на 93 92 636 меньше 92 637 случаев стоит 18 упаковок будут продаваться по $1 увеличение в цене за кейс.
Точка пересечения в регрессионной модели редко является числом с какой-либо прямой экономической
или физический смысл. Важный
Что нужно помнить о регрессионной модели, так это то, что линия регрессии всегда проходит через центр масс модели.
data , т. е. точка в координатном пространстве, в которой все переменные равны
к их средним значениям. Склон
коэффициент(ы) говорят вам, как ожидаемое значение зависимой переменной будет
удаляться от своего среднего значения по мере того, как независимые переменные удаляются от своих
собственные средние значения. От
таблицы описательной статистики, мы знаем, что центр масс данных для
эта регрессия представляет собой точку, в которой цена упаковки по 18 штук составляет 16,73 долл. США, а
количество проданных ящиков – 257.
Одно только знание этих двух чисел говорит нам о том, что мы должны предсказать 257 случаев.
продано, когда цена за коробку составляет 16,73 доллара США, независимо от результатов примерки
регрессионная модель.
б. Самое важное число в выводе, кроме коэффициентов модели, — стандартная ошибка регрессии, которая в данном примере равна 131. (до 3 знаков после запятой это 130,529, но его следует округлить до целого значения для представления. Не путайте свою аудиторию с десятичных разрядов больше, чем значащих. Многие статистические программы обычно отображают 10 или более цифр точность в их выходных таблицах!) Стандартная ошибка регрессия — это расчетное стандартное отклонение «шума» в зависимая переменная, которая необъяснима независимой переменной (переменными), и это нижняя граница стандартного отклонения любой из моделей ошибки прогноза при условии, что модель верна. Расчетное стандартное отклонение ошибка прогноза на самом деле немного больше чем стандартная ошибка регрессии, потому что она также должна учитывать учитывать погрешности оценки параметров модели, но не большая разница, если размер выборки достаточно велик, а значения независимые переменные не являются слишком экстремальными. (Подробнее о том, как рассчитываются точные стандартные ошибки прогнозов, см. см. «Математика простых регрессии» или «Примечания о линейных раздаточный материал «регрессия».)
Из обычного эмпирического правила двух стандартных ошибок следует, что 95% доверительный интервал для прогноза от модели примерно равно к точечному прогнозу плюс-минус 2 раза стандартная ошибка регрессии . точное число стандартных ошибок для использования в этом расчете «критическое t-значение» для двустороннего 95% доверительного интервала с 50 степеней свободы, что составляет 2,009, как показано в правом конце регрессии. таблица статистики. (Количество «степени свободы» для t-статистики — это количество данных баллов минус количество оцененных коэффициентов, что в данном случае равно 52 минус 2. случай.)
Итак, в этой модели значение 131 для стандартной ошибки регрессии
означает (приблизительно), что 95% доверительный интервал для любого прогноза будет равен
к моменту прогноза плюс-минус 262 случая. Здесь мы начинаем обнаруживать проблему: количество проданных коробок обычно
гораздо меньше 100 в недели, когда уровень цен высок. Если модель способна дать
точный точечный прогноз на такую неделю, то было бы глупо вычислять
понизить доверительный интервал для прогноза, вычтя из него 262!
г. Поскольку это простая регрессия
модели, R-квадрат — это просто квадрат корреляции между ценой и
продажи: 0,751 = (-0,866) 2 . Это доля
дисперсия зависимой переменной, которая «объясняется»
независимая переменная, т. е. дробная величина, на которую изменяется дисперсия
ошибок меньше, чем дисперсия зависимой переменной. Скорректировано R-квадрат - это несмещенных оценка
доли объясненной переменной с учетом размера выборки и
количество переменных в модели, и оно всегда немного меньше, чем
нескорректированный R-квадрат, хотя в данном случае разница несущественна: оба числа округляются до 75%. Скорректировано
R-квадрат тесно связан со стандартной ошибкой
регрессия: один идет вверх по мере того, как
другой идет вниз, для моделей, приспособленных к одному и тому же образцу того же зависимого
переменная.
д.
расчетный перехват составляет 1812 (случаев) со стандартной ошибкой 128. стандартная ошибка коэффициента составляет расчетных
стандартное отклонение ошибки при его оценке. По обычному эмпирическому правилу приблизительно соответствует 95% доверительному интервалу для
коэффициент — это точечная оценка плюс или минус две стандартные ошибки, т. е.
1812 +/- 2(128) = [1556,2068] для перехвата. точно 95% доверительный интервал составляет [1555,2069], как показано в сводке регрессии.
стол. Разница незначительна,
и в любом случае доверительные пределы имеют смысл только в том случае, если модель
предположения примерно верны.
эл. Коэффициент PRICE_18PK равен -93 с
стандартная ошибка 7,6, а его 95% доверительный интервал составляет [-108,-78]. Это не слишком широкий интервал
(при таком раскладе), так что получается, что у нас есть достаточно точная оценка
силы соотношения цены и спроса. Но опять же, эти цифры
имеет смысл только в том случае, если допущения модели приблизительно верны, т. в частности, предположение о том, что одно и то же соотношение цены и спроса сохраняется во всех
весь диапазон цен.
ф. t-статистика коэффициента оценка представляет собой ее значение в баллах, деленное на ее стандартную ошибку, т. е. ее «Число стандартных ошибок отличается от нуля». В целом нас не волнует t-stat перехвата , если это не возможно, чтобы все независимые переменные одновременно стремились к нулю, и мы интересует, должен ли прогноз также быть нулевым в таком ситуация. (Это не относится к делу здесь.) T-статистика наклона коэффициент -93,007/7,581 = -12,269. По обычному эмпирическому правилу оценка коэффициента значительно отличается от нуля (на уровне значимости 0,05), если его t-стат больше 2 по величине , что, безусловно, верно здесь. (Опять же, точное критическое t-значение для этой модели 2,009, а не 2, но разница не существенна.)
t-статистика оценки коэффициента превышает заданное критическое значение
тогда и только тогда, когда соответствующий доверительный интервал для коэффициента
не включать ноль: это
математическое тождество. Так что, это
эквивалентно проверке, превышает ли величина t-статистики
критическое значение для данного уровня достоверности или проверить,
соответствующий доверительный интервал включает ноль.
г. В таблица дисперсионного анализа , интересны только цифры F-статистика и ее P-значение . F-статистика проверяет, все ли независимые переменные в модели являются «совместно» значимыми, независимо от того, являются ли они индивидуально значимы. В простая регрессионная модель, есть только одна независимая переменная, поэтому F-статистика проверяет ее значимость в одиночку. На самом деле в простой регрессии модели, F-статистика - это просто квадрат t-статистики наклона коэффициент, и их P-значения одинаковы. В этом случае у нас есть 150,527 = (-12,269) 2 . F-статистика обычно не интерес, если у вас нет группы переменных, которые логически должны быть взяты вместе как единица (скажем, фиктивные переменные для набора взаимоисключающих условий, как вы могли бы иметь в спланированном эксперименте), и, следовательно, Таблица дисперсионного анализа свернута (скрыта) по умолчанию в RegressIt.
Теперь, чтобы лучше понять, насколько хорошо модель соответствует данным, давайте посмотрим на графический вывод. Во-первых, вот график подгонки линии, который показывает линию регрессии накладывается на данные. Это точно такая же линия, которая была наложена на диаграмму рассеяния в описательный анализ данных, за исключением того, что он также показывает 95% доверительные интервалы для прогнозы.
Здесь мы видим пару проблем. Во-первых, как уже отмечалось, необъяснимые отклонения от линии регрессии намного больше для низкой цены уровней, чем для высоких уровней цен. В соответствии с предположениями регрессии модели, они должны быть примерно одного размера по всему диапазону, т.к. на это указывает тот факт, что 95-процентные доверительные интервалы имеют почти постоянную ширина во всем диапазоне. В теории, на каждом уровне цен примерно 95% данных должны попадать в 95% доверительные интервалы и по вертикали отклонения от линии регрессии должны быть одинаково нормально распределены. Также обратите внимание, что в середине ценового диапазона есть дыра: нет значений в между низкими 15 и низкими 18 долларами. Это не обязательно проблема что касается регрессионной модели: нет требования, чтобы значения независимых переменных имели какой-либо определенный вид распределение. Они могут даже принимать только целочисленные значения, возможно, просто 0 и 1. Важно то, как значения зависимых переменных распределены, для любых заданных значений независимые переменные).
В этом сюжете наблюдается еще более серьезная логическая проблема: модель предсказывает отрицательные значения продаж для цен выше 19,50 долларов США за коробку (чуть-чуть вне исторического диапазона), а нижний 95% доверительный предел поскольку прогноз отрицателен для цен выше примерно 16,50 долларов за коробку . Итак, прогнозы и уверенность интервалы для высоких ценовых уровней нельзя воспринимать всерьез! Одна альтернативная стратегия моделирования, которая напрашивается сам собой, что данные о продажах упаковок по 18 штук можно разбить на две подмножества, одно для низких цен и одно для высоких цен, в свете того факта, что промежуточные уровни цен обычно не используются. Однако предположим, что мы интересно предсказать, что может случиться если бы мы установили цену на какое-то произвольное значение в среднем диапазоне, для что необходимо подогнать одну модель ко всем данным.
Далее давайте посмотрим на время график серии фактических и прогнозируемых значений , чтобы увидеть, как прогнозы и данные выстраиваются по неделям.
Здесь мы видим, что модель немного переоценила умеренные продажи всплески, которые произошли в начале года и значительно занижают прогноз большие всплески, которые произошли позже в этом году. Всегда следует ожидать, что этот сюжет показывают некоторую регрессию к среднему в среднем, но ясно, что модель делает ошибки для больших прогнозов очень систематическим образом. В общем, этот заговор наиболее полезен для обнаружение значительных шаблонов времени в отклонениях между прогнозами и фактическими значениями. Здесь проблема не во времени в ошибках как таковых.
Остальная часть вывода диаграммы для этой модели показана ниже. Остаточное число по сравнению с числом наблюдения диаграмма (т. е. остатки по сравнению с время, что всегда важно для данных временных рядов) показывает некоторые детали, которые на предыдущем графике было не так очевидно, а именно, что модель сделал несколько серьезных над предсказаний (ошибки отрицательного знака) наряду с серьезными заниженные прогнозы. Этот сюжет также несколько неудовлетворителен тем, что он показывает, что почти все самые большие ошибки модели произошли во второй половине год. Причина этого ясна: большая часть манипуляций с ценами и всплески продаж произошли во второй половине года. Тем не менее, модель предполагает, что ошибки должна иметь одинаковую дисперсию во все моменты времени, независимо от значений независимых переменных.
График остатков и предсказаний это то место, куда вы идете искать доказательства нелинейностей (который будет отображаться здесь как изогнутый шаблон) или гетероскедастичность ( ошибок которые не имеют одинаковой дисперсии для всех уровней прогнозов). Здесь мы видим очень сильный гетероскедастичность, которая также была очевидна на графике подгонки: модель допускает большие ошибки, когда делать большие прогнозы. Для простой регрессионной модели График остаточного и прогнозируемого значений — это просто «наклонная» копия подгонки линии. график, на котором линия регрессии наложена на ось X, а также переворачивается слева направо, если коэффициент наклона отрицательный, как здесь.
Наконец (внизу этой страницы), у нас есть график остаточной гистограммы и нормальный квантильный график , который показывает форму распределения ошибок, а также статистика Андерсона-Дарлинга , которая обеспечивает числовую меру степени, в которой распределение ошибок ненормальный. Важность проверка на нормальность распределения ошибок состоит в том, что формулы для расчет доверительных интервалов для прогнозов основан на свойствах нормальное распределение. Если ошибка распределение далеко от нормального, то будет некоторое систематическое превышение или недооценка «вероятностей хвостовой области». Здесь видны выбросы на графике гистограммы и S-образный узор, который виден в норме квантильный график указывает на существенно ненормальное распределение, как и график AD стат, значение которого 2,591 намного выше критического значения 0,75 [1,04] для значимость на уровне 0,05 [0,01].
Статистика AD, как и другие статистические тесты на нормальность, не должна придается преувеличенное значение, особенно когда размер выборки очень мал или очень большой. С очень маленьким образцов трудно вообще что-либо определить о форме ошибки распределения, а при очень больших выборках даже незначительное отклонение от нормы будут отображаться как статистически значимые. (Я предпочитаю сосредоточиться на форме узора, если таковой имеется, т.е. видно на нормальном графике квантилей, а также внимательно посмотреть на самые крайние ошибки, чтобы попытаться выяснить, что там пошло не так.) И, как и другие диагностические тесты статистика для предположений модели, Статистика AD - это не итоговая строка , просто маленький красный флажок, который может быть, а может и нет.