728x90
목차

1. 연립방정식을 행렬 만들고 소거법으로 풀기

2. 역행렬로 연립방정식 풀기

 

연립방정식을 푸는 방법, 대입법과 가감법을 사용해서 문제 풀어보는 방법 알아보기

 

수학적으로 문제를 풀때는 방정식의 형식을 이용하고는 합니다.

가장 기본적으로 연립방정식을 푸는 법을 위에 포트팅에 작성했습니다.

사실 일단 기본적인 방법만 알고 컴퓨터로 구해도 충분합니다.

그래도 조금 더 복잡한 연립방정식을 푸는 법을 알아보도록 하겠습니다.

 

 

1. 연립방정식을 행렬 만들고 소거법으로 풀기

 

모든 연립방정식은 행렬로 나타낼 수 있습니다.

쉽게 모든 계수는 숫자로 하고 미지수는 한개의 열을 가지고 있는 행렬로 나타냅니다.

이런 식으로 아주 많은 계수도 나타낼 수 있고 컴퓨터에 데이터를 넣기도 편해집니다.

 

연립방정식을 행렬로 나타내기

 

연립방정식이 행렬 A × (x,y,z) = B의 형식으로 만들었습니다.

이제 소거법을 적용해 봅니다.

 

① 한개의 미지수의 계수를 모두 똑같이 만듭니다.

 

위의 행렬식에서 1행에 x의 계수는 2입니다.

2행에 2/3을 곱하고 3행에는 1/2를 곱합니다.

그럼 첫번째 열, x의 미지수가 똑같아 집니다.

 

x 숫자 맞추기

 

 

 

② 1행과 2행, 2행과 3행을 빼서 x자리를 0으로 만듭니다.

 

아래 두 행에는 x의 계수가 0이 됩니다.

이제 밑에 두개를 가지고 같은 작업을 반복해 줍니다.

 

두개의 행이 x가 0이 됩니다.

 

 

③ 이제 y 자리도 0으로 만들어 줍니다.

 

아래쪽 두개의 행을 연산하면 y도 0으로 만들 수 있습니다.

z = 4라는 것을 알아냈고, 그걸 위에 적용하고 적용하면, x  = -2, y = 1 가 됩니다.

 

이제 정리가 됩니다.

 

이 방법은 반복 작업임으로 코드로 작성하기 좋은 강력한 알고리즘입니다.미지수가 100개라고해도 데이터만 입력하면 다 풀어줄 것입니다.

그리고 직접 손으로 풀어보는 것은 언제나 추천합니다.

원리를 아는데 직접 해보는 것보다 나은 것은 없고 컴퓨터가 어떻게 계산을 하는지 느낄 수 있습니다.

그리고 행렬은 미지수가 4개, 5개 짜리 계산을 손으로 해도 실수를 방지할 수 있는 방법입니다.

아마 예전에 모든것을 종이에 써서 계산할 때는 이만한 것이 없을 것 같습니다.

 

 

2. 역행렬로 연립방정식 풀기

 

연립방정식에서 행렬로 이용하는데 가장 중요한 것은 해를 찾을 수 있기 때문입니다.

연립방정식이 행렬 형식으로 만들면, 아래처럼 표현 가능합니다.

 

행렬로 정리하기

 

A의 역행렬인 A^-1를 구할 수 있다면 해를 구할 수가 있다는 뜻입니다.

그러나 역행렬을 구하는 그 방법자체가 어렵습니다.

역행렬 구하는 방법은 따로 포스팅을 링크합니다.

(행렬연산에서 필수적인 단위행렬과 역행렬에 대해서 알아보고 엑셀 함수 MUNIT와 MINVERSE로 계산하기)

 

조금 복잡한 행렬입니다.

 

이걸 엑셀의 MINVERSE 함수를 사용해서 역행렬을 얻었습니다.

컴퓨터를 사용하면 이런건 아주 쉬운 수준입니다.

 

역행렬 구하기

 

이걸 풀어보면 x = 7, y = -2, z = 4 라는 결과를 쉽게 구했습니다.

즉 역행렬을 계산할 도구가 있다면 큰 연립방정식을 구할 수 있다는 겁니다.

 


컴퓨터로 푸는 것을 너무 싫어하거나 너무 의존하는 것 둘다 좋지 않습니다.

한번 원리를 이해했다하더라도 그리고 진도가 충분히 나가 높은 수준의 기술을 다루는 분들도 짬짬히

이런 기초적인 원리를 공부할 것을 추천합니다.

처음 배울 때는 잘 모르지만 오히려 학문의 기초에는 수많은 아이디어가 농축되는 경우가 많습니다.

어느 이상의 레벨을 달성한 사람이 그걸 보면 도움이 될 수도 있겠죠.

오늘 포스팅은 초보적인 분들은 물론 전문적인 분들도 한번씩 보고 생각하는 글이 되었으면 합니다.

반응형
728x90

연립방정식은 2개 이상의 미지수가 있는 방정식이 두 개 이상 있을 때를 말합니다.

특별한 경우가 아니고서는 여러 개의 미지수가 있을 때는 최소한 그와 같은 수의 방정식이 필요합니다.

미지수가 두 개인 가장 간단한 연립방정식은 아래와 같이 나타납니다.

 

연립방정식

 

고차의 연립방정식은 미지수가 4개만 되어도 거의 컴퓨터에게 맡깁니다.

그래도 역시 사람이 푸는 것은 매우 중요합니다.

오늘은 학교에서 배우는 연립방정식을 푸는 방법에 대해서 알아보겠습니다.

 

 

1. 대입법으로 풀어보기

 

대입법은 가장 기본적인 해법입니다.

한 방정식에서 한 변수를 정리해서 다른 방정식에 적용하는 방식입니다.

한번 풀어보도록 하겠습니다.

 

예제

 

예시로 간단한 연립방정식에 대해서 풀어보도록 하겠습니다.

 

① 한 미지수에 대해서 정리하기

 

예제의 위에 식으로 x를 y로 정리하려면 양변에 y를 더하면 됩니다.

 

x에 대해서 정리하기

 

② 정리한 것을 다른 식에 적용하기

 

그럼 x 에 대해서 정리가 되는데 이 식을 그대로 아래에 적용합니다.

미지수가 1개 짜리 방정식임으로 쉽게 y 값에 대해서 알아낼 수 있습니다.

 

y=3이 나왔습니다

 

③ 얻은 값으로 다른 미지수 찾기

 

그럼 위든 아래든 쉬운 식에 y=3을 대입합니다.

그럼 x = 4를 얻을 수 있습니다.

이렇게 한 미지수로 정리해서 풀어나가는 방식을 대입법이라고 합니다.

현실에서도 논리적으로 많이 사용하는 방식인 것 같습니다.

 

 

2. 가감법으로 풀어보기

 

수학문제를 풀때는 가감법을 더 많이 사용합니다.

대입법을 수가 복잡하게 나열 되었을 때는 못쓸 때도 있고 계산이 더 복잡할 경우가 있습니다.

 

예제 공식

 

가감법의 경우 두 미지수 중 하나를 빼서 없애야 합니다.

이번에는 x를 제거하도록 합시다.

 

① 위아래의 계수 맞추기

 

위 아래식의 x의 계수를 똑같이 만들어야 합니다.

두 식의 계수가 2와 3인데 최소 공배수인 6으로 만들도록 하겠습니다.

 

위아래 식 맞추기

 

위의 식은 3을 곱하고, 아래식은 2를 곱합니다.

 

② 두 식을 빼기

 

두 식을 빼면 x는 없어집니다.

y만 남은 간단한 형태가 되어 y를 쉽게 계산할 수 있습니다.

 

y만 남습니다.

 

이 방법으로 y = 3이 되었음을 찾았습니다.

 

③ 남은 하나의 계수 구하기

 

y = 3인 것을 알고 있기 때문에 x는 쉽게 구할 수 있습니다.

아무 식에나 y를 대입하면 x = 7이 됩니다.

 


 

수학적으로 푸는 방법을 정리했습니다.

상황이 없고 수식을 계산만할 때는 그저 기계적이라는 생각을 버릴 수 없습니다.

하지만 이 연립방정식은 상당히 논리적인 상황을 압죽하고 있습니다.

 

과학연구에서는 항상 완벽하게 관측이 가능한 것이 아닙니다.

예를 들어 완전 밀패하고 진공상태에서 에너지를 가해서 물체는 랜덤하게 만들어진다고 보겠습니다.

첫번째 실험에서는 A 화합물 2개와 B 화합물 3개를 만들어 질 때 14 kcal를 사용해서 만들어졌고

30 kcal를 가했더니 A 화합물 7개와 B 화합물 1개가 만들어졌습니다.

 

연립방정식

 

이런 연립방정식이 하나 만들어지고 A = 4 kcal, B = 2 kcal인 결과를 얻어냈습니다.

현장에선 엄청나게 많은 양의 변수가 가해지고 복잡한 실험을 해야합니다.

물론 컴퓨터가 많은 것을 해주지만, 수학적인 개념을 알고 있어야 효율적인 결과를 낼 수 있습니다.

 

 

반응형
728x90

수학에서 수와 그 계산부호가 놓여져 있는 것을 수식이라고 합니다.

부호 중에서도 같다는 뜻을 가지고 있는 등호 "="를 기준으로 좌항과 우항으로 나누어진 식을 등식(Equality)이라고합니다.

등호(=)를 사용하면 등식(Equality)이고 그외의 기호인 >, ≥, <, ≤ 을 사용하면 부등식(Inequality)라고 합니다.

 

 

1. 방정식(Equation)의 의미


이 등식 중에 모를 값 즉, 미지수가 있는 등식을 방정식(Equation)이라고 합니다.

미지수가 고정일 수도 있지만 변할 수 있는 변수일 때는 함수라고 표현합니다.

미지수를 쓸 때는 딱히 정해진 것은 없지만 영문자 하나를 사용할 때가 많고 주로 x, y, z로 표현합니다.

 

기본 방정식

 

방정식의 식을 참으로 만드는 미지수의 값을 해(Root)라고 합니다.

위의 식에서는 x = 3 인 경우에 등식이 참으로 성립함으로 x의 해(Root)는 3이다. 라고 할 수 있습니다.

 

 

2. 방정식(Equation)의 사용

 

방정식문자로 적혀있는 질문을 수학으로 개념화하는 역할을 하기 때문에 매우중요하다고 할 수 있습니다.

예를 들어 10리터가 이미 들어있는데 어떤 물통으로 3번 더 체워 넣었더니 16리터가 되었더라 봅시다.

 

예시 상황

 

이걸 방정으로 적으면 아래와 같이 요약할 수 있습니다.

그리고 이 경우 x가 2라는 것은 딱히 계산하지 않아도 알 수 있겠죠.

 

방정식

 

좀 더 복잡한 이야기를 하겠습니다.

산업혁명시절 어떤 공장에서 A 설비와 B 설비를 사용했는 구조를 연구하고 있지만 도면이 남아있지 않았다

과거 기록을 살피면 3월에 1150리터의 기름을 가지고 A 설비 40번과 B설비 10번을 운용하고

4월에는 1000 리터로 A설비를 15번, B설비를 40번이 사용가능했다.

 

방성식으로 변환

 

이렇게 단순한 표현으로 긴 문장의 의미를 표현할 수 있습니다.

압축률도 상당한데다가 수식으로 적어두면 오해도 적고 객관적입니다.

바로 이것이 우리가 방정식을 사용하는 이유입니다.

 

 

3. 방정식의 종류

 

이런 방정식의 종류를 몇가지 살펴보겠습니다.

사용하는 수학적 툴에 따라서 방정식의 이름을 붙이고는 하는데요.

절대적으로 이 방정식과 저 방정식의 차이가 있는 것은 아니고 분류를 하기 위해 필요합니다.

분류를 하면 방정식을 풀기 위해 필요한 사전지식이나 컴퓨터의 알고리즘을 고려할 수 있습니다.

 

① 항등식 :

항상 같은 식을 이야기 합니다. 미지수가 어떤 값이 되든 성립하는 방정식입니다.

이 경우는 해를 정할 수 없다는 뜻에서 불능이라고 합니다.

 

항등식의 예

 

② 연립방정식 : 

같은 해를 가지는 미지수를 사용하는 여러 개의 방정식을 이야기 합니다.

최소한 변수의 수보다 방정식의 수가 많거나 같아야 합니다.

 

연립방정식

 

③ 다차방정식 : 

방정식에서 미지수의 차수가 높은 것을 이야기합니다.

제곱, 세제곱을 넘어가는 고차방정식이 되거나 미지수가 두개가 넘으면 복잡도가 엄청나게 올라갑니다.

복잡한 계산과정을 거치거나 알고리즘을 이용해서 해를 찾아야 합니다.

 

다차 방정식

 

④ 적분방정식 : 

방정식 안에 적분이 들어가 있는 것입니다.

적분에 대해서 이해해야 풀어낼 수 있습니다.

 

 

 

⑤ 미분방정식 : 

의미는 간단하게 미분식(도함수)를 포함하고 있는 방정식을 이야기합니다.

변화량을 의미하는 미분 방정식은 다양한 물리현상을 설명하기 최적화 되어있습니다.

풀어내는 법이 매우 어려워 재대로 하려면 전문적인 고차원의 지식이 필요하고,

경우에 따라서는 수학적 모델을 전문적으로 해석하는 프로젝트로 팀단위로 풀어내기도 합니다.

 

용수철의 운동방정식

 


 

수학은 논리적인 사고를 하는 도구입니다.
어떤 의문을 풀기 위한 수학이라는 도구를 사용한다면 문장을 수식으로 나타내는 능력이 필수라고 할 수 있겠네요.

학생시절에 학교에서 배우는 수학은 계산능력 자체에 몰려있는게 현실입니다.

그러나 분명히 수학교과의 커리큘럼은 연산 논리를 학습하기 위한 내용이 많습니다.

너무 성적에만 연연하지 말고 가끔 사고하는 방법을 이 공식에 어떻게 접목할지 생각해보세요.

 

반응형
728x90

곱셈연산에서는 1을 곱하면 그 숫자를 그대로 돌려줍니다.

이 때 1을 곱셈의 항등원이라고 하고 곱해서 1이 되게 만드는 값을 역원이라고 합니다.

실수에서는 역원은 역수가 됨으로 쉽게 구할 수 있습니다.

 

곱셈의 성질

 

하지만 행렬은 이 과정이 매우 복잡합니다.

행렬에서 곱셈을 컨트롤 하는 방법을 알아보겠습니다.

 

목차

1. 단위행렬(Unit Matrix)

2. 역행렬(inverse matrix)의 정의

3. 엑셀로 구하는 MUNIT 함수와 MINVERSE 함수

 

 

 

1. 단위행렬(Unit Matrix)

 

행렬의 곱셈의 항등원을 단위행렬이라고 합니다.

단위행렬은 흔히 I로 표기됩니다.

 

단위행렬

 

정사각행렬의 크기는 달라져도 모양은 모두 똑같습니다.

대각선 방향으로 1이 있고, 나머지는 모두 0입니다.

사이즈에 따라 무한히 커질 수 있습니다.

 

행렬의 크기에 따른 단위행렬

 

변환하거나 전환해도 계속 단위행렬로 남아 있습니다.

1로 정의되는 스칼라 값이 변할 수는 있지만 모양은 유지됩니다.

 

 

2. 역행렬(inverse matrix)의 정의

 

곱해서 단위행렬이 되는 행렬을 역행렬이라고 합니다.

역행렬이 존재하기 위해서는 정사각행렬이 여야 하고, 행렬식은 0이 아니여야 합니다.

행렬식이 0이 아닌 상태를 가역(invertible)이라고 합니다.

 

역행렬의 정의

 

< 2 x 2 행렬의 역행렬 >

 

2x2 행렬은 정사각 행렬 중 가장 작은만큼 구하기가 쉽습니다.

비교적 그렇다는 겁니다.

학생분들은 일단은 이걸 통채로 외워버리는 쪽이 빠릅니다.

 

역행렬

 

 

< 3 x 3 이상의 크기의 역행렬 >

 

3 x 3 이상일 때는 본격적으로 복잡해집니다.

행렬의 연산은 복잡도가 있고 다양한 알고리즘을 통해서 역행렬을 구할 수 있습니다.

그 중에 하나를 알아보도록 하겠습니다.

사전에 행렬식과 여인자(cofactor)를 계산하는 방법을 알아야 합니다.

이 것도 꽤 분량이 기니까 아래 포스팅에 링크를 올립니다.

여인자 전개를 통해 행렬식(determinant)을 구하는 방법 과 엑셀(EXCEL)에서 MDETERM 함수로 행렬식 계산하기

 

행렬식(=det)와 여인자(=Cij)를 알고 있다면 역행렬은 아래와 같이 적용할 수 있습니다.

adj는 여인자(=Cij) 행렬의 전치행렬입니다.

 

역행렬 구하기

 

간단해 보이지만 막상 계산하려면 엉? 하는 식이 나왔습니다.

이걸 풀어서 쓰면 굉장히 길어지는데요.

3 x 3 행렬에 대해서 풀어쓰면 아래와 같이 역행렬이 구해집니다.

 

역행렬 구하기

 

공부하는 분들은 규칙이 이해가 안되면 그냥 한번 따라가 보시면 됩니다.

하지만 그냥 일반인들은 식을 한번 본거에 만족하고 넘어가도 됩니다.

왜냐면 지금은 다양한 수학 툴이 알고리즘으로 제공하기 때문입니다.

 

 

3. 엑셀로 구하는 MUNIT 함수와 MINVERSE 함수

 

가장 대중적인 프로그램 중 하는 엑셀입니다.

엑셀에서 복잡한 행렬연산을 실행하는 함수를 제공합니다.

 

MUNIT(dimension) : 단위행렬을 만들어줍니다.

  • dimension : 단위행렬의 크기(차원)입니다. 1 이상의 정수를 입력해야 합니다.
  • 오피스 365 이상의 버전은 배열의 수만큼의 칸에 자동으로 입력하지만 그 이전 버전은 입력해야 합니다.

MUNIT 함수

 

사용이 간단한 함수입니다.

 

 

MINVERSE(array) : 함수의 역함수를 구합니다.

  • array : 함수의 범위입니다. 행렬로 해석될 수 있는 배열로 입력되어야 합니다.
  • 같은 셀 범위 혹은 {1,2,3;4,5,6;7,8,9}와 같은 배열 상수를 입력할 수 있습니다.
  • 범위내의 셀이 비어있거나 텍스트로 입력되면 #VALUE 에러를 반환합니다.
  • 범위를 입력 받아서 범위를 출력하는 함수입니다.
    역시 오피스 365 이상에서는 자동으로 배열을 반환하지만 그이전에는 범위를 선택해야 합니다.

함수 사용법

 

조금 사용이 어렵기는 하지만 복잡한 계산이 이렇게 편해집니다.

 

반응형
728x90
목차

1. 행렬식(determinant)

2. 소행렬(Minor matrix)로 쪼개기

3. 여인자(cofactor)와 행렬식

4. 엑셀 함수 MDETERM 로 계산하기

 

 

수학에서는 여러 개의 차원이나 대상, 숫자가 규칙성 있게 정렬되고 연산되기 위해 행렬을 사용합니다.

행렬은 숫자들이 직사각형 모양으로 나열된 상태를 말하고 가로-행와 새로-열로 구성되어 있습니다. 

 

일반적인 행렬

 

 

1. 행렬식(determinant)

 

행렬식은 행과 열의 수가 같은 정사각 행렬의 경우에만 적용이됩니다.

행렬식(determinant)는 정사각 행렬의 특성을 보여주는 숫자로 다양한 연산에 사용됩니다.

연립방정식에서 수들의 성질을 보여주는 수로 determinant( : 결정하다)의 의미를 가지는 행렬식이 만들어졌습니다.

 

기본적인 행렬식 det

 

행렬식의 값이 0이면 해당 배열의 역행렬을 만들 수 없으며, 연립방적식의 해도 구할 수 없습니다.

역사적으로는 행렬식이 행렬보다 더 빨리 만들어졌다고 하네요.

2 x 2 행렬의 행렬식은 아래와 같이 정의됩니다.

 

행렬식

 

문제는 이거보다 긴 행렬의 행렬식을 표현할 때입니다.

정말 다양한 방법으로 행렬식이 계산되지만 오늘은 여인자 전개(cofactor expansion)를 알아보겠습니다.

 

 

2. 소행렬(Minor matrix)로 쪼개기

 

먼저 부분행렬 혹은 소행렬이라고 불리는 행렬 쪼개기를 해야합니다.

정사각 행렬은 또 다른 정사각행렬로 쪼개질 수 있습니다.

아래 3 x 3 행렬의 부분 행렬 m11은 아래와 같이 나타낼 수 있습니다.

 

단위행렬

 

그럼 이번에는 설명을 쉽게 하기 위해 용어을 통일하겠습니다.

1행 부분행렬은 1행을 제외하는 3개의 행렬을 이야기 합니다.

1행 부분행렬 m11, m12, m13은 아래와 같습니다.

제외되는 값의 중심을 부분행렬의 원소로 삼습니다.

 

1행 부분행렬

 

그리고 2행 부분행렬, 3행 부분행렬도 이렇게 정리할 수 있습니다.

 

< 2행 부분행렬 >

m21, m22, m23

2행 부분행렬

 

< 3행 부분행렬 >

m31, m32, m33

3행 부분행렬

 

 

3. 여인자(cofactor)와 행렬식

 

여인자는 부분행렬의 행렬식의 값에 행렬에 따라서 -1를 곱한 값입니다.

여인자

 

한행에 대한 여인자를 각각의 원소와 곱해서 모두 더하는 것을 여인자 전개(cofactor expansion)라고 합니다.

이 여인자 전개 값이 바로 행렬식 값이 됩니다.

 

여인자 전개

 

Σ도 들어가고 바로 알기 어려우니 예로 하나의 행렬식에 대해서 직접 계산을 해보겠습니다.

아래 행렬 A에 대한 행렬식의 값은 -7로 계산됩니다.

 

행렬식 계산하기

 

 

4. 엑셀 함수 MDETERM 로 계산하기

 

사람의 손으로 하기 어려운 계산이라는 것은 짐작하실 껍니다.

3 x 3 행렬까지라면 모르겠지만 4 x 4 행렬은 3 x 3의 부분행렬으로 나누고, 

다시 그 3 x 3의 행렬식을 구해야 하니 복잡도가 엄청나게 올라 갑니다.

 

하지만 다행히도 이런 계산은 컴퓨터에게는 오히려 쉽습니다.

엑셀에서도 MDETERM 함수를 제공합니다.

 

MDETERM(Array) : 행렬의 행렬식을 구합니다.

  • 행렬은 정사각행렬이여야 하며 문자나 빈칸을 포함하면 안됩니다.
  • 엑셀의 정밀도는 소수점 16자리로 많은 계산이 반복되면서 발생하는 에러가 있을 수 있습니다.
  • 정말 큰 행렬에 대해서는 전문 수학 Tool을 사용하거나 직접 코딩하는 쪽을 권장합니다.

 

< 함수 사용하기 >

사용예

 

함수를 사용하는 것은 쉽고 빠릅니다.

6 x 6의 행렬도 아주 빠르게 행렬식을 계산해 줍니다.

 

 

 

반응형
728x90

원과 타원

원과 타원의 정의는 각각 아래와 같습니다.

 

원(circle)은 평면상의 한 점에서 일정한 거리에 있는 평면상의 점으로 이루어지는 곡선
타원(ellipse)은 두 정점으로부터 거리의 합이 일정한 점들로 이루어진 곡선
(출처 : 다음 백과사전)

 

뭐든 수학적인 정의로 말하면 어려워지는 것 같습니다.

그래도 원과 타원은 눈으로 보면 명확하게 다릅니다.

하지만 어떻게 디자인 하나를 생각하면 꽤 복잡해집니다.

오늘은 얼마나 타원이냐를 따져보는 타원율(Ellipticity)에 대해서 알아보겠습니다.

 

 

1. 이심률 (Eccentricity)

 

이심률은 타원이 얼마나 찌그러졌는지를 나타내는 값입니다. 

타원의 장축(semi-major axis)과 단축(semi-minor axis)을 사용하여 이심률을 계산할 수 있습니다.

장축의 길이가 a, 단축의 경우 b라고 표시할 때 타원의 이심률 e는 아래와 같습니다.

 

이심률(e)의 정의

 

  • e=0일 때는 원(circle)입니다.
  • 타원은 e가 0에서 1 사이입니다.
  • e=1에 가까워질수록 타원은 더 납짝한 모양이 됩니다.

 

이심률에 따른 타원의 모양은 아래와 같습니다.

 

이심률에 따른 모양

 

 

 

2. 타원 평면도 (Flatness) - 타원률

 

타원에 평평함을 나타내는 또 다른 계산지표입니다.

이심률보다 개념이나 계산이 간편하여 여러분야에 응용할 수 있습니다.

이 경우도 타원의 장축 a와 단축 b를 사용해서 계산을 합니다.

 

이때 평편도 f는 아래와 같습니다.

 

평면도 f

 

 

평면도에 대한 모양

 

 

 

3. 사용하기 - 필터

 

타원율이 생각보다 많은 분야에서 사용되는데, 그 중 하나가 신호체계에서 필터입니다.

필터는 여러가지 조건에 따라 신호를 걸러주는 역할을 하는 경우가 많습니다.

이번에는 90˚ 방향에서 들어오는 신호는 차단해주고 0˚ 방향에서 입사하는 신호는 받아들이는 필터를 생각해 보겠습니다.

이 필터가 만들어내는 모양은 기본적으로 아래와 같습니다.

 

이상적인 필터는 타원율이 1.0

 

0˚ 로 입사되는 신호는 100% 들어오지만 90˚ 방향은 0%로 이상적으로 구현되었습니다.

이때 0˚ 방향을 장축 a이고 90˚ 방향은 단축 b 으로 해서 타원 평면도를 계산합니다.

이 때 평면도 f = 1이 되고 이 경우 성능이 우수하다고 합니다.

하지만 현실에서는 필터가 완벽하게 작동하지 않습니다.

 

현실에서 필터(타원율 0.8)

 

90˚ 방향의 성분이 다 차단되지 않아서 어느정도 남아 있는 것이 보입니다.

이 때 평면도를 계산하면 f = 0.8으로 필터의 성능을 나타내 줍니다.

반응형
728x90

링크

 

목차

1. 지수평활법과 계수들

2. 계수들의 값을 정하는 법

3. 엑셀로 최소제곱법 적용 준비하기

4. 엑셀로 최소제곱법을 적용하여 계수 구하기

5. 엑셀의 FORECAST.ETS.STAT 함수 사용하기

 

 

1. 지수평활법과 계수들

 

시간에 따라 움직이는 데이터를 분석해서 미래값을 예상하는 지수평활법에서는 각각에 계수를 사용합니다.

계수에 딱히 정해진 이름은 없지만, 이 포스팅에서는 α, β, γ를 사용하겠습니다.

수준(Lt : Level)에는 α, 추세(Tt : Trend)에 β, 계절성(St : Seansonality )의 γ로 하고,

삼중지수평활법 (Triple Exponential Smoothing)의 형태는 아래와 같습니다.

 

삼중지수평활법 (Triple Exponential Smoothing)

 

계수들은 특별하게 정해진 규칙은 없지만, 1보다 작은 값으로 구성되며 보통은 보통은 아래범위에서 사용합니다.

 

α (수준 평활 상수): 0.1 ~ 0.3

β (추세 평활 상수): 0.01 ~ 0.3

γ (계절성 평활 상수): 0.01 ~ 0.3

 

 

2. 계수들의 값을 정하는 법

 

계수들의 값을 정하는 법, 역시 이거다 하는 규칙이나 공식은 없습니다.

보통은 아래 3가지 중에 하나는 사용하고는 합니다.

 

① 직관적으로 결정한다.

그래프의 과거 데이터와 가장 잘 맞는 값을 직관적으로 선택합니다.

민감도가 작을 수록 값을 작게, 클 수록 큰 값이 됩니다.

 

② 최적화 알고리즘을 사용한다.

일부 통계 프로그램에선 최적회된 알고리즘을 제공합니다.

Python이 대표적인 예로 scipy.optimize 가 있습니다.

 

③ 최소제곱법(Least Squares Method)

최소자승법이라고 불리기도 하는 방법으로 기존의 관측값과 계산을 수행한 값들의 차가 최소가 되는 계수를 구합니다.

즉 과거의 데이터로 이미 관측된 값을 계산하여 가장 오차가 적은 계수값을 적용하는 방식입니다.

오늘은 이걸 가지고 포스팅해 보겠습니다.

 

 

3. 엑셀로 최소제곱법 적용 준비하기

 

엑셀에서는 최적화된 알고리즘을 지원하지만 이번에는 VBA로 최소제곱법으로 구해보겠습니다.

대부분의 사람들이 엑셀을 가지고 있고 가벼운 소스임으로 지수평활법을 사용하는 원리를 알기 위해 계산해 보겠습니다.

그 전에 준비물이 몇개 있습니다.

 

① 해 찾기 추가 기능

 

VBA에서는 최소제곱법으로 해를 찾는 Solve 기능을 지원하는데 사용하기 위해서는 우선 엑셀에서 먼처 활성화 합니다.

[상단매뉴] - [파일] - [Excel 옵션] - [추가 기능] - [이동] - [해 찾기 추가 기능]을 활성화 시킵니다.

그럼 데이터 매뉴에서 해 찾기가 추가된 것도 확인할 수 있습니다.

 

해 찾기 기능 활성화 하기

 

② Solver 참조하기

 

엑셀의 VBA 인터페이스에서는 추가 기능을 참조할 수 있습니다.

상단의 매뉴에서 [도구] - [참조] - [Solver를 활성화] 합니다.

이제 해찾기 매뉴인 Solver를 VBA에서 사용할 수 있습니다.

 

Solver를 참조합니다

 

 

4. 엑셀로 최소제곱법을 적용하여 계수 구하기

 

Solver 명령어와 그 파생기능을 VBA에서 사용할 수 있습니다.

이 기능을 이용해서 VBA 로 지수평활법의 계수를 구해보도록 하겠습니다.

 

Sub TripleExponentialSmoothingOptimization()
    Dim data As Variant
    Dim alpha As Double
    Dim beta As Double
    Dim gamma As Double
    Dim L() As Double
    Dim Te() As Double
    Dim S() As Double
    Dim forecast() As Double
    Dim i As Integer, t As Integer, m As Integer
    Dim n As Integer

'-------------------------------------------------------------------------------------
    '① 입력 데이터를 찾고 배열을 만듭니다.
    '입력 데이터
    data = Range("A2:A102").Value ' 데이터는 A2:A102 범위에 있습니다.
    m = 12 ' 계절 주기
    n = UBound(data) - LBound(data) + 1

    ReDim L(1 To n + m)
    ReDim Te(1 To n + m)
    ReDim S(1 To m)
    ReDim forecast(1 To n + m) ' 12개월 예측



'-------------------------------------------------------------------------------------
    '② 지수평활법의 초기값들을 입력합니다.
    
    ' 초기 수준과 초기 계절성 계산
    L(1) = Application.WorksheetFunction.Average(Range("A2:A13"))
    For i = 1 To m
        S(i) = data(i, 1) / L(1)
    Next i

    ' 초기 추세 계산
    Te(1) = (Application.WorksheetFunction.Average(Range("A14:A25")) - Application.WorksheetFunction.Average(Range("A2:A13"))) / m

    ' 초기값으로 사용할 평활 상수
    alpha = 0.1
    beta = 0.1
    gamma = 0.1

    ' 초기 알파, 베타, 감마 값을 시트에 입력
    Range("G2").Value = alpha
    Range("H2").Value = beta
    Range("I2").Value = gamma


'-------------------------------------------------------------------------------------
    '③ 주어진 값들로 이미 있는 데이터와 차이를 구하는 CalulateSSE 함수를 만들었습니다.
    

    ' 목표 함수 셀에 CalculateSSE 결과 표시
    Range("J2").Formula = "=CalculateSSE(A2:A102, G2, H2, I2)"
    
'-------------------------------------------------------------------------------------
    '④ Solver 작동시킵니다.
        
    
    SolverReset
    SolverOptions Precision:=0.000001, Convergence:=0.0001, StepThru:=False
    SolverOk SetCell:=Range("J2"), MaxMinVal:=2, ValueOf:=0, ByChange:=Range("G2:I2")
    SolverAdd CellRef:=Range("G2:I2"), Relation:=1, FormulaText:="1"
    SolverAdd CellRef:=Range("G2:I2"), Relation:=3, FormulaText:="0.0000001"
    SolverSolve UserFinish:=True
    
    
    ' 최적화된 알파, 베타, 감마 값을 사용하여 삼중지수평활법 계산
    alpha = Range("G2").Value
    beta = Range("H2").Value
    gamma = Range("I2").Value
    
'-------------------------------------------------------------------------------------
    '⑤ 최적화 된 계수 값으로 수준, 추세, 계절성를 구합니다.
    
    
    forecast(2) = (L(1) + Te(1)) * S(1)
    
    For t = 2 To m
        L(t) = alpha * (data(t, 1) / S((t - 1) Mod m + 1)) + (1 - alpha) * (L(t - 1) + Te(t - 1))
        Te(t) = beta * (L(t) - L(t - 1)) + (1 - beta) * Te(t - 1)
        forecast(t + 1) = (L(t) + Te(t)) * S((t - 1) Mod m + 1)
    Next t
    

    For t = m + 1 To n
        L(t) = alpha * (data(t, 1) / S((t - 1) Mod m + 1)) + (1 - alpha) * (L(t - 1) + Te(t - 1))
        Te(t) = beta * (L(t) - L(t - 1)) + (1 - beta) * Te(t - 1)
        S((t - 1) Mod m + 1) = gamma * (data(t, 1) / L(t)) + (1 - gamma) * S((t - 1) Mod m + 1)
        forecast(t + 1) = (L(t) + Te(t)) * S((t - 1) Mod m + 1)
    Next t

'-------------------------------------------------------------------------------------
    '⑤ 그래프에 없는 예측값을 구합니다.
    
     
    For t = n + 1 To n + 12
    
        L(t) = alpha * (data(UBound(data), 1) / S((t - 1) Mod m + 1)) + (1 - alpha) * (L(t - 1) + Te(t - 1))
        Te(t) = beta * (L(t) - L(t - 1)) + (1 - beta) * Te(t - 1)
        S((t - 1) Mod m + 1) = gamma * (data(UBound(data), 1) / L(t)) + (1 - gamma) * S((t - 1) Mod m + 1)
    
        forecast(t) = (L(t) + (t - UBound(data)) * Te(t)) * S((t - 1) Mod m + 1)
    Next t

    ' 결과 출력
    For i = 1 To n + m
        Cells(i + 1, 2).Value = L(i) ' 수준
        Cells(i + 1, 3).Value = Te(i) ' 추세
        Cells(i + 1, 4).Value = S((i - 1) Mod m + 1) ' 계절성
        Cells(i + 1, 5).Value = forecast(i) ' 예측값
    Next i

    ' 향후 12개월 예측 출력
    For i = n + 1 To n + 12
        Cells(i + 1, 5).Value = forecast(i)
    Next i
End Sub

'----------지수평활법을 사용하기 위한 함수를 만듭니다.-----------

Function CalculateSSE(dataRange As Range, alphaCell As Range, betaCell As Range, gammaCell As Range) As Double
    Dim data As Variant
    Dim alpha As Double
    Dim beta As Double
    Dim gamma As Double
    Dim L() As Double
    Dim Te() As Double
    Dim S() As Double
    Dim n As Integer
    Dim m As Integer
    Dim t As Integer
    Dim SSE As Double

    data = dataRange.Value
    alpha = alphaCell.Value
    beta = betaCell.Value
    gamma = gammaCell.Value
    n = UBound(data)
    m = 12

    ReDim L(1 To n)
    ReDim Te(1 To n)
    ReDim S(1 To m)
'-------------------------------------------------------------------------------------
    '③-1. 에러값을 구하기 위해 별도로 지수평활법을 실행합니다.
    
  
    ' 초기 수준과 초기 계절성 계산
    L(1) = Application.WorksheetFunction.Average(dataRange.Cells(1, 1).Resize(m))
    For i = 1 To m
        S(i) = data(i, 1) / L(1)
    Next i

    ' 초기 추세 계산
    Te(1) = (Application.WorksheetFunction.Average(dataRange.Cells(m + 1, 1).Resize(m)) - L(1)) / m

'-------------------------------------------------------------------------------------
    '③-2. 지수평활법을 수행하여 관측된 데이터와 차이를 계산합니다.
    
    ' 삼중지수평활법 계산 및 SSE 계산
    SSE = 0
    For t = m + 1 To n
        L(t) = alpha * (data(t, 1) / S((t - 1) Mod m + 1)) + (1 - alpha) * (L(t - 1) + Te(t - 1))
        Te(t) = beta * (L(t) - L(t - 1)) + (1 - beta) * Te(t - 1)
        S((t - 1) Mod m + 1) = gamma * (data(t, 1) / L(t)) + (1 - gamma) * S((t - 1) Mod m + 1)
        SSE = SSE + (data(t, 1) - (L(t) + Te(t)) * S((t - 1) Mod m + 1)) ^ 2
    Next t

    CalculateSSE = SSE
End Function

 

 

꽤 긴소스가 되었지만 실제로 구성은 간단합니다.

 

① 입력 데이터를 찾고 배열을 만듭니다.

이번에 사용해야 할 것은 수준(L), 추세(T), 계절성(S)와 예측값 Futrure(F)입니다.

그리고 기존의 입력한  DATA 행렬을 포함해서 작업 영역을 만듭니다.

 

② 지수평활법의 초기값들을 입력합니다.

계산을 수행할 초기값들을 입력합니다.

수준(L), 추세(T), 계절성(S)과 이번에 구할 계수 α, β, γ 들의 초기값을 입력합니다.

지수평활법에는 일반적인 값을 입력하고 계수는 0.1을 일괄적으로 입력합니다.

 

③ 주어진 값들로 이미 있는 데이터와 차이를 구하는 CalulateSSE 함수를 만들었습니다.

함수로 만들면 Solver를 적용하기 쉽습니다.

③-1. 함수인 CalulateSSE에는 에러값을 구하기 위해 별도로 지수평활법을 실행합니다.

③-2. 지수평활법을 수행하여 관측된 데이터와 차이-에러를 계산합니다.

 

④ Solver 작동시킵니다.

계수값을 변경하면서 Error인 출력값이 최소가 될 때까지 수행합니다.

정밀도를 0.000001수준으로 하여 고밀도록 작업하게는 했지만 이렇게 까지는 필요없습니다.

 

⑤ 최적화 된 계수 값으로 수준, 추세, 계절성를 구합니다.

⑥ 1주기의 예측값을 구합니다.

 

이렇게해서 구한 예측값입니다.

예측값이 정확한 것처럼 보이시나요?

조금 부정확한 면도 있는 것 같습니다.

 

알고리즘을 통해 예측한 값들

 

 

5. 엑셀의 FORECAST.ETS.STAT 함수 사용하기

 

엑셀에서는 계수를 구하기 위한 함수를 제공합니다.

아래 링크는 각 계수를 추출하는 방식에 대해서 FORECAST.ETS.STAT 함수에 대한 설명입니다.

 

https://toast-story.tistory.com/457#C3

 

엑셀(EXCEL)로 지수평활법의 ETS 모델을 사용하는 FORECAST.ETS 함수와 파생함수인 SEASONALITY / STAT 함수

링크 목차1. FORECAST.ETS 함수2. FORECAST.ETS.SEASONALITY 함수3. FORECAST.ETS.STAT 함수4. 함수 적용해 보기 엑셀에서는 확장형 삼중 지수평활법인 ETS 알고리즘을 사용하여 기존의 관측값을 기반으로 미래값

toast-story.tistory.com

 

 


 

< 지수평활법과 ETS 관련 포스팅 > 

 

01. 시계열 분석에서 미래를 예측하는 이동평균법(SMA), 지수평활법(ES)으로 미래값을 예상하고 풀어보기

02. 지수평활법으로 데이터를 분석할 때 계절성과 주기를 파악하는 방법(Exponential Smoothing의 Seasonality)

03. 시계열 예측에서 지수평활법의 기본 모델(Additive)과와 확장 형태인 감쇠 (Damped) 모델들의 정의

04. 시계열 예측에서 계절성에 따른 추세가 변하는 승법적 모델과(Multiplicative Model), 감쇠하는 승법적 모델(Damped Multiplicative Model)

05. 상황에 맞게 지수평활법과 ETS 모델(Exponential Triple Smoothing)을 사용해서 시계열 예측을 수행하기

06. 지수평활법에서는 사용하는 계수(α, β, γ)를 최소제곱법으로 구하는 방법(엑셀 VBA 구하기) - 현재글

07. 엑셀(EXCEL)로 지수평활법의 ETS 모델을 사용하는 FORECAST.ETS 함수와 파생함수인 SEASONALITY / STAT 함수

08. 엑셀(EXCEL)의 FORECAST.ETS 함수의 오차를 계산하는 CONFINT 함수(지수평활법을 사용하는 미래 예측 함수) 

 

반응형
728x90

링크

 

데이터를 평활화 시켜서 미래정보를 예측하는 지수평활법을 얼마간 알아보았습니다.

수준(Lt : Level), 추세(Tt :Trend), 계절성(St : Seasonality)와 데이터의 감쇄 여부, 또 계절성의 변화를 고려합니다.

대략적인 그래프의 모습은 아래와 같습니다.

 

< 지수평활법(Exponential Smoothing) >

 

모델별로 간단한 그래프의 모양

 

다양한 모델들을 구별하기 위해서 (Trend, Seasonality)로 표시합니다.

예를 들어 (A, M)은 증가하는 추세를 가지고, 승법적인 계절성을 가지는 모델이됩니다.

이때 수준(L_t, Level), 추세(T_t, Trend), 계절성(S_t, Seasonality) 값에 대해서 수식적으로 표현할 수 있습니다.

각 모델에서 예측하는 미래시점(k)에서 미래값 F은 계산하는 방법은 아래와 같습니다.

지수평활법 테이블

 

 

<  ETS 모델 >

 

현실에서 관측되는 데이터들은 그 차제로도 경향을 파악하기 어렵지만, 거기에 오차가 추가됩니다.

지수평활법에 오차를 넣어서 확장한 개념을 ETS 모델(Exponential Triple Smoothing) 이라고 합니다.

수준(Lt  : Level), 추세(Tt : Trend), 계절성(St : Seasonality)에 오차(εt : Error) 반영하는 모델로 되어있습니다.

오차를 정의한다는 것은 예상치에 대한 산포를 감안한다는 것과 같습니다.

 

1. Additive Error (덧셈 오차)

 

관측값에 에러를 적용할 때 더해주는 형태의 덧셈오차 모델은 예측값에 관측값과의 오차가 더해지는 형태입니다.

 

예측에서다가 확률 변수인 오차(ε)를 더해주는 기본적인 형태입니다.

위에서 본 것처럼 지수평활에 오차를 추가하여 확장한 ETS 모델들을 테이블로 정리할 수 있습니다.

 

덧셈 모델의 테이블

 

 

2. Multiplicative Error (곱셈 오차)

 

관측값에 에러를 적용할 때 곱해주는 형태의 곱셈 오차 모델은 예측값에 관측값과의 오차가 곱해지는 형태입니다.

확율적이 요소인 오차(Error)를 비율적으로 적용하는 방법입니다.

 

예측에 오차(ε)를 곱하는 형태로 단순하게 더해주는 것보다 더 극적인 형태로 오차의 영향을 받습니다.

관측값이 예측에 대해 얼마의 비율로 오차가 발생하는지를 알기 쉬운 모델입니다.

상황에 따라 선택하여 적용할 수 있습니다.

 

곱셈 모델 테이블

 


 

모델은 상황에 따라 적용할 수 있습니다. 예를 들어,

덧셈모델은 올해는 유난히 태양활동이 강해서 더워지는 경우 오차값을 가산하는 형태로 적용할 수 있습니다.

혹은 계절에 따른 판매량을 구할 때 유행이 지나는 것을 감안해서 비율적으로 예상할 때는 곱셈모델을 사용합니다.

ETS 모델에서 오차는는 모델의 예측 성능을 높이고 다양한 데이터 패턴을 설명하는 데 필수적인 구성 요소입니다.

모델링 과정에서 데이터를 면밀히 분석하여 적절한 Error 유형을 선택하는 것이 중요합니다.

 

< 지수평활법과 ETS 관련 포스팅 > 

 

01. 시계열 분석에서 미래를 예측하는 이동평균법(SMA), 지수평활법(ES)으로 미래값을 예상하고 풀어보기

02. 지수평활법으로 데이터를 분석할 때 계절성과 주기를 파악하는 방법(Exponential Smoothing의 Seasonality)

03. 시계열 예측에서 지수평활법의 기본 모델(Additive)과와 확장 형태인 감쇠 (Damped) 모델들의 정의

04. 시계열 예측에서 계절성에 따른 추세가 변하는 승법적 모델과(Multiplicative Model), 감쇠하는 승법적 모델(Damped Multiplicative Model)

05. 상황에 맞게 지수평활법과 ETS 모델(Exponential Triple Smoothing)을 사용해서 시계열 예측을 수행하기 - 현재글

06. 지수평활법에서는 사용하는 계수(α, β, γ)를 최소제곱법으로 구하는 방법(엑셀 VBA 구하기)

07. 엑셀(EXCEL)로 지수평활법의 ETS 모델을 사용하는 FORECAST.ETS 함수와 파생함수인 SEASONALITY / STAT 함수

08. 엑셀(EXCEL)의 FORECAST.ETS 함수의 오차를 계산하는 CONFINT 함수(지수평활법을 사용하는 미래 예측 함수) 

 

 

반응형
728x90

시계열 모델에서 DATA를 분석하기 위해서는 그 DATA가 가지고 있는 특성을 알아야 합니다.

자연 / 경제 / 사회에서 관측되는 값들은 추세를 가지거나 주기를 가지는데 그 주기나 추세도 변합니다.

오늘은 승법적 모델들에 대해서 알아보겠습니다.

 

 

1. 승법적 모델의 모양

 

승법적 모델의 모양

 

승법적 모델(Multiplicative Model) : 주기가 지남에 따라 진폭 점점 커집니다.

따라서 값들이 더 흔들리게 되고 예상하기 어려운 모양이 됩니다.

감쇄하는 승법적 모델(Damped Multiplicative Model) : 승법적 모델에서 전체 추세 자체가 포화하는 형태입니다.

 

 

2. 지수 평활법에서 승법적 모델

 

승법적 모델(Multiplicative Model)은 계절성 변동이 데이터 수준에 비례하여 나타나는 경우에 사용됩니다. 

데이터의 추세(T_t)에 따라 값(L_t)이 커지면 계절성(S_t)의 진폭도 비례하여 변합니다.

 

Multiplicative Model

 

여기에서 감쇄하는 승법적 모델(Damped Multiplicative Model)은 추세가 감소하는 경우를 고려합니다.

수식으로 표현하면 아래와 같이 됩니다.

 

Damped Multiplicative Model

 

 

3. 모델 적용해보기

 

임의로 만든 그래프에 승법적 모델(Multiplicative Model)과 승법적 모델(Damped Multiplicative Model)을 적용합니다.

아래의 하늘색선이 관측된 진짜 DATA로 보고 그 이후를 평활법으로 예상합니다.

주황색선으로 예상한 승법적 모델의 경우 추세가 점점 증가하는 것으로 시간이 지나면 원래 추세에서 멀어집니다.

회색선의 감쇠가 적용된 모델은 원 추세가 이어져 데이터가 평평해 집니다.

 

평활법 적용해보기

 

 


 

승법적 모델은 얼핏보기에는 적용할 사례가 많아보이지 않습니다.

하지만 오히려 자연에서 사용되는 케이스에는 더 많습니다.

 

Multiplicative Model의 적용 예시

  • 제품의 매출 : 어떤 제품의 판매매출은 계절에 영향을 받을 수 있습니다. 여름에는 판매량이 급증하고, 겨울에는 감소하는 패턴을 보일 수 있습니다.
    사업적 상황에 따라 시장이 커지면 변동량이 커지거나 작아지면서 계절성에 영향을 받습니다.
  • 관광객 수 : 여름철에 방문객이 많이 증가하고, 비수기에는 급감하는 패턴을 보입니다.
    이 역시 사업적 상황에 따라서 변동량이 커지거나 작아지면서 계절성에 영향을 받습니다.

 

Damped Multiplicative Model의 적용 예시

  • 기술 제품 수명 주기: 새로운 기술 제품의 초기에는 판매량이 급증할 수 있지만 시간에 따라 성장률이 둔화될 수 있습니다.
  • 신규 지역의 주택 시장 가격 : 예를들어 새로 개간된 지역에 주택이 들어선다고 하면, 초기에는 성장률이 급증하면서 성수기에는 잘 팔리고 비수기에는 안팔릴 수도 있습니다. 하지만 지역이 안정적이게 되면 결국 안정되게 되어 있습니다.

현실에서 데이터는 복잡하고 예측하기 어려운 형태를 하고 있습니다.

분석과 예상이란 것에 대해서 절대적인 규칙이 없고, 관측된 데이터를 보면서 적용할 모델을 선택해야 합니다.

 


 

< 지수평활법과 ETS 관련 포스팅 > 

 

01. 시계열 분석에서 미래를 예측하는 이동평균법(SMA), 지수평활법(ES)으로 미래값을 예상하고 풀어보기

02. 지수평활법으로 데이터를 분석할 때 계절성과 주기를 파악하는 방법(Exponential Smoothing의 Seasonality)

03. 시계열 예측에서 지수평활법의 기본 모델(Additive)과와 확장 형태인 감쇠 (Damped) 모델들의 정의

04. 시계열 예측에서 계절성에 따른 추세가 변하는 승법적 모델과(Multiplicative Model), 감쇠하는 승법적 모델(Damped Multiplicative Model) - 현재글

05. 상황에 맞게 지수평활법과 ETS 모델(Exponential Triple Smoothing)을 사용해서 시계열 예측을 수행하기

06. 지수평활법에서는 사용하는 계수(α, β, γ)를 최소제곱법으로 구하는 방법(엑셀 VBA 구하기)

07. 엑셀(EXCEL)로 지수평활법의 ETS 모델을 사용하는 FORECAST.ETS 함수와 파생함수인 SEASONALITY / STAT 함수

08. 엑셀(EXCEL)의 FORECAST.ETS 함수의 오차를 계산하는 CONFINT 함수(지수평활법을 사용하는 미래 예측 함수) 

반응형
728x90

시간에 따라 변화하는 다양한 데이터를 분석해서 미래를 예측하려는 것을 시계열 예측이라고 합니다.

이 과거의 DATA가 가지고 있는 수준(Leve))과  추세(Trend), 계절성(Seasonality)을 통해 미래 정보를 예상하는 것이 지수 평활법(Exponential Smoothing)입니다.

 

지난번에 포스팅의 내용을 한번 더 말하고 넘어가겠습니다.

이 지수평활법은 현재시점 t에서 k 번째 미래를 예상하기 위해서 아래와 같은 기법을 사용합니다.

 

 

1. 지수평활법의 종류와 정의

 

지수평활법은 최근에 일어난 일에 대해 가중치를 줘 계산하는 방식입니다.

단순한 개념으로 설명하는 일반식은 이 형태가 됩니다.

좀 더 개념을 확실히 정리하기 위해 다른 표현 방법을 사용하면 아래와 같아집니다.

 

단순지수평활법 : 수준만을 고려하여 값을 구합니다.

( Ft : 미래값, Lt : 수준(Level), t, k : 시점 )

 

이중지수 평활법 : 데이터의 수준과 추세를 같이 사용합니다.

( Ft : 미래값, Lt : 수준(Level), Tt : 추세(Trend), t, k : 시점 )

 

삼중지수평활법 : 데이터의 수준, 추세에 계절성까지 생각합니다.

( Ft : 미래값, Lt : 수준(Level), Tt : 추세(Trend), S_t : 계절성(Seasonality), t, k : 시점 )

 

 

 

2. 감쇠하는 가산적 모델 At (Damped Additive) - 추세(Tt : Trend)의 변화

 

감쇠하는 가산적 모델은 추세의 변화에 대한 이야기입니다.

데이터를 분석하는 많은 분들에서 어떤 현상이 일어나는데, 데이터의 추세가 줄어든다는 것입니다.

 

 

 

자연계에서 예를 들면 떨어지는 물질이 가속이 줄어들다 특정 속도에 머물거나,

습기가 올라가다가 어느순간부터 점점 줄어들다 멈추는 현상이 있기 시작했습니다.

"포화"라고 부르는 이 현상을 설명하기 위해 감쇠 모델이 사용되게 됩니다.

(자연에서는 선형이 아닌 경우가 더 많습니다.)

이 모델에서는 감쇠상수 Ø가 추가됩니다.

 

< 이중지수평활법의 감쇠계수 적용 >

 

DATA가 계절성이 없이 어떤 추세만을 가질 땐 이중지수평활법을 사용합니다.

그리고 감쇠가 되는 경우 감쇠상수 Ø를 적용한 식을 아래와 같습니다.

 

식에 Ø항이 추가되었습니다.

 

측정과 예측

 

위의 그래프는 감쇠를 적용하기 전후를 보는 것입니다.

하늘색의 실선은 관측데이터주황색의 데이터는 일반적인 이중지수평활법입니다.

감쇠를 적용한 회색실선은 그래프가 포화되는 것 처럼 움직입니다.

 

 


< 삼중지수평활법의 감쇠계수 적용 >

 

계절성을 입력한다면 수식이 좀 더 복잡해지죠.

수식적으로 서술하면 아래와 같이 계산할 수 있습니다.

 

식에 Ø가 추가했습니다.

 

감쇠를 적용한 삼중지수 평활법

 

위의 그래프는 감쇠를 적용하기 전후를 보는 것입니다.

하늘색의 실선은 관측데이터고 주황색의 데이터는 일반적인 삼중지수평활법입니다.

감쇠를 적용한 회색실선은 그래프로 증가하는 폭이 줄어드는 것을 알 수 있습니다.

 


 

< 지수평활법과 ETS 관련 포스팅 > 

 

01. 시계열 분석에서 미래를 예측하는 이동평균법(SMA), 지수평활법(ES)으로 미래값을 예상하고 풀어보기

02. 지수평활법으로 데이터를 분석할 때 계절성과 주기를 파악하는 방법(Exponential Smoothing의 Seasonality)

03. 시계열 예측에서 지수평활법의 기본 모델(Additive)과와 확장 형태인 감쇠 (Damped) 모델들의 정의 - 현재글

04. 시계열 예측에서 계절성에 따른 추세가 변하는 승법적 모델과(Multiplicative Model), 감쇠하는 승법적 모델(Damped Multiplicative Model)

05. 상황에 맞게 지수평활법과 ETS 모델(Exponential Triple Smoothing)을 사용해서 시계열 예측을 수행하기

06. 지수평활법에서는 사용하는 계수(α, β, γ)를 최소제곱법으로 구하는 방법(엑셀 VBA 구하기)

07. 엑셀(EXCEL)로 지수평활법의 ETS 모델을 사용하는 FORECAST.ETS 함수와 파생함수인 SEASONALITY / STAT 함수

08. 엑셀(EXCEL)의 FORECAST.ETS 함수의 오차를 계산하는 CONFINT 함수(지수평활법을 사용하는 미래 예측 함수) 

 

 

 

 

 

반응형

+ Recent posts