R Проста, многолинейна и поетапна регресия [с пример]

В този урок ще научите

Проста линейна регресия

Линейната регресия отговаря на прост въпрос: Можете ли да измерите точна връзка между една целева променлива и набор от предиктори?

Най -простият от вероятностните модели е моделът с права линия:

където

  • y = Зависима променлива
  • x = Независима променлива
  • = компонент на случайна грешка
  • = прихващане
  • = Коефициент на x

Помислете за следния сюжет:

Уравнението е е прихващането. Ако x е равно на 0, y ще бъде равно на прихващането, 4.77. е наклонът на линията. Той показва в каква пропорция y се променя, когато x се променя.

За оценка на оптималните стойности на и , използвате метод, наречен Обикновени най -малки квадратчета (OLS) . Този метод се опитва да намери параметрите, които свеждат до минимум сумата от квадратните грешки, т.е. вертикалното разстояние между прогнозираните y стойности и действителните y стойности. Разликата е известна като термин за грешка .

Преди да оцените модела, можете да определите дали линейната връзка между y и x е правдоподобна, като начертаете график на разсейване.

Скатер

Ще използваме много прост набор от данни, за да обясним концепцията за проста линейна регресия. Ще внесем средните ръстове и тегла за американските жени. Наборът от данни съдържа 15 наблюдения. Искате да измерите дали височините са положително свързани с теглата. | _+_ |

Изход:

Графикът на разсейване предполага обща тенденция y да се увеличава с увеличаване на x. В следващата стъпка ще измерите с колко се увеличава за всяко допълнително.

Оценки за най -малки квадрати

В една проста регресия на OLS изчислението на и е прям. Целта не е да се покаже извеждането в този урок. Ще напишете само формулата.

Искате да оцените:

Целта на OLS регресията е да минимизира следното уравнение:

където

е действителната стойност и е прогнозната стойност.

Решението за е

Отбележи, че означава средната стойност на x

Решението за е

В R можете да използвате функцията cov () и var () за оценка и можете да използвате функцията mean () за оценка

 library(ggplot2) path <- 'https://raw.githubusercontent.com/on2vhf-edu/R-Programming/master/women.csv' df <-read.csv(path) ggplot(df,aes(x=height, y = weight))+ geom_point() 

Изход:

 beta <- cov(df$height, df$weight) / var (df$height) beta
##[1] 3.45

Изход:

alpha <- mean(df$weight) - beta * mean(df$height) alpha

Бета коефициентът предполага, че за всяка допълнителна височина теглото се увеличава с 3,45.

Оценяването на просто линейно уравнение ръчно не е идеално. R осигурява подходяща функция за оценка на тези параметри. Скоро ще видите тази функция. Преди това ще ви представим как да изчислите на ръка прост модел на линейна регресия. По време на пътуването си на учен за данни едва или почти ще оцените прост линеен модел. В повечето ситуации регресионните задачи се изпълняват на много оценители.

Множествена линейна регресия

По-практическите приложения на регресионния анализ използват модели, които са по-сложни от простия линеен модел. Вероятностният модел, който включва повече от една независима променлива, се нарича множество регресионни модели . Общата форма на този модел е:

В матрична нотация можете да пренапишете модела:

Зависимата променлива y вече е функция от k независими променливи. Стойността на коефициента определя приноса на независимата променлива и .

Представяме накратко предположението, което направихме за случайната грешка на OLS:

  • Средно равно на 0
  • Дисперсия, равна на
  • Нормална дистрибуция
  • Случайните грешки са независими (в вероятностен смисъл)

Трябва да решите за , вектора на регресионните коефициенти, които свеждат до минимум сумата от квадратните грешки между прогнозираните и действителните y стойности.

Решението със затворена форма е:

с:

  • посочва транспонирайте на матрицата X
  • посочва обратима матрица

Използваме набора от данни mtcars. Вече сте запознати с набора от данни. Нашата цел е да предвидим мили на галон за набор от функции.

Непрекъснати променливи

Засега ще използвате само непрекъснатите променливи и ще оставите настрана категоричните характеристики. Променливата am е двоична променлива, която има стойност 1, ако трансмисията е ръчна и 0 за автоматични автомобили; vs също е двоична променлива. | _+_ |

Изход:

## [1] -87.51667

Можете да използвате функцията lm () за изчисляване на параметрите. Основният синтаксис на тази функция е: | _+_ |

Не забравяйте, че уравнението е от следната форма

в R.

  • Символът = се заменя с ~
  • Всеки x се заменя с името на променливата
  • Ако искате да изпуснете константата, добавете -1 в края на формулата

Пример:

Искате да оцените теглото на индивидите въз основа на техния ръст и приходи. Уравнението е

Уравнението в R е записано, както следва:

y ~ X1+X2+...+Xn # С прихващане

Така че за нашия пример:

  • Претеглете ~ височина + приходи

Вашата цел е да оцените мили на галон въз основа на набор от променливи. Уравнението за оценка е:

Ще изчислите първата си линейна регресия и ще запазите резултата в подходящия обект. | _+_ |

Код Обяснение

  • модел<- mpg ~ . disp + hp + drat + wt: Съхранявайте модела за оценка
  • lm (модел, df): Оценете модела с рамката за данни df
 library(dplyr) df % select(-c(am, vs, cyl, gear, carb)) glimpse(df) 

Резултатът не предоставя достатъчно информация за качеството на прилягането. Можете да получите достъп до повече подробности, като значимостта на коефициентите, степента на свобода и формата на остатъците с функцията summary (). | _+_ |

Изход:

 ## Observations: 32 ## Variables: 6 ## $ mpg 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.... ## $ disp 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1... ## $ hp 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ... ## $ drat 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9... ## $ wt 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3... ## $ qsec 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2... 

Заключение от горния изход на таблицата

  • Горната таблица доказва, че има силна отрицателна връзка между wt и пробег и положителна връзка с drat.
  • Само променливата wt има статистическо въздействие върху mpg. Не забравяйте, че за да проверим хипотеза в статистиката, използваме:
    • H0: Няма статистическо въздействие
    • H3: Предикторът има значително въздействие върху y
    • Ако стойността на р е по -ниска от 0,05, това показва, че променливата е статистически значима
  • Коригиран R-квадрат: Отклонението се обяснява с модела. Във вашия модел моделът обяснява 82 процента от дисперсията на y. R на квадрат винаги е между 0 и 1. Колкото по -високо, толкова по -добре

Можете да изпълните теста ANOVA, за да оцените ефекта на всяка функция върху отклоненията с функцията anova (). | _+_ |

Изход:

 lm(formula, data, subset) Arguments: -formula: The equation you want to estimate -data: The dataset used -subset: Estimate the model on a subset of the dataset

По -конвенционален начин за оценка на производителността на модела е да се покаже остатъкът спрямо различни мерки.

Можете да използвате функцията plot (), за да покажете четири графики:

- Остатъци срещу подходящи стойности

- Нормален Q-Q график: Теоретичен квартил срещу стандартизирани остатъци

- Мащабно местоположение: Подгодени стойности срещу квадратни корени на стандартизираните остатъци

- Остатъци срещу ливъридж: Ливъридж срещу стандартизирани остатъци

Добавяте кода par (mfrow = c (2,2)) преди plot (fit). Ако не добавите този ред код, R ви подканва да натиснете командата enter, за да покажете следващата графика. | _+_ |

Код Обяснение

  • (mfrow = c (2,2)): връща прозорец с четирите графики един до друг.
  • Първите 2 добавят броя редове
  • Втората 2 добавя броя колони.
  • Ако пишете (mfrow = c (3,2)): ще създадете прозорец с 3 реда и 2 колони
 model <- mpg~.disp + hp + drat + wt fit <- lm(model, df) fit

Изход:

Формулата lm () връща списък, съдържащ много полезна информация. Можете да получите достъп до тях с подходящия обект, който сте създали, последван от знака $ и информацията, която искате да извлечете.

- коефициенти: `падат $ коефициенти`

- остатъци: `падат $ остатъци`

- вградена стойност: `fit $ fit.values`

Фактори регресия

В последната оценка на модела регресирате mpg само по непрекъснати променливи. Лесно е да добавите факторни променливи към модела. Добавяте променливата am към вашия модел. Важно е да сте сигурни, че променливата е факторно ниво, а не непрекъсната. | _+_ |

Изход:

 ## ## Call: ## lm(formula = model, data = df) ## ## Coefficients: ## (Intercept) disp hp drat wt ## 16.53357 0.00872 -0.02060 2.01577 -4.38546 ## qsec ## 0.64015 

R използва първото ниво на фактор като базова група. Трябва да сравните коефициентите на другата група с основната група.

Поетапна регресия

Последната част от този урок се занимава с поетапна регресия алгоритъм. Целта на този алгоритъм е да добавя и премахва потенциални кандидати в моделите и да запазва тези, които имат значително влияние върху зависимата променлива. Този алгоритъм има значение, когато наборът от данни съдържа голям списък от предиктори. Не е необходимо ръчно да добавяте и премахвате независимите променливи. Поетапната регресия е изградена, за да избере най -добрите кандидати, които да отговарят на модела.

Нека да видим в действие как работи. Използвате набора от данни mtcars с непрекъснатите променливи само за педагогическа илюстрация. Преди да започнете анализ, добре е да установите вариации между данните с корелационна матрица. Библиотеката на GGally е разширение на ggplot2.

Библиотеката включва различни функции за показване на обобщена статистика, като корелация и разпределение на всички променливи в матрица. Ще използваме функцията ggscatmat, но можете да се обърнете към винетка за повече информация относно библиотеката на GGally.

Основният синтаксис за ggscatmat () е: | _+_ |

Показвате корелацията за всичките си променливи и решавате коя от тях ще бъде най -добрият кандидат за първата стъпка от поетапната регресия. Има някои силни корелации между вашите променливи и зависимата променлива, mpg. | _+_ |

Изход:

Поетапна регресия

Изборът на променливи е важна част, за да пасне на модел. Поетапната регресия автоматично ще извърши процеса на търсене. За да прецените колко възможни възможности за избор има в набора от данни, изчислявате с k е броят на предикторите. Количеството възможности нараства с броя на независимите променливи. Ето защо трябва да имате автоматично търсене.

Трябва да инсталирате пакета olsrr от CRAN. Пакетът все още не е наличен в Anaconda. Следователно, вие го инсталирате директно от командния ред: | _+_ |

Можете да начертаете всички подмножества от възможности с критериите за съответствие (т.е. R-квадрат, Коригиран R-квадрат, Байесов критерий). Моделът с най -ниските критерии за AIC ще бъде крайният модел. | _+_ |

Код Обяснение

  • mpg ~ .: Изградете модела за оценка
  • lm (модел, df): Стартирайте модела OLS
  • ols_all_subset (подходящо): Изградете графиките със съответната статистическа информация
  • сюжет (тест): Начертайте графиките

Изход:

Моделите на линейна регресия използват t-тест за оценка на статистическото въздействие на независима променлива върху зависимата променлива. Изследователите определят максималния праг на 10 процента, като по -ниските стойности показват по -силна статистическа връзка. Стратегията на поетапната регресия е изградена около този тест за добавяне и премахване на потенциални кандидати. Алгоритъмът работи както следва:

  • Стъпка 1: Регресирайте всеки предиктор на y поотделно. А именно, регресирайте x_1 на y, x_2 на y до x_n. Съхранявайте р-стойност и запазете регресора с р-стойност по-ниска от определен праг (0,1 по подразбиране). Прогнозите със значимост по -ниска от прага ще бъдат добавени към крайния модел. Ако никоя променлива няма р-стойност по-ниска от входящия праг, тогава алгоритъмът спира и имате крайния си модел само с константа.
  • Стъпка 2: Използвайте предиктора с най-ниската p-стойност и добавя отделно една променлива. Регресирате константа, най -добрият предиктор за променлива стъпка първа и трета. Добавяте към поетапния модел новите предиктори със стойност, по -ниска от прага за въвеждане. Ако никоя променлива няма р-стойност по-ниска от 0,1, тогава алгоритъмът спира и имате крайния си модел само с един предиктор. Регресирате поетапния модел, за да проверите значимостта на най -добрите прогнози за стъпка 1. Ако е по -висок от прага на премахване, го запазвате в поетапния модел. В противен случай го изключвате.
  • Стъпка 3: Репликирате стъпка 2 на новия най -добър поетапен модел. Алгоритъмът добавя предиктори към поетапния модел въз основа на въведените стойности и изключва предиктора от стъпаловидния модел, ако не отговаря на изключващия праг.
  • Алгоритъмът продължава, докато не може да се добави или изключи променлива.

Можете да изпълните алгоритъма с функцията ols_stepwise () от пакета olsrr. | _+_ |

Преди това ви показваме стъпките на алгоритъма. По -долу е дадена таблица със зависимите и независимите променливи:

Зависима променлива

Независими променливи

mpg

ползват



мобилен телефон



драт



тегл



qsec

Старт

Като начало, алгоритъмът започва с пускане на модела за всяка независима променлива поотделно. Таблицата показва p-стойността за всеки модел. | _+_ |

За да влезе в модела, алгоритъмът запазва променливата с най-ниската p-стойност. От горния изход е wt

Етап 1

В първата стъпка алгоритъмът изпълнява mpg на wt и другите променливи независимо. | _+_ |

Всяка променлива е потенциален кандидат за влизане в крайния модел. Алгоритъмът обаче запазва само променливата с по-ниската p-стойност. Оказва се, че hp има малко по-ниска p-стойност от qsec. Следователно hp влиза в крайния модел

Стъпка 2

Алгоритъмът повтаря първата стъпка, но този път с две независими променливи в крайния модел. | _+_ |

Нито една от променливите, които са влезли в крайния модел, няма р-стойност достатъчно ниска. Алгоритъмът спира дотук; имаме крайния модел: | _+_ |

Можете да използвате функцията ols_stepwise (), за да сравните резултатите. | _+_ |

Изход:

Алгоритъмът намира решение след 2 стъпки и връща същия изход, както преди.

В края можете да кажете, че моделите се обясняват с две променливи и прихващане. Миля на галон е в отрицателна корелация с брутните конски сили и теглото | _+_ |

Машинно обучение

Машинното обучение става широко разпространено сред специалистите по данни и е внедрено в стотици продукти, които използвате ежедневно. Едно от първите приложения за ML беше филтър за спам .

Следват други приложения на машинното обучение-

  • Идентифициране на нежелани спам съобщения в имейл
  • Сегментиране на поведението на клиентите за целенасочена реклама
  • Намаляване на измамни транзакции с кредитни карти
  • Оптимизиране на използването на енергия в дома и офиса
  • Разпознаване на лицето

Учене под надзор

В контролирано обучение , данните за обучение, които въвеждате в алгоритъма, включват етикет.

Класификация е може би най -използваната техника за контролирано обучение. Една от първите задачи за класификация, които изследователите решиха, беше филтърът за спам. Целта на обучението е да се предскаже дали имейл е класифициран като спам или шунка (добър имейл). Машината, след стъпката на обучение, може да открие класа на имейлите.

Регресии обикновено се използват в областта на машинното обучение за прогнозиране на непрекъсната стойност. Задачата за регресия може да предвиди стойността на a зависима променлива въз основа на набор от независими променливи (наричани още предиктори или регресори). Например, линейните регресии могат да предскажат цена на акции, прогноза за времето, продажби и т.н.

Ето списъка с някои фундаментални контролирани алгоритми за обучение.

  • Линейна регресия
  • Логистична регресия
  • Най -близките съседи
  • Поддържаща векторна машина (SVM)
  • Дървета на решения и Случайна гора
  • Невронни мрежи

Учене без надзор

В учене без надзор , данните за обучението са без етикети. Системата се опитва да учи без справка. По -долу е даден списък с алгоритми за обучение без надзор.

  • K-средно
  • Йерархичен клъстерен анализ
  • Максимизиране на очакванията
  • Визуализация и намаляване на размерите
  • Анализ на основните компоненти
  • PCA на ядрото
  • Локално-линейно вграждане

Резюме

Обикновената регресия с най -малък квадрат може да бъде обобщена в таблицата по -долу:

Библиотека

Обективен

Функция

Аргументи

база

Изчислете линейна регресия

lm ()

формула, дата

база

Обобщение на модела

обобщавам ()

подходящ

база

Коефициенти на екстракта

lm () $ коефициент


база

Остатъци от екстракта

lm () $ остатъци


база

Екстрактно монтирана стойност

lm () $ fit.values


olsrr

Изпълнете поетапна регресия

ols_stepwise ()

годни, pent = 0,1, prem = 0,3, детайли = FALSE

Забележка : Не забравяйте да трансформирате категоричната променлива във фактор, преди да отговаря на модела.