글목록

2021년 4월 18일

Module 4. 다항식으로 일괄 Fitting (Regression) 하기 - (1)시작하며

선형 회귀식을 만드는 것은 엑셀 뿐만 아니라, 다양한 공학 소프트웨어에서 지원해주는 기능 중 하나입니다. Matlab이나 Mathematica, Python 등... 프로그래밍이 가능한 소프트웨어에서는 사용자가 원하는대로 데이터를 추출하거나, 변형하거나, 통계 작업을 일괄적으로 처리할 수 있다는 장점이 있습니다. 그러나, 이러한 소프트웨어 역시 개인적으로 일괄작업을 하기 위해서는 코딩하고, 저장해뒀다가 필요할 때마다 불러서 사용해야하기 때문에 엑셀 매크로나 별 차이가 없습니다.

그나마 엑셀은 스프레드시트에 데이터라도 보여주고, 셀 작업이라도 가시적으로 할 수 있다는 점에서는 오히려 GUI에 익숙한 사용자들에겐 편리하고 간편하다는 장점이 있기도 합니다.

한편으로는, 그래프나 통계 작업이 가능한 GUI 소프트웨어들에서 Regression 기능은 제공하지만, 데이터 하나하나를 따로 열어서 그래프를 그리고, 또 하나하나를 다시 regression 해야한다는 점에서 불편하기는 마찬가지입니다.

만약 다항식으로 regression하는 경우가 아닌, 지수, 로그, 삼각함수 등의 조합식으로 fitting해야하는 경우라면, 별도의 공학소프트웨어의 도움을 받아야하겠지만, 다항식 regression 정도는 간단한 행렬 계산만 수행하면 되기 때문에 엑셀에서도 쉽게 구현이 가능합니다.

사실, 정형화된 데이터만 입력받고, 정형화된 결과만을 출력한다면 매크로를 작성하는 것이 어려운 일은 아닙니다. 오히려 그보다는 사용자들마다 데이터의 형태가 다르고, 데이터를 선택하는 기준이 다르고, 계산 결과에 대한 출력물 형태를 다르게 기대한다는 것 때문에 일반적인 사용자들이 모두 사용하기에도 유용한 매크로를 작성하는 것이 어렵습니다.

제 블로그에서 매크로를 다 작성한 후 매크로 파일을 공유해드리는 것이, 일일이 프로시저를 올려 주석문을 다는 것보다 쉬울 수 있습니다. 그러나, 매크로 작성하는 요령을 간단하게 알려드리면, 본인들의 사용 목적에 맞게 적절하게 수정할 수 있고, 자신만의 엑셀 Addin도 작성할 수 있기 때문에 이렇게 게시물에 나눠 작성하고자 합니다.


다항식으로 fitting하는 기능은 엑셀에서 분산형 차트를 그린 후, 직선, 다항식, 지수, 이동평균 등의 추세선을 추가하는 기능으로 제공합니다. 만약 1개 데이터셋에 대한 작업이라면, 굳이 매크로를 사용할 필요가 없겠지요.

이번부터 작성하고자 하는 매크로는 다음과 같습니다.

1) 시트에 XYXY...로 구성된 데이터가 있고, 이 데이터들을 X와 Y열 데이터로 읽어옵니다.

2) 데이터로부터 y=a_n x^n+a_n-1 x^n-1 + ....+ a_1 x + a_0의 다항식으로 fitting을 합니다.

3) fitting된 함수의 각 계수와 전체 함수를 출력해줍니다. 필요하면, 엑셀이 아닌 다른 소프트웨어에서 산점도를 그리고, 여기에 fitting된 함수를 입력하여 regression 함수를 그릴 수 있도록 하기 위함입니다.


1차식 regression은 통계적 상관관계를 구할 때 많이 사용하기 때문에 의외로 많이 사용되고, 독립변수 X가 종속변수 Y에 미치는 영향도로서 '기울기'만 알고 싶은 경우도 많은데, 단순히 기울기만 찾아내기 위해 여러 데이터들에서 일일이 fitting한 후 기울기만 수동으로 기입하는 일도 종종 발생할 수 있습니다. 또한, 산업에서 인과관계를 확인하기 위한 통계 작업에서 2차식 이상의 비선형 회귀 분석은 거의하지 않기 때문에 2차식 이상의 회귀가 그다지 필요없는 경우도 있습니다. 

이러한 관점에서 본다면, 매크로를 만들 때 굳이 2차식 이상의 다항식으로 fitting하는 것이 필요할까 싶긴 합니다만, 기본적인 알고리즘이 거의 같기 때문에 그냥 다항식으로 일괄 fitting하는 매크로를 작성해볼까 합니다.

댓글 없음:

댓글 쓰기

의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~

많이 본 글 :