오늘 강의 내용 (2014/01/16) - ita.kaist.ac.kr · matlab programming 회귀 분석 회귀...

47
MATLAB Programming 오늘 강의 내용 (2014/01/16) 회귀 분석 1

Upload: ngoduong

Post on 26-May-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

MATLAB Programming

오늘 강의 내용 (2014/01/16)

회귀 분석

1

MATLAB Programming

회귀 분석 (Regression Analysis)

2

MATLAB Programming

회귀 분석

회귀 분석이란?

• 연관된 변수들 간의 관계를 찾는 통계적 방법

• 즉, 어떠한 변수 x가 변수 Y에 함수 관계를 통해 영향을 미친다는 것을

찾아내는 것

• 예를 들어

– 강우량 (변수 x)이 곡물의 수확량 (변수 Y)에 미치는 영향

– 화학 공정의 수율(변수 x)이 촉매의 사용량(변수 Y)에 따라 어떻게 변하는지..

3

MATLAB Programming

변수 간의 관계

확정적 (deterministic) 관계

• 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것

• 함수 f의 상태를 모를 수도 있으나, y는 x에 따라 확정되는 것이 확실한 관계

확률적 (probabilistic) 관계

• x의 일정한 값에 대해 관측되는 Y의 값이 일정하게 나타나지는 않지만,

평균적으로 일정한 경향을 나타내는 것

• Y = f(x) + ε

– x 는 독립변수, Y 는 종속 변수, ε 는 확률적 효과

– Note: Y는 확률 변수이나, x는 확률 변수가 아님

• 다른 용어로, x 를 설명 변수(regression variable), Y를 반응변수 (response

variable) 이라고 부르기도 함

4

MATLAB Programming

회귀 분석을 통해

설명 변수 (독립 변수 x) 와 반응 변수 (종속 변수 Y)의 관계를 수식으로 나타내고,

이에 대한 적합성 검증 가능

추정된 평균 반응값에 포함된 오차의 범위 (신뢰구간)을 얻을 수 있음

설명 변수의 값을 알면 평균 반응값을 추정하거나, 새로운 관측 값을 예측 가능

5

MATLAB Programming

회귀 모형

regression model

• 변수 간의 관계를 확률적으로 나타낸 것

• 예를 들어,

– 키와 폐활량의 관계를 알아보기 위해 20명의 실험 대상에 대해 데이터를 얻음

– 두 변수간에 선형적인 관계식이 존재함을 알 수 있음: E(Y) = β0 + β1x

6

MATLAB Programming

회귀 모형

확률 오차 ε (random error)

• 관측 값과 β0 + β1x 간의 차이

• 다른 변수의 영향이나 측정 오류에 기인

• 확률 오차를 고려하여 두 변수의 관계는 Y = β0 + β1x + ε 로 나타낼 수 있음

선형 회귀 모형 (linear regression model)

• 단순 회귀 모형 :

– Y = β0 + β1x + ε

• 다중 선형 회귀 모형 :

– Y = β0 + β1x1 + β2x2 + β3x3 + … + βkxk + ε

7

ε

MATLAB Programming

단순 회귀 모형

Y = β0 + β1x + ε

β0, β0 : 회귀 계수 (regression coefficient)

확률 오차 ε 는 평균 0, 분산 σ2 인 분포를 따른다고 가정

Fitting

변수 간의 관계를 회귀 모형으로 가정한 다음, 회귀 모형의 모수들을 추정

최소 제곱법 (method of least squares)

모수를 추정하는 방법 중의 하나

실험을 통해 설명변수 x 의 여러 값 x1, x2, …, xn 에 대응하는 반응변수 Y의 관측값 y1,

y2, …, yn 을 얻었을 때 오차 εi 를 제곱하여 모두 합한 값을 최소로 하는 추정 방법

𝑄 𝛽0, 𝛽1 = 𝜀2 = 𝑦𝑖 − 𝛽0 − 𝛽1𝑥𝑖2𝑛

𝑖=1𝑛𝑖=1

8

MATLAB Programming

단순 회귀 모형

최소 제곱법 (method of least squares)

𝑄 𝛽0, 𝛽1 = 𝜀2 = 𝑦𝑖 − 𝛽0 − 𝛽1𝑥𝑖2𝑛

𝑖=1𝑛𝑖=1

𝑄 𝛽0, 𝛽1 을 최소화하는 𝛽0, 𝛽1 을 다음 연립 방정식을 계산하여 구함

𝜕𝑄 𝛽0,𝛽1

𝜕𝛽0= −2 𝑦𝑖 − 𝛽0 − 𝛽1𝑥𝑖

𝑛𝑖=1 = 0

𝜕𝑄 𝛽0,𝛽1

𝜕𝛽1= −2 𝑦𝑖 − 𝛽0 − 𝛽1𝑥𝑖 𝑥𝑖

𝑛𝑖=1 = 0

두 식을 정리하면,

𝛽1 = (𝑥𝑖−𝑥 )(𝑦𝑖−𝑦 )𝑛𝑖=1

(𝑥𝑖−𝑥 𝑛𝑖=1 )^2

𝛽0 = 𝑦 − 𝛽1𝑥

여기서, 𝑥 , 𝑦 는 xi, yi의 평균

9

MATLAB Programming

Quiz

기계의 사용 기간(개월수)과 정비 비용(만원) 사이에 어떠한 관계가 있는지

알아보기 위해 기계의 사용기간에 따른 정비비용을 조사하였다.

(1) 단순 회귀 모형을 통해 관계를 분석하고, (2) 각 데이터들과 선형 함수를

그래프로 그리고, (3) 사용기간이 60개월일 때 정비 비용을 알아보자.

𝛽1 = (𝑥𝑖−𝑥 )(𝑦𝑖−𝑦 )𝑛𝑖=1

(𝑥𝑖−𝑥 𝑛𝑖=1 )^2

𝛽0 = 𝑦 − 𝛽1𝑥

여기서, 𝑥 , 𝑦 는 xi, yi의 평균

10

관측번호 1 2 3 4 5 6 7 8 9 10

사용기간 (xi) 18 6 30 48 6 36 18 18 30 36

정비비용 (yi) 25 17 48 58 23 40 30 39 40 60

통계학 응용과 이론, 청문각에서 발췌

MATLAB Programming

Quiz Sol.

11

β0 = 14.5714, β1 = 0.9524

MATLAB Programming

다중 회귀 모형

설명 변수(x) 하나 만으로 반응 변수(Y)의 변화를 충분히 설명하지

못하여, 여러 개의 설명 변수를 사용해야 하는 경우에 사용하는 모형

설명 변수의 수가 k개인 다중 회귀 모형

• Y = β0 + β1x1 + β2x2 + β3x3 + … + βkxk + ε

• 각각의 회귀 계수 βi 는 i번째 설명 변수만의 변화가 반응 변수에 미치는 영향

설명 변수의 선형 결합도 다중 회귀 모형으로 분석 가능

• 예를 들어, Y = β0 + β1x + β2x2 + β3x

3 + ε 의 경우, x1 = x, x2=x2, x3=x3 으로

치환하면 다중 회귀 모형 Y = β0 + β1x1 + β2x2 + β3x3 + ε 으로 해석 가능

12

MATLAB Programming

다중 회귀 모형의 최소 제곱 추정

단순 회귀 모형의 최소 제곱 추정 방법과 비슷하게 계산

Y1 = β0 + β1x11 + β2x12 + β3x13 + … + βkx1k + ε1

Y2 = β0 + β1x21 + β2x22 + β3x23 + … + βkx2k + ε2

Yn = β0 + β1xn1 + β2xn2 + β3xn3 + … + βkxnk + εn

상기 수식을 행렬로 정의 가능

Y = Xβ + ε 이며

Y = [Y1, Y2, …, Yn]’ , 𝑿 =

𝟏 𝒙𝟏𝟏

𝟏 𝒙𝟐𝟏

𝒙𝟏𝟐 … 𝒙𝟏𝒌

𝒙𝟏𝟑 … 𝒙𝟐𝒌… …𝟏 𝒙𝒏𝟏

… … …𝒙𝒏𝟐 … 𝒙𝒏𝒌

, ε = [ε1, ε2, …, εn]’

13

MATLAB Programming

다중 회귀 모형의 최소 제곱 추정

오차의 제곱의 합이 최소가 되도록 하는 회귀 계수들을 찾음

• Q(β) = 𝜀𝑖2𝑛

𝑖=1 = ε’ε = (Y - Xβ)’(Y – Xβ)

위의 식을 풀어서 정리하면,

• Q(β) = Y’Y – β’X’Y – Y’Xβ + β’X’Xβ

= Y’Y – 2β’X’Y + β’X’Xβ

•𝜕𝑄

𝜕𝛽= −2𝑋′𝑌 + 2𝑋′𝑋𝛽 = 0 X’Xβ = X’Y

• 따라서 최소 제곱 추정량 β = (X’X)-1X’Y

14

MATLAB Programming

다중 회귀 모형

A 전자회사는 전국적으로 수백 개의 대리점을 갖고 있는데, 각 대리점의 월 매출액(억원)은

관할 구청의 인구수(십만명)와 그 구역의 가구당 월평균 수입(백만원)에 크게 영향을

받는다고 판단된다. 10개의 대리점을 무작위로 뽑아 다음과 같은 자료를 얻었다. 이 자료를

다중 회귀 모형에 fitting 시켜보자.

15

통계학 응용과 이론, 청문각에서 발췌

대리점 번호 1 2 3 4 5 6 7 8 9 10

월매출액( yi) 2.0 1.3 2.4 1.5 0.6 2.0 1.0 2.0 1.3 0.9

인구수 (xi1) 3.0 1.1 3.5 2.5 0.6 2.8 1.3 3.3 2.0 1.0

월평균수입 (xi2) 3.2 3.0 3.6 2.6 1.9 3.5 2.1 3.4 2.8 2.3

최소 제곱 추정량 β = (X’X)-1X’Y

MATLAB Programming

다중 회귀 모형

16

대리점 번호 1 2 3 4 5 6 7 8 9 10

월매출액( yi) 2.0 1.3 2.4 1.5 0.6 2.0 1.0 2.0 1.3 0.9

인구수 (xi1) 3.0 1.1 3.5 2.5 0.6 2.8 1.3 3.3 2.0 1.0

월평균수입 (xi2) 3.2 3.0 3.6 2.6 1.9 3.5 2.1 3.4 2.8 2.3

β0 = -0.4503

β1 = 0.3067

β2 = 0.4589

추정 회귀식

y(x1,x2) = -0.4503 + 0.3067 x1 + 0.4589 x2

MATLAB Programming

Quiz

국민의 생활 수준을 알아보는 지표로 총 생계비 중에서 식비가 차지하는 비율인 엥겔지수가

있다. 한 가계당 평균 얼마의 식비를 지출하는지 알아보기 위해 서울에 거주하는 10가구를

무작위로 뽑아 월 평균식비 (단위: 만원) y, 월 평균소득 (단위: 만원) x1, 가족의 수 (단위: 명)

x2, 그리고 평균 연령 (단위: 세) x3을 조사하여 다음과 같은 자료를 얻었다.

다음의 다중 회귀 모형을 가정하고 회귀식을 추정하라.

Y = β0 + β1x1 + β2x2 + β3x3 + ε

17

통계학 응용과 이론, 청문각에서 발췌

y 36.2 39.0 81.7 39.0 68.3 106.3 123.9 114.8 97.0 100.2

x1 206.2 218.6 264.6 330.5 334.7 365.6 379.3 456.4 502.7 531.0

x2 1 4 4 2 3 4 5 6 3 7

x3 32 39 41 33 37 31 35 29 27 36

최소 제곱 추정량 β = (X’X)-1X’Y

MATLAB Programming

Quiz Sol.

18

통계학 응용과 이론, 청문각에서 발췌

y 36.2 39.0 81.7 39.0 68.3 106.3 123.9 114.8 97.0 100.2

x1 206.2 218.6 264.6 330.5 334.7 365.6 379.3 456.4 502.7 531.0

x2 1 4 4 2 3 4 5 6 3 7

x3 32 39 41 33 37 31 35 29 27 36

β0 = 88.7125

β1 = 0.0517

β2 = 11.9010

β3 = -2.1480

추정 회귀식

y(x1,x2,x3) = 88.7125 + 0.0517 x1 + 11.9010 x2 -2.1480 x3

MATLAB Programming

Basic Fitting Tool

주어진 데이터에 대해 다양한 regression model 을 적용해 볼 수 있음

19

MATLAB Programming

Basic Fitting Tool

20

β0 = 14.5714, β1 = 0.9524

MATLAB Programming

Basic Fitting Tool

여러 회귀 모형의 결과를 동시에 확인 가능

21

MATLAB Programming

Quiz

다음 자료를 포물선 회귀모형을 이용하여 분석하고자 한다.

Y = β0 + β1x + β2x2 + ε

Basic Fitting Tool을 이용하여 추정 회귀식을 구하고, 이를 산점도와 함께

그려라.

22

x -3 -2 -1 0 1 2 3

y 0 0 1 1 0 0 -1

MATLAB Programming

Quiz Sol.

다음 자료를 포물선 회귀모형을 이용하여 분석하고자 한다.

Y = β0 + β1x + β2x2 + ε

Basic Fitting Tool을 이용하여 추정 회귀식을 구하고, 이를 산점도와 함께 그려라.

23

x -3 -2 -1 0 1 2 3

y 0 0 1 1 0 0 -1

MATLAB Programming

Quiz Sol.

polyfit을 이용하는 방법

• p = polyfit(x, y, n)

– (x, y) 좌표의 점, n차 회귀 모형으로 회귀분석

– p : 회귀 곡선의 다항식 벡터를 반환

24

MATLAB Programming

톨게이트 통과 차량 (traffic.txt)

시간 톨게이트 A 톨게이트 B 톨게이트 C

03:00 ~ 04:00 12 11 9

04:00 ~ 05:00 8 14 11

05:00 ~ 06:00 14 17 20

06:00 ~ 07:00 11 13 9

07:00 ~ 08:00 43 51 69

08:00 ~ 09:00 38 88 115

09:00 ~ 10:00 28 36 55

10:00 ~ 11:00 12 12 14

11:00 ~ 12:00 18 27 30

12:00 ~ 13:00 18 19 29

13:00 ~ 14:00 17 15 18

14:00 ~ 15:00 19 36 48

15:00 ~ 16:00 32 47 10

16:00 ~ 17:00 42 65 151

17:00 ~ 18:00 114 145 257

18:00 ~ 19:00 35 58 68

19:00 ~ 20:00 13 9 15

20:00 ~ 21:00 11 12 15

21:00 ~ 22:00 10 9 7

25

MATLAB Programming

다항식 Fitting

톨게이트 C를 통과하는 자동차의 수를 6차 항을 갖는 다항식으로 fitting

해보자.

26

MATLAB Programming

다항식이 아닌 함수로 Fitting

어떤 데이터 집합의 경우, 다항식이 아닌 다른 함수로 fitting 하는 것이 데이터를

더욱 잘 표현할 수 있음

MATLAB의 polyfit 함수로 데이터를 fitting 하기 위해서는, 다항식이 아닌

fitting 함수를 선형으로 변형해 주어야 함

27

fitting 할 함수 선형 변환 polyfit 사용법

y = a emx ln(y) = mx + ln(a) p = polyfit( x, ln(y), 1 )

y = a 10mx log(y) = mx + log(a) p = polyfit( x, log(y), 1 )

y = m ln(x) + b 그대로 사용 p = polyfit( ln(x), y, 1 )

y = m log(x) + b 그대로 사용 p = polyfit( log(x), y, 1 )

y = 1 / (mx + b) 1/y = mx + b p = polyfit( x, 1./y, 1)

MATLAB Programming

다항식이 아닌 함수로 Fitting

28

데이터 plot 선형 변환 후 Fitting

MATLAB Programming

Quiz

다음과 같은 데이터가 있다. 다음 데이터는 아래와 같은 수식으로 부터

만들어 낼 수 있다. 데이터 Fitting 하라.

• x = linspace(0, 2, 10);

• y = 1./(5*x+1) + 0.2*rand(1,length(x));

29

MATLAB Programming

Quiz Sol.

30

MATLAB Programming

보간법 (Interpolation)

31

MATLAB Programming

라그랑지 보간법 (Lagrange Interpolation)

보간법은 데이터 점들 사이의 값을 추정하는 방법

평면상에 서로 다른 n개의 점 (xk, yk)가 주어진다면, 이들을 지나는 (최대) n차의

유일한 다항식 p가 존재하며, 이 다항식 p는 항상 주어진 n개의 점을 지난다.

• 𝑃 𝑥 = 𝑥−𝑥𝑗

𝑥𝑘−𝑥𝑗𝑗≠𝑘𝑘 𝑦𝑘 이며,

• 다음을 항상 만족함 : 𝑃 𝑥𝑘 = 𝑦𝑘, k=1..n

예를 들어, (0,-5), (1,-6), (2,-1), (3,16) 점을 지나는 다항식은 다음과 같다.

• 𝑃 𝑥 =𝑥−1 𝑥−2 𝑥−3

−6−5 +

𝑥 𝑥−2 𝑥−3

2−6 +

𝑥 𝑥−1 𝑥−3

−2−1 +

𝑥 𝑥−1 𝑥−2

6(16)

MATLAB을 통해 구해보면

32

MATLAB Programming

33

MATLAB Programming

1차원 보간법

yi = interp1(x, y, t, 보간방법)

• xi, yi – 데이터 쌍 (좌표값)

• t – 위의 데이터에 대해 보간(interpolate)된 그래프를 그릴 때, x축 값에

해당하는 벡터

보간 방법

• ‘nearest’ : 가장 근접한 이웃 보간

• ‘linear’ : 선형 보간 (기본값)

• ‘spline’ : 3차 스플라인 보간

• ‘pchip’ : 3차 Hermite 보간

34

MATLAB Programming

각 보간법들의 차이

35

MATLAB Programming

spline 이용한 보간법

주어진 데이터 점들을 지나면서 점들 사이에 부드러운 곡선을 형성

2차 미분이 연속이며, 동일한 보간 제약 조건들을 만족해야 함

다양한 방법이 있음

• 1차 스플라인: 붉은 색 선

• 2차, 3차 스플라인: 녹색선 (포물선)

spline 함수:

• 3차 스플라인

– 연속된 두 점 xi, xi+1 사이에 3차 다항식으로 생성되는 곡선으로 연결

– 각 점에서 스플라인 라인은 1차 2차 미분 가능 (즉, 구간이 부드럽게 연결)

36

MATLAB Programming

spline

p = spline(x, y, t)

• 데이터 점 (x, y)가 주어지면 해당 데이터 점들을 가지고 spline 을 그림

• 데이터 점 외에 t로 주어지는 점들에 대해 spline(t) 의 값을 p로 반환

37

x -2 -1 0 1 2

y 0.1429 0.3333 1.0000 1.0000 0.3333

MATLAB Programming

pchip

spline 과 거의 비슷

• 2차 미분을 갖지 않을 수도 있음 (즉, 구간이 부드럽게 연결 되지 않을 수도

있음)

spline 과 pchip 과의 차이

• spline은 overshoot 가 발생할 수 있음

– 즉, 데이터가 smooth function 모양인 경우에는 overshoot가 발생하지 않지만,

데이터가 smooth 하지 않게 배치된 경우에는 보간된 라인이 진동함

• pchip은

– 데이터가 smooth 하게 배치되지 않은 경우 overshoot 하지 않음

– spine보다 계산이 덜 복잡함

38

MATLAB Programming

pchip vs. spline

39

MATLAB Programming

Basic Fitting Tool 이용한 보간

40

MATLAB Programming

Quiz

다음 데이터들을 spline, linear, pchip 보간법을 이용하여 그려보자. 각

그래프에 데이터 점들도 함께 표시하여 보자.

41

x 0 1 2 3 4 5

y 1 -0.6240 -1.4704 3.2402 -0.7363 -6.3715

MATLAB Programming

Quiz Sol.

다음 데이터들을 spline, linear, pchip 보간법을 이용하여 그려보자. 각

그래프에 데이터 점들도 함께 표시하여 보자.

42

x 0 1 2 3 4 5

y 1 -0.6240 -1.4704 3.2402 -0.7363 -6.3715

MATLAB Programming

2차원 보간법

griddata(x, y, z, X, Y, 보간 방법)

• 임의의 데이터 점에 대해 2차원 보간

• x, y, z – 입력 데이터에 대한 x, y, z 좌표값

• X, Y – 보간할 X-Y plane의 grid 좌표값

보간 방법

• ‘nearest’ : 가장 근접한 이웃 보간

• ‘linear’ : 선형 보간 (기본값)

• ‘cubic’ : 삼각형 기반 3차 보간

43

MATLAB Programming

주어진 3차원 데이터의 보간

44

MATLAB Programming

보간 방법에 따른 그래프의 모양 변화

45

“nearest” : griddata(x,y,z,X,Y, ‘nearest’) “nearest” : griddata(x,y,z,X,Y, ‘natural’)

MATLAB Programming

보간 방법에 따른 그래프의 모양 변화

46

“nearest” :

griddata(x,y,z,X,Y, ‘nearest’)

“natural” :

griddata(x,y,z,X,Y, ‘natural’)

“linear” :

griddata(x,y,z,X,Y, ‘linear’)

MATLAB Programming

47