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