주메뉴바로가기.. 본문바로가기

Junior Polymath

주니어 폴리매스 문제 보기

문제

[코딩 수학] 코딩으로 '통계' 정복하기

2019.03.06

같이 풀어볼까?

네이버밴드 구글플러스

데이터를 다루는 ‘통계’


코딩 수학 3번째 시간입니다~. 다들 코딩을 이용해 수학 문제를 효율적으로 풀고 계신가요? 간단한 수학 문제는 손으로도 풀고 코딩으로도 풀 수 있지만, 실생활 문제나 어렵고 복잡한 함수가 포함된 수학 문제는 손으로 풀기 어려운 경우가 많아요. 코딩을 활용하면 쉽게 해결할 수 있으니 열심히 익히고 활용해 보자고요!

코딩 명령어를 익힌 뒤엔 해당 코딩 명령어로 풀 수 있는 수학 문제를 찾아 댓글로 달고 친구들과 토론해 보세요. 가장 좋은 문제를 올려준 친구를 MVP로 선정해 폴리매스 기사에 소개하도록 할게요.


이번에 코딩으로 정복해 볼 수학 개념은 바로 ‘통계’입니다. 통계는 트와이스의 일일 음원 판매량, 시간별 미세먼지 농도 같은 자료(data, 이하 데이터)를 수집하고 정리한 뒤 이를 수학적 원리를 바탕으로 분석하는 분야입니다. 쉽게 말하면 '데이터를 다루는 수학의 한 분야'라고 할 수 있어요.

고대부터 지금까지 통계는 국가를 운영하는데 있어 아주 중요한 역할을 했습니다. 로마 제국이 수백년 동안 지중해 일대 광활한 영토를 통치할 수 있었던 이유가 바로 인구와 토지 및 재산 등의 데이터를 꾸준히 수집하고 체계적으로 분석했기 때문이지요. 통계학을 뜻하는 영어 단어 Statistics에 '국가(State)'라는 단어가 있는 것도 결코 우연이 아니랍니다.smiley

정보화 사회로 접어들면서 현대 사회는 과거에 비해 처리해야 할 데이터의 양이 많아졌습니다. 소위 '빅데이터의 시대'라고 하죠. 이렇게 많은 데이터를 처리하려면 컴퓨터의 도움을 받아야 하는데, 빅데이터 연구 및 빅데이터를 다루는 인공지능 개발 분야에서는 수학과 통계, 코딩 능력이 필수입니다.

통계는 데이터를 다루는 목적에 따라 크게 두 종류로 구분합니다. 첫 번째는 '기술 통계(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)를 활용하여, 기온과 미세먼지의 양과의 관계를 찾아보고 설명해보자.


댓글 5

  • 김우현 기자 2019.03.06 10:36:40

    현재 '코딩창' 기능을 일부 개선 중이라 결과값이 출력이 안 되는 상태예요.

    공사가 끝날 때까지 잠시만 기다려주세요!indecision

    좋아요0 댓글수2
    • 디듀우 2019.03.06 22:47:48

      두 데이터로 산점도를 그릴 때는 앞에서부터 같은 차례에 있는 데이터끼리 순서쌍을 만드나요?

      좋아요0
    • 김우현 기자 2019.03.07 13:00:58

      네, 맞아요. 그래서 데이터를 입력할 때 순서를 잘 맞춰서 입력해야 해요!smiley

      좋아요0
  • 디듀우 2019.03.23 20:18:23

    상자 수염 그림에 대해 설명해주실 수 있나요? 검색해 봤는데 이해가 어렵네요.

    좋아요0 댓글수1
    • 김우현 기자 2019.03.28 10:07:53

      답변이 늦어서 미안해요, 디듀우 친구!

      상자 수염 그림(Box plot, Box-shisker's plot)은 어떤 데이터에 관해 아래 5가지 정보를 나타내는 그림이에요.

       ①최댓값: 데이터 중 가장 큰 값.

       ②3사분위수: 데이터의 75%가 '이 값' 이하.(=데이터의 25%가 '이 값' 초과)  

       ③2사분위수: 데이터의 50%가 '이 값' 이하.(=중간값)

       ④1사분위수: 데이터의 25%가 '이 값' 이하.

       ⑤최솟값: 데이터 중 가장 작은 값.

       

      예를 들어 본문에 있는 코딩창에 언어(Language)를 R로 설정 후 키 데이터(height)로 상자 그림을 그리면 아래와 같습니다.

      박스 안의 3가지 선분이 1~3사분위수를 나타내고 수염(점선)으로 연결된 선분이 최댓값과 최솟값을 나타내지요.laugh

      *명령어: boxplot(height)

       

       

      좋아요0