데이터를 다루는 ‘통계’
코딩 수학 3번째 시간입니다~. 다들 코딩을 이용해 수학 문제를 효율적으로 풀고 계신가요? 간단한 수학 문제는 손으로도 풀고 코딩으로도 풀 수 있지만, 실생활 문제나 어렵고 복잡한 함수가 포함된 수학 문제는 손으로 풀기 어려운 경우가 많아요. 코딩을 활용하면 쉽게 해결할 수 있으니 열심히 익히고 활용해 보자고요!
코딩 명령어를 익힌 뒤엔 해당 코딩 명령어로 풀 수 있는 수학 문제를 찾아 댓글로 달고 친구들과 토론해 보세요. 가장 좋은 문제를 올려준 친구를 MVP로 선정해 폴리매스 기사에 소개하도록 할게요.
이번에 코딩으로 정복해 볼 수학 개념은 바로 ‘통계’입니다. 통계는 트와이스의 일일 음원 판매량, 시간별 미세먼지 농도 같은 자료(data, 이하 데이터)를 수집하고 정리한 뒤 이를 수학적 원리를 바탕으로 분석하는 분야입니다. 쉽게 말하면 '데이터를 다루는 수학의 한 분야'라고 할 수 있어요.
고대부터 지금까지 통계는 국가를 운영하는데 있어 아주 중요한 역할을 했습니다. 로마 제국이 수백년 동안 지중해 일대 광활한 영토를 통치할 수 있었던 이유가 바로 인구와 토지 및 재산 등의 데이터를 꾸준히 수집하고 체계적으로 분석했기 때문이지요. 통계학을 뜻하는 영어 단어 Statistics에 '국가(State)'라는 단어가 있는 것도 결코 우연이 아니랍니다.
정보화 사회로 접어들면서 현대 사회는 과거에 비해 처리해야 할 데이터의 양이 많아졌습니다. 소위 '빅데이터의 시대'라고 하죠. 이렇게 많은 데이터를 처리하려면 컴퓨터의 도움을 받아야 하는데, 빅데이터 연구 및 빅데이터를 다루는 인공지능 개발 분야에서는 수학과 통계, 코딩 능력이 필수입니다.
통계는 데이터를 다루는 목적에 따라 크게 두 종류로 구분합니다. 첫 번째는 '기술 통계(descriptive statistics)'입니다. 기술 통계는 수집한 데이터를 정리해서 표를 만들거나 데이터의 특징을 잘 나타내는 평균과 분산, 표준편차 등의 수치를 서술하죠. 학교 통계 단원에서 배운 내용과 비슷하죠.
다른 하나는 수집한 데이터를 분석해 새로운 정보를 예측, 추정하는 ‘추론 통계(inferential statistics)'입니다. 예측이나 추론을 할 때는 항상 수학적 원리를 이용합니다. 예를 들어, 한국 사람 중 17살과 18살의 키는 몇 cm 차이나는지 알고 싶으면 수학자 가우스가 개발한 '최소제곱법'을 이용하죠.
자, 그럼 코딩을 이용해 기술 통계와 추론 통계를 맛 보도록 할까요?
※주의
-통계와 관련된 코딩 명령어는 언어를 Sage가 아닌 R로 바꿔야 작동됩니다. 코딩창 오른쪽 아래 있는 옵션 창을 눌러 언어를 R로 지정하고 실행하세요!
-R언어에 관한 기초 코딩 명령어가 궁금하면 http://matrix.skku.ac.kr/2015-R-Statistics/R-Sage-commands-examples.htm에 접속해 보세요!
<코 딩 으 로 풀 어 보 기>
기술 통계(평균, 분산, 표준편차), 추론 통계(산점도, 선형 모형)에 관련된 코딩 명령어는 아래와 같아요.
D1, D2, res는 명령어가 아니라 임의로 정한 명칭이므로 친구들의 마음대로 바꿔도 관계 없어요!
①아래 한 고등학교에서 임의로 선정한 남학생 30명의 나이와 키 데이터가 있어요. 코딩을 이용해 학생들 키의 평균, 분산, 표준편차, 상자그림으로 구하고, 나이와 키의 산점도를 구하도록 하죠.
나이 | 16 | 18 | 17 | 16 | 17 | 16 | 17 | 17 | 16 | 16 | 18 | 16 | 16 | 17 | 16 |
키 | 170 | 178 | 171 | 168 | 173 | 178 | 171 | 174 | 170 | 170 | 175 | 170 | 169 | 166 | 162 |
나이 | 16 | 16 | 18 | 18 | 17 | 18 | 17 | 17 | 18 | 16 | 18 | 18 | 18 | 17 | 17 |
키 | 170 | 171 | 175 | 175 | 171 | 171 | 170 | 172 | 179 | 164 | 181 | 178 | 180 | 177 | 174 |
②먼저 키 데이터를 height로 지정한 뒤 코딩 명령어를 이용해 평균과 분산, 표준편차를 구해볼게요.
③이번엔 나이 데이터를 age로 지정한 뒤, 코딩 명령어를 이용해 산점도를 그립니다. 산점도는 키와 나이를 하나의 좌표, 즉 (키, 나이)로 나타낸 뒤 좌표평면에 점으로 찍은 거예요!
④산점도에 선형 모델을 그려 나이가 1살 많아질 때 키는 얼마나 변하는지 추론 해보도록 하죠. 선형 모델이란, 산점도에 표시된 점들의 분포와 가장 비슷한 비례 관계(직선)를 찾는 거예요. 기울기가 3.768인걸 보면 나이가 1살 차이나면 키는 대략 3.768cm 차이가 난다는 걸 알 수 있어요!
⑤위 코딩 명령어를 한 번에 나타내면 이렇게 똭! 신기하죠? 이처럼 통계와 관련된 코딩 명령어를 이용해 다양한 데이터를 분석해보고 아래 예시 문제처럼 실생활 통계 문제를 찾아 댓글로 달아보세요!
예시 통계청 자료(http://kostat.go.kr/portal/korea/kor_nw/1/1/index.board)를 활용하여, 기온과 미세먼지의 양과의 관계를 찾아보고 설명해보자.
현재 '코딩창' 기능을 일부 개선 중이라 결과값이 출력이 안 되는 상태예요.
공사가 끝날 때까지 잠시만 기다려주세요!
답변이 늦어서 미안해요, 디듀우 친구!
상자 수염 그림(Box plot, Box-shisker's plot)은 어떤 데이터에 관해 아래 5가지 정보를 나타내는 그림이에요.
①최댓값: 데이터 중 가장 큰 값.
②3사분위수: 데이터의 75%가 '이 값' 이하.(=데이터의 25%가 '이 값' 초과)
③2사분위수: 데이터의 50%가 '이 값' 이하.(=중간값)
④1사분위수: 데이터의 25%가 '이 값' 이하.
⑤최솟값: 데이터 중 가장 작은 값.
예를 들어 본문에 있는 코딩창에 언어(Language)를 R로 설정 후 키 데이터(height)로 상자 그림을 그리면 아래와 같습니다.
박스 안의 3가지 선분이 1~3사분위수를 나타내고 수염(점선)으로 연결된 선분이 최댓값과 최솟값을 나타내지요.
*명령어: boxplot(height)