![Page 1: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/1.jpg)
회귀 분석 (Regression Analysis)
1
![Page 2: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/2.jpg)
회귀 분석
회귀 분석이란?
• 연관된 변수들 간의 관계를 찾는 통계적 방법
• 즉, 어떠한 변수 x가 변수 Y에 함수 관계를 통해 영향을 미친다는 것을
찾아내는 것
• 예를 들어
– 강우량 (변수 x)이 곡물의 수확량 (변수 Y)에 미치는 영향
– 화학 공정의 수율(변수 x)이 촉매의 사용량(변수 Y)에 따라 어떻게 변하는지..
2
![Page 3: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/3.jpg)
변수 간의 관계
확정적 (deterministic) 관계
• 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것
• 함수 f의 상태를 모를 수도 있으나, y는 x에 따라 확정되는 것이 확실한 관계
확률적 (probabilistic) 관계
• x의 일정한 값에 대해 관측되는 Y의 값이 일정하게 나타나지는 않지만,
평균적으로 일정한 경향을 나타내는 것
• Y = f(x) + ε
– x 는 독립변수, Y 는 종속 변수, ε 는 확률적 효과
– Note: Y는 확률 변수이나, x는 확률 변수가 아님
• 다른 용어로, x 를 설명 변수(regression variable), Y를 반응변수 (response
variable) 이라고 부르기도 함
3
![Page 4: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/4.jpg)
회귀 분석을 통해
설명 변수 (독립 변수 x) 와 반응 변수 (종속 변수 Y)의 관계를 수식으로 나타내고,
이에 대한 적합성 검증 가능
추정된 평균 반응값에 포함된 오차의 범위 (신뢰구간)을 얻을 수 있음
설명 변수의 값을 알면 평균 반응값을 추정하거나, 새로운 관측 값을 예측 가능
4
![Page 5: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/5.jpg)
회귀 모형
regression model
• 변수 간의 관계를 확률적으로 나타낸 것
• 예를 들어,
– 키와 폐활량의 관계를 알아보기 위해 20명의 실험 대상에 대해 데이터를 얻음
– 두 변수간에 선형적인 관계식이 존재함을 알 수 있음: E(Y) = β0 + β1x
5
![Page 6: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/6.jpg)
회귀 모형
확률 오차 ε (random error)
• 관측 값과 β0 + β1x 간의 차이
• 다른 변수의 영향이나 측정 오류에 기인
• 확률 오차를 고려하여 두 변수의 관계는 Y = β0 + β1x + ε 로 나타낼 수 있음
선형 회귀 모형 (linear regression model)
• 단순 회귀 모형 :
– Y = β0 + β1x + ε
• 다중 선형 회귀 모형 :
– Y = β0 + β1x1 + β2x2 + β3x3 + … + βkxk + ε
6
ε
![Page 7: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/7.jpg)
단순 회귀 모형
7
![Page 8: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/8.jpg)
단순 회귀 모형
8
![Page 9: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/9.jpg)
Quiz
9
관측번호 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
통계학 응용과 이론, 청문각에서 발췌
![Page 10: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/10.jpg)
Quiz Sol.
10
β0 = 14.5714, β1 = 0.9524
![Page 11: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/11.jpg)
다중 회귀 모형
설명 변수(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 + ε 으로 해석 가능
11
![Page 12: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/12.jpg)
다중 회귀 모형의 최소 제곱 추정
12
![Page 13: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/13.jpg)
다중 회귀 모형의 최소 제곱 추정
13
![Page 14: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/14.jpg)
다중 회귀 모형
A 전자회사는 전국적으로 수백 개의 대리점을 갖고 있는데, 각 대리점의 월 매출액(억원)은
관할 구청의 인구수(십만명)와 그 구역의 가구당 월평균 수입(백만원)에 크게 영향을
받는다고 판단된다. 10개의 대리점을 무작위로 뽑아 다음과 같은 자료를 얻었다. 이 자료를
다중 회귀 모형에 fitting 시켜보자.
14
통계학 응용과 이론, 청문각에서 발췌
대리점 번호 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
![Page 15: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/15.jpg)
다중 회귀 모형
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
β0 = -0.4503
β1 = 0.3067
β2 = 0.4589
추정 회귀식
y(x1,x2) = -0.4503 + 0.3067 x1 + 0.4589 x2
![Page 16: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/16.jpg)
Quiz
국민의 생활 수준을 알아보는 지표로 총 생계비 중에서 식비가 차지하는 비율인 엥겔지수가
있다. 한 가계당 평균 얼마의 식비를 지출하는지 알아보기 위해 서울에 거주하는 10가구를
무작위로 뽑아 월 평균식비 (단위: 만원) y, 월 평균소득 (단위: 만원) x1, 가족의 수 (단위: 명)
x2, 그리고 평균 연령 (단위: 세) x3을 조사하여 다음과 같은 자료를 얻었다.
다음의 다중 회귀 모형을 가정하고 회귀식을 추정하라.
Y = β0 + β1x1 + β2x2 + β3x3 + ε
16
통계학 응용과 이론, 청문각에서 발췌
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
![Page 17: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/17.jpg)
Quiz Sol.
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
β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
![Page 18: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/18.jpg)
Basic Fitting Tool
주어진 데이터에 대해 다양한 regression model 을 적용해 볼 수 있음
18
![Page 19: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/19.jpg)
Basic Fitting Tool
19
β0 = 14.5714, β1 = 0.9524
![Page 20: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/20.jpg)
Basic Fitting Tool
여러 회귀 모형의 결과를 동시에 확인 가능
20
![Page 21: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/21.jpg)
Quiz
다음 자료를 포물선 회귀모형을 이용하여 분석하고자 한다.
Y = β0 + β1x + β2x2 + ε
Basic Fitting Tool을 이용하여 추정 회귀식을 구하고, 이를 산점도와 함께
그려라.
21
x -3 -2 -1 0 1 2 3
y 0 0 1 1 0 0 -1
![Page 22: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/22.jpg)
Quiz Sol.
다음 자료를 포물선 회귀모형을 이용하여 분석하고자 한다.
Y = β0 + β1x + β2x2 + ε
Basic Fitting Tool을 이용하여 추정 회귀식을 구하고, 이를 산점도와 함께 그려라.
22
x -3 -2 -1 0 1 2 3
y 0 0 1 1 0 0 -1
![Page 23: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/23.jpg)
Quiz Sol.
polyfit을 이용하는 방법
• p = polyfit(x, y, n)
– (x, y) 좌표의 점, n차 회귀 모형으로 회귀분석
– p : 회귀 곡선의 다항식 벡터를 반환
23
![Page 24: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/24.jpg)
톨게이트 통과 차량 (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
24
![Page 25: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/25.jpg)
다항식 Fitting
톨게이트 C를 통과하는 자동차의 수를 6차 항을 갖는 다항식으로 fitting
해보자.
25
![Page 26: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/26.jpg)
다항식이 아닌 함수로 Fitting
어떤 데이터 집합의 경우, 다항식이 아닌 다른 함수로 fitting 하는 것이 데이터를
더욱 잘 표현할 수 있음
MATLAB의 polyfit 함수로 데이터를 fitting 하기 위해서는, 다항식이 아닌
fitting 함수를 선형으로 변형해 주어야 함
26
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)
![Page 27: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/27.jpg)
다항식이 아닌 함수로 Fitting
27
데이터 plot 선형 변환 후 Fitting
![Page 28: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/28.jpg)
Quiz
다음과 같은 데이터가 있다. 다음 데이터는 아래와 같은 수식으로 부터
만들어 낼 수 있다. 데이터 Fitting 하라.
• x = linspace(0, 2, 10);
• y = 1./(5*x+1) + 0.2*rand(1,length(x));
28
![Page 29: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/29.jpg)
Quiz Sol.
29
![Page 30: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/30.jpg)
보간법 (Interpolation)
30
![Page 31: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/31.jpg)
라그랑지 보간법 (Lagrange Interpolation)
31
![Page 32: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/32.jpg)
32
![Page 33: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/33.jpg)
1차원 보간법
yi = interp1(x, y, t, 보간방법)
• xi, yi – 데이터 쌍 (좌표값)
• t – 위의 데이터에 대해 보간(interpolate)된 그래프를 그릴 때, x축 값에
해당하는 벡터
보간 방법
• ‘nearest’ : 가장 근접한 이웃 보간
• ‘linear’ : 선형 보간 (기본값)
• ‘spline’ : 3차 스플라인 보간
• ‘pchip’ : 3차 Hermite 보간
33
![Page 34: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/34.jpg)
각 보간법들의 차이
34
![Page 35: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/35.jpg)
spline 이용한 보간법
주어진 데이터 점들을 지나면서 점들 사이에 부드러운 곡선을 형성
2차 미분이 연속이며, 동일한 보간 제약 조건들을 만족해야 함
다양한 방법이 있음
• 1차 스플라인: 붉은 색 선
• 2차, 3차 스플라인: 녹색선 (포물선)
spline 함수:
• 3차 스플라인
– 연속된 두 점 xi, xi+1 사이에 3차 다항식으로 생성되는 곡선으로 연결
– 각 점에서 스플라인 라인은 1차 2차 미분 가능 (즉, 구간이 부드럽게 연결)
35
![Page 36: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/36.jpg)
spline
p = spline(x, y, t)
• 데이터 점 (x, y)가 주어지면 해당 데이터 점들을 가지고 spline 을 그림
• 데이터 점 외에 t로 주어지는 점들에 대해 spline(t) 의 값을 p로 반환
36
x -2 -1 0 1 2
y 0.1429 0.3333 1.0000 1.0000 0.3333
![Page 37: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/37.jpg)
pchip
spline 과 거의 비슷
• 2차 미분을 갖지 않을 수도 있음 (즉, 구간이 부드럽게 연결 되지 않을 수도
있음)
spline 과 pchip 과의 차이
• spline은 overshoot 가 발생할 수 있음
– 즉, 데이터가 smooth function 모양인 경우에는 overshoot가 발생하지 않지만,
데이터가 smooth 하지 않게 배치된 경우에는 보간된 라인이 진동함
• pchip은
– 데이터가 smooth 하게 배치되지 않은 경우 overshoot 하지 않음
– spine보다 계산이 덜 복잡함
37
![Page 38: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/38.jpg)
pchip vs. spline
38
![Page 39: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/39.jpg)
Basic Fitting Tool 이용한 보간
39
![Page 40: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/40.jpg)
Quiz
다음 데이터들을 spline, linear, pchip 보간법을 이용하여 그려보자. 각
그래프에 데이터 점들도 함께 표시하여 보자.
40
x 0 1 2 3 4 5
y 1 -0.6240 -1.4704 3.2402 -0.7363 -6.3715
![Page 41: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/41.jpg)
Quiz Sol.
다음 데이터들을 spline, linear, pchip 보간법을 이용하여 그려보자. 각
그래프에 데이터 점들도 함께 표시하여 보자.
41
x 0 1 2 3 4 5
y 1 -0.6240 -1.4704 3.2402 -0.7363 -6.3715
![Page 42: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/42.jpg)
2차원 보간법
griddata(x, y, z, X, Y, 보간 방법)
• 임의의 데이터 점에 대해 2차원 보간
• x, y, z – 입력 데이터에 대한 x, y, z 좌표값
• X, Y – 보간할 X-Y plane의 grid 좌표값
보간 방법
• ‘nearest’ : 가장 근접한 이웃 보간
• ‘linear’ : 선형 보간 (기본값)
• ‘cubic’ : 삼각형 기반 3차 보간
42
![Page 43: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/43.jpg)
주어진 3차원 데이터의 보간
43
![Page 44: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/44.jpg)
보간 방법에 따른 그래프의 모양 변화
44
“nearest” : griddata(x,y,z,X,Y, ‘nearest’) “nearest” : griddata(x,y,z,X,Y, ‘natural’)
![Page 45: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/45.jpg)
보간 방법에 따른 그래프의 모양 변화
45
“nearest” :
griddata(x,y,z,X,Y, ‘nearest’)
“natural” :
griddata(x,y,z,X,Y, ‘natural’)
“linear” :
griddata(x,y,z,X,Y, ‘linear’)
![Page 46: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/46.jpg)
Vectorization
46
![Page 47: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/47.jpg)
Vectorization
반복문 대신 벡터 또는 행렬 연산으로 계산하는 방법
• 프로그램 처리 속도 향상됨
각종 행렬 연산을 위해 제공되는 함수들을 최대한 사용
• find 함수 등
47
n = 100
for i = 1:n
A(i) = B(i) + C(i);
end
n = 100;
A(1:n) = B(1:n) + C(1:n);
![Page 48: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/48.jpg)
Vectorization
48
% no vectorization
n = 100000;
A = 5;
f = zeros(1,100);
tic;
t = linspace(0, 2*pi, n);
for i = 1:n
f(i) = A * sin(t(i)/(2*pi));
end
toc;
Elapsed time is 0.027193 seconds.
% vectorization
n = 100000;
A = 5;
tic;
t = linspace(0, 2*pi, n);
f = A * sin(t/(2*pi));
toc;
Elapsed time is 0.004632 seconds.
![Page 49: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/49.jpg)
Quiz
10만개의 3차원 포인트와 주어진 한 포인트 간의 유클리디언 거리를
계산하여, 가장 가까운 거리를 갖는 포인트를 찾는 코드를 반복문 (for
문)을 사용하여 작성하고, 다른 하나는 vectorized code로 작성하여
속도를 비교해 봅시다.
• 힌트:
– Vectorized Code의 경우,
• 주어진 한 포인트를 repmat 함수를 사용하여 10만 x 3 행렬 rQ로 만들고, 10만개 포인트와
rQ의 행렬 뺄셈 등을 이용하여 계산
49
![Page 50: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/50.jpg)
Quiz
10만개의 3차원 포인트와 주어진 한 포인트 간의 유클리디언 거리를
계산하여, 가장 가까운 거리를 갖는 포인트를 찾는 코드를 반복문 (for
문)을 사용하여 작성하고, 다른 하나는 vectorized code로 작성하여
속도를 비교해 봅시다.
50
% no vectorization
N = 100000;
D = 3;
PTs = rand(N, D);
Q = rand(1, D);
tic;
% 이 곳에 코드를 작성하세요.
toc;
% vectorization
N = 100000;
D = 3;
PTs = rand(N, D);
Q = rand(1, D);
tic;
rQ = repmat(Q, N, 1);
% 이 곳에 코드를 작성하세요.
toc;
![Page 51: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/51.jpg)
Quiz Sol.
10만개의 3차원 포인트와 주어진 한 포인트 간의 유클리디언 거리를 계산하여,
가장 가까운 거리를 갖는 포인트를 찾는 코드를 반복문 (for 문)을 사용하여
작성하고, 다른 하나는 vectorized code로 작성하여 속도를 비교해 봅시다.
51
% no vectorization
N = 100000;
D = 3;
PTs = rand(N, D);
Q = rand(1, D);
tic;
D2 = zeros(N,1);
for i=1:N
PT = PTs(i,:);
D2(i) = sqrt(sum((Q-PT).^2));
end
[VAL2, IDX2] = min(D2)
toc;
% vectorization
N = 100000;
D = 3;
PTs = rand(N, D);
Q = rand(1, D);
tic;
rQ = repmat(Q, N, 1);
D = sqrt(sum((rQ-PTs).^2, 2));
[VAL1, IDX1] = min(D)
toc;
![Page 52: MATLAB for C/C++ Programmers · 2014-01-28 · 변수 간의 관계 확정적 (deterministic) 관계 • 두 변수 사이에 수학적 공식 y = f(x) 가 성립한다는 것 •](https://reader033.vdocuments.pub/reader033/viewer/2022041609/5e36a295ff097208b9670d43/html5/thumbnails/52.jpg)
find 함수 사용 시 속도
행렬에서 특정 조건을 만족하는 원소들을 찾기 위해 find 함수를 쓰는
경우와 쓰지 않는 경우의 속도 비교
52
% find를 쓰지 않는 경우
N = 1000;
m = rand(N);
idx = [];
tic;
for i=1:N^2
if (m(i) < 0.2)
idx = [idx i];
end
end
toc;
Elapsed time is 2.242514 seconds.
% find를 쓰는 경우
n = 1000;
A = 5;
tic;
idx = find(m < 0.2);
toc;
Elapsed time is 0.002795 seconds.