단순, 다중 선형 그리고 단계별 회귀분석 (예제 포함)

 

In this tutorial, you will learn

이 튜토리얼에서 다음에 대하여 학습한다.

단순, 다중 선형 그리고 단계별 회귀분석 (예제 포함)단순 선형 회귀분석산포도최소자승 추정다중 회귀분석연속 변수factor 회귀분석단계 회귀분석Stepwise regressionMachine learningSupervised learningUnsupervised learningSummary

 

 

단순 선형 회귀분석

Linear regression answers a simple question: Can you measure an exact relationship between one target variables and a set of predictors?

The simplest of probabilistic models is the straight line model:

선형 회귀분석은 단순한 질문에 답한다: 당신은 하나의 목표 변수와 예측 변수들 사이의 정확한 관계를 측정할 수 있는가?

확률론적 모델 중 가장 간단한 것은 선형 모델이다 :

img

where

 

다음의 그래프를 보자 :

032918_1024_RSimpleMult1

 

등식은 img 는 절편이다.

y = 4.77 + 0.88 * b1 이라는 등식이 있다고 하자. 이때 x가 0인 경우, y의 절편은 4.77이 되고, 0.88은 선의 기울기가 된다. 그것은 x가 변할 때 y가 따라서 변하는 비율을 의미한다.

imgimg의 최적 값을 추정하려면 OLS(Ordinary Least Squares, 최소자승법)라는 방법을 사용한다. 이 방법은 예측된 y 값과 실제 y 값 사이의 수직 거리인 오차의 제곱 합을 최소화하는 매개변수를 찾으려고 한다. 그 차이는 오차항(error term)이라고 알려져 있다.

모형을 추정하기 전에 산포도를 그려 y와 x 사이의 선형 관계가 타당한지 여부를 확인할 수 있다.

 

산포도

간단한 선형 회귀분석의 개념을 설명하기 위해 매우 간단한 데이터 세트를 사용할 것이다. 우리는 미국 여성들의 평균 키와 몸무게를 불러올 것이다. 데이터 세트에는 15개의 관측치가 포함되어 있다. 키가 몸무게가 정의 상관관계를 가지고 있는 측정하고자 한다.

결과 :

032918_1024_RSimpleMult2

이 산점도는 x가 증가할수록 y가 증가하는 일반적인 경향을 보여준다. 다음 단계에서는 각 추가 항목에 대해 얼마나 증가하는지 측정할 것이다.

 

최소자승 추정

간단한 OLS 회귀 분석에서] imgimg 의 계산은 간단하다. 이 튜토리얼에서의 목표는 그 도출과정을 보여주는 것이 아니다. 단지 공식만을 사용하기로 한다.

추정할 항목:

OLS 회귀분석의 목표는 다음 방정식을 최소화하는 것이다.

img

여기에서,

img 는 실제값이고, img는 예측값이다.

img의 해는 img이다.

(주의 : img 는 x의 평균값을 의미한다.)

1569821953982의 해는 1569821970085= 1569822003859이다.

 

R에서 1569821953982cov()var() 함수를 사용하여 추정할 수 있으며, imgmean() 함수를 사용하여 추정할 수 있다.

결과 :

 

결과 :

beta0 는 각각의 추가적인 키(height)에 대해 몸무게(weight)가 3.45 증가한다는 것을 의미한다.

간단한 선형 방정식을 수작업으로 추정하는 것은 이상적이지 않다. R은 이러한 매개변수를 추정하기 위한 적절한 함수를 제공한다. 당신은 곧 이 함수를 보게 될 것이다. 그 전에 간단한 선형 회귀 모형을 손으로 계산하는 방법을 소개하겠다. 데이터 과학자의 여정에서 당신은 단순한 선형 모델은 거의 또는 전혀 추정하지 않을 것이다. 대부분의 경우, 회귀분석 작업은 많은 추정치들을 대상으로 수행된다.

 

다중 회귀분석

회귀 분석의 보다 실용적인 적용은 단순한 선형 모델보다 더 복잡한 모델을 채택한다. 두 개 이상의 독립 변수를 포함하는 확률적 모델을 다중 회귀 모형(multiple regresssion model)이라고 한다. 이 모델의 일반적인 형태는 다음과 같다 :

img

행렬로 표현하면, 이 모델을 다음과 같이 표현할 수 있다 :

종속 변수 y는 이제 k개의 독립 변수 img의 함수다. img 계수는 독립 변수 imgimg의 기여도를 결정한다.

 

OLS의 랜덤 에러img에 대해 다음과 같이 가정한다.

y의 예측 값과 실제 값 사이의 제곱 오차 합을 최소화하는 회귀 계수의 벡터img의 해를 구해야 한다.

그 해는 다음과 같다 :

img

with:

We use the mtcars dataset. You are already familiar with the dataset. Our goal is to predict the mile per gallon over a set of features.

우리는 mtcar 데이터 세트를 사용한다. 여러분은 이미 이 데이터 집합에 대해 잘 알고 있다. 우리의 목표는 일련의 변수들에 대해 갤런 당 마일(mpg)을 예측하는 것이다.

 

연속 변수

현재로서는 연속 변수만 사용하고 범주형 변수는 잠시 잊기로 하자. 변수 am은 변속기가 수동일 경우 1의 값을, 자동의 경우 0의 값을 갖는 2진 변수이며, vs 변수 또한 2진 변수이다.

결과 :

lm() 함수를 사용하여 파라미터를 계산할 수 있다. 이 함수의 기본 구문은 다음과 같다 :

인수 :

등식의 다음의 형태라는 것을 기억하라 :

img

 

R에서는

 

예제 :

키(height)와 수입(revenue)에 따른 몸무게를 추정하고자 한다. 등식은 다음과 같다 :

img

위의 등식을 R로 표현하면 다음과 같다 :

y ~ X1 + X2 + ... + Xn # With intercept

따라서 예제는 다음과 같이 표현된다 :

 

우리의 목표가 변수들의 집합으로 mpg를 추정하고자 하는 것이라면, 추정하고자 하는 등식은 다음과 같다 :

img

먼저 선형회귀 분석으로 추정한 다음, fit 오브젝트에 그 결과를 저장하기로 한다.

코드 설명 :

결과 :

그 결과는 적합성에 대한 충분한 정보를 제공하지 않는다. summary() 함수를 사용하여 계수의 유의성, 자유도 및 잔차의 형태와 같은 더 자세한 정보를 확인할 수 있다.

결과 :

위의 결과에서의 추론

anova() 함수를 이용하여 분산에 미치는 각 변수의 영향을 추정하기 위한 ANOVA 검정을 실행할 수 있다.

결과 :

모델 성능을 추정하는 보다 일반적인 방법은 다른 측정치에 대한 잔차(residual)를 표시하는 것이다.

plot() 함수를 사용하여 다음 네 개의 그래프를 표시할 수 있다.

코드 설명 :

 

결과 :

1569994047751

lm() 함수는 유용한 정보가 많이 포함된 리스트를 반환한다. 앞에서 작성한 fit에 대해 그 정보들을 확인할 수 있는데, fit 다음에 $ 기호와 추출하고자 하는 정보를 추가할 수 있다.

결과 :

결과 :

결과 :

factor 회귀분석

마지막 모델 추정에서 연속 변수에 대해서만 mpg의 회귀모형을 추정하였다. 모형에 factor 변수를 추가하는 것은 간단하다. 모형에 변수 am을 추가하라. 변수가 연속적인지와 factor 수준을 확인하는 것이 중요하다.

Output:

R은 첫 번째 factor 수준을 기본 그룹으로 사용한다. 다른 그룹의 계수를 기본 그룹과 비교해야 한다.

 

단계 회귀분석

이 튜토리얼의 마지막 부분은 단계 회귀분석(stepwise regression 알고리즘을 다룬다. 이 알고리즘의 목적은 모델에서 잠재적 후보를 추가 및 제거하고, 종속 변수에 의미있는 영향을 미치는 후보를 찾는 것이다. 이 알고리즘은 데이터 세트에 많은 예측 변수들이 포함되어 있을 때 의미가 있다. 독립 변수를 수작업으로 추가 및 제거할 필요가 있다. 단계 회귀분석은 모델에 가장 적합한 최선의 후보를 선택하는 것이다.

실제로 어떻게 작동하는지 살펴 보자. 연속 변수를 갖는 mtcars 데이터 세트를 교육적 예시를 위해 사용한다. 분석을 시작하기 전에 상관계수 행렬을 사용하여 데이터 간의 변동을 편차를 계산하는 것이 좋다. GGally 라이브러리는 ggplot2의 확장이다.

라이브러리는 행렬에 있는 모든 변수들의 상관관계와 분포같은 요약 통계를 보여주는 다양한 함수를 포함한다. 우리는 ggscatmat() 함수를 사용할 것이지만, GGally 라이브러리에 대한 자세한 내용은 vignette를 참조하기 바란다.

ggscatmat() 함수의 기본 구문은 다음과 같다 :

인수 :

You display the correlation for all your variables and decides which one will be the best candidates for the first step of the stepwise regression. There are some strong correlations between your variables and the dependent variable, mpg.

모든 변수에 대한 상관관계를 표시하고, 단계 회귀 분석의 첫 번째 단계에서 어떤 변수가 가장 적합한지 결정한다. 몇 개의 독립 변수와 종속 변수인 mpg 사이에는 몇 가지 강력한 상관관계가 있다.

결과 :

1569831772281

 

Stepwise regression

Variables selection is an important part to fit a model. The stepwise regression will perform the searching process automatically. To estimate how many possible choices there are in the dataset, you compute img with k is the number of predictors. The amount of possibilities grows bigger with the number of independent variables. That's why you need to have an automatic search.

You need to install the olsrr package from CRAN. The package is not available yet in Anaconda. Hence, you install it directly from the command line:

You can plot all the subsets of possibilities with the fit criteria (i.e. R-square, Adjusted R-square, Bayesian criteria). The model with the lowest AIC criteria will be the final model.

Code Explanation

Output:

img

Linear regression models use the t-test to estimate the statistical impact of an independent variable on the dependent variable. Researchers set the maximum threshold at 10 percent, with lower values indicates a stronger statistical link. The strategy of the stepwise regression is constructed around this test to add and remove potential candidates. The algorithm works as follow:

img

You can perform the algorithm with the function ols_stepwise() from the olsrr package.

Before that, we show you the steps of the algorithm. Below is a table with the dependent and independent variables:

Dependent variableIndependent variables
mpgdisp
 hp
 drat
 wt
 qsec

Start

To begin with, the algorithm starts by running the model on each independent variable separately. The table shows the p-value for each model.

To enter the model, the algorithm keeps the variable with the lowest p-value. From the above output, it is wt

Step 1

In the first step, the algorithm runs mpg on wt and the other variables independently.

Each variable is a potential candidate to enter the final model. However, the algorithm keeps only the variable with the lower p-value. It turns out hp has a slighlty lower p-value than qsec. Therefore, hp enters the final model

Step 2

The algorithm repeats the first step but this time with two independent variables in the final model.

None of the variables that entered the final model has a p-value sufficiently low. The algorithm stops here; we have the final model:

You can use the function ols_stepwise() to compare the results.

Output:

The algorithm founds a solution after 2 steps, and return the same output as we had before.

At the end, you can say the models is explained by two variables and an intercept. Mile per gallon is negatively correlated with Gross horsepower and Weight

 

Machine learning

Machine learning is becoming widespread among data scientist and is deployed in hundreds of products you use daily. One of the first ML application was spam filter.

Following are other application of Machine Learning-

Supervised learning

In supervised learning, the training data you feed to the algorithm includes a label.

Classification is probably the most used supervised learning technique. One of the first classification task researchers tackled was the spam filter. The objective of the learning is to predict whether an email is classified as spam or ham (good email). The machine, after the training step, can detect the class of email.

Regressions are commonly used in the machine learning field to predict continuous value. Regression task can predict the value of a dependent variable based on a set of independent variables (also called predictors or regressors). For instance, linear regressions can predict a stock price, weather forecast, sales and so on.

Here is the list of some fundamental supervised learning algorithms.

Unsupervised learning

In unsupervised learning, the training data is unlabeled. The system tries to learn without a reference. Below is a list of unsupervised learning algorithms.

 

Summary

Ordinary least squared regression can be summarized in the table below:

LibraryObjectiveFunctionArguments
baseCompute a linear regressionlm()formula, data
baseSummarize modelsummarize()fit
baseExctract coefficientslm()$coefficient 
baseExctract residualslm()$residuals 
baseExctract fitted valuelm()$fitted.values 
olsrrRun stepwise regressionols_stepwise()fit, pent = 0.1, prem = 0.3, details = FALSE

Note: Remember to transform categorical variable in factor before to fit the model.