2. ● 스토리텔링 (storytelling)
o 데이터로부터 흥미있거나 유익한 결론을 이끌어내기.
o 결과물: 슬라이드.
● 예측모형개발 (predictive modeling)
o 데이터로부터 미래를 예측하기.
o 결과물: 알고리즘.
많은 경우는 이 둘의 혼합이다.
이번에는 R 자료분석을 통해 스토리텔링을 하는 예를 살펴보자.
분석의 목적: 스토리텔링과 예측모형
3. 이미 훌륭한 자료/책들이 수두룩!
● 구글 "how to do ... in r" 혹은 "r ..."
● R-project 홈페이지에 링크된 자료들.
o FAQ, R 관련 책소개 (현재 150권!), 공식 매뉴얼 (특히 Introduction to R), 비공식 매뉴얼/튜
토리얼 모음 등등.
o 주제별 R 패키지 모음.
● (한글) http://www.openstatistics.net/ 에 링크된 여러 자료.
● (한글) R을 이용한 데이터 분석실무 (2014) by 서민구
o 기초부터 중-고급까지 친절하게 쓰여진 글.
● Advanced R (2015) by Hadley Wickham: 특히 R 어휘력 (vocabulary) 복습
o 초고수의 내공을 느낄 수 있는 글.
단, R 언어 자체는 다루지 않는다
4. 1. 문제 정의: 어떤 문제를 해결할 것인가?
2. 데이터 정의: 어떤 자료를 이용할 것인가?
3. 데이터 준비: 텍스트 화일(csv 포맷)이나 데이터베이스 테이블
a. 다른 프로그램들 (Python, MySQL client, Unix tools, ...)이 수고한다.
4. R로 데이터 읽어들이기: read.csv() 함수, RMySQL 패키지, ...
5. R 데이터 청소와 가공
6. R 데이터 분석과 시각화: EDA (Exploratory Data Analysis)
7. R 통계 모델링
8. 5-7을 문제를 해결할 때까지 반복
9. 결론내기: 스토리 텔링 (슬라이드) 혹은 예측모형 (알고리즘)
데이터분석 워크플로우
R을 사용하는 단계
5. 지나치게 유명한* 피셔의 붓꽃 자료 (Fisher's iris dataset)를 분석해보자.
- 분석목적: 스토리텔링 / 예측모형개발
- R 사용모드: 대화형 분석 / 배치 (batch)
- 데이터 분석 워크플로우 시작단계:
1. 문제 정의: 붓꽃 자료의 변수 분포를 살펴보고 변량의 관계를 연구하고.... 사실 잘 모른다. 자료를
보기 전까지는. 유식한 표현으로 "Open-ended"라고 한다.
2. 데이터 정의: 이미 정의되어 있다.
3. 데이터 준비: 이미 준비되어 있다.
* 그렇다. 통계에 종사하는 많은 이들은 이 자료를 하도 많이 봐서 지겨울 수 있다.
이제 R 세션을 시작해 보자
6. 1. R 프로젝트 시작
1. 일단 ~/projects 디렉토리를 만들자.* (앞으
로 두고두고 쓸 디렉토리이다.)
2. RStudio를 실행.
3. RStudio에서 옆의 그림처럼 새로운 프로젝
트를 생성한다.
그러면 `~/projects/data-tao` 디렉토리가 만들
어지고 그 안에 data-tao.Rproj라는 화일이 생긴
다.
* 터미널에서 mkdir ~/projects 를 실행하거나 파인더 사용.
7. 2. R Script 화일 열기
메뉴에서 “File > New File > R Script” 를 실행하자. (물론
Cmd+Shift+N 숏컷 키가 더 간지난빠르다.)
Cmd+S 로 바로 저장하자. 이름은 session-01.R
앞으로 명령 실행은 다음처럼 하기로 하자*
1. 화일 에디터에 명령을 입력
2. Cmd+Enter (현재 라인 실행; 결과는 콘솔에)**
여러줄을 선택(Shift+커서키)한 후 실행도 가능하다.
* 콘솔에 바로 명령을 입력하여 실행하는 것은 아주, 아주, 간단한 작업 외에는
좋은 방식이 아니다. 기본적으로 R Script 화일에서 편집하여 콘솔로 보내는
버릇을 들이자.
** 이외의 다른 단축키는 이 페이지에...
8. 1. 화일 에디터에서
입력/편집후 실행
(Cmd+Enter) 하면
...
3. 차트는 여기로
가는... 그런 겁니
다.
2. 콘솔에서 실행
되는게 보이고...
10. 150 관측치 (observations)
5 변수 (variables)
● Sepal.Length : 꽃받침 길이 (연속변수)
● Sepal.Width : 꽃받침 넓이 (연속변수)
● Petal.Length : 꽃잎 길이 (연속변수)
● Petal.Width : 꽃잎 넓이 (연속변수)
● Species : 종 (범주변수 Factor)
필수함수: str(); head()
4. 자료구조 살펴보기
11. 5. 분포 살펴보기: 단변량
스토리: "꽃받침 길이는 4-8cm, 폭은 2-4cm 정도. 꽃잎 길
이는 1-7cm, 폭은 0-2.5cm. 꽃잎 길이와 폭 모두 bimodal
(two-peaks) 모양"
필수함수: summary(); plot(); hist();
R 퀴즈 (풀어보세요):
1. old_par=par(...)를 사용한 이유는?
2. with(...)가 하는 일은? 왜 attach(iris) 를 사용
하지 않았을까?
3. 히스토그램의 빈(bin) 갯수를 늘리는 방법은? y-축을
빈도(Frequency)가 아니라 확률로 그리기 위해서는?
각 차트 타이틀을 한글로 바꾸는 방법은? (힌트:
?hist)
12. 5. 분포 살펴보기: 단변량
summary() 를 통한 수치 통계량은 "스토리
텔링"을 위한 분석에는 큰 도움이 되지 않는
경우가 많다.
도리어 자료에 결측치(missing value; NAs)
가 있는지 손쉽게 확인하는데 더 도움이 된
다.
R 퀴즈:
1. 오른쪽 코드를 실행시켜보고 결과를
summary(iris)와 비교해보자. 무엇
이 달라졌는가?
2. 이 "시뮬레이션"에서 set.seed(1)를 실
행한 이유는?
13. 5. 분포 살펴보기-다변량
스토리: "모든 변량들간의 산점도(scatterplot matrix)에
서는 두 군집(cluster)이 두드러진다. 꽃잎 길이와 폭은
상관관계가 높다."
필수함수: pairs(); plot()
R 퀴즈:
1. 앞의 히스토그램과 이 산점도 매트릭스를 한장에
담아내는 방법은? (힌트: ?pairs 그리고
example(pairs) )
2. [고급] 왜 plot(iris) 와 pairs(iris)는 같은
결과를 낼까? (힌트: "R method dispatch"를 구글
검색해 보자. 그리고 ??plot.data.frame 그리
고 class(iris).)
14. 산점도 매트릭스에 품종을 색깔로 나타내주는 방법중 하
나이다.
R 퀴즈:
1. red, green3, blue 는 각각 어떤 품종일까? (힌트:
unclass(iris$Species) 혹은
levels(iris$Species) )
2. 품종 이름을 레전드(legend)로 그려주는 방법은? (
힌트: ?legend)
3. iris[,1:4] 와 iris[1:4] 사이의 차이가 있는가?
(힌트: ?"[" 혹은 ?"[.data.frame" )
5. 분포 살펴보기-다변량
15. 5. 분포 살펴보기-다변량
스토리: "setosa 품종은 꽃잎의 크기가 무척 작지만 꽃받침
의 폭은 가장 넓다. virginica는 꽃잎의 크기가 가장 큰편이
고 꽃받침은 좁고 길다. versicolor는 virginica와 유사하지
만 꽃잎이 조금 작다. "
R 퀴즈:
1. 마찬가지의 그림을 좀 더 쉽게 그릴 수있는 방법은?
(힌트: lattice 패키지의 splom 함수.
library(lattice) 그리고 example(splom))
16. 6. R 세션 끝내기
스크립트를 저장하고 RStudio를 종료하면 된다.
워크스페이스를 저장하겠냐는 질문에는 "Yes"라고 대답하면 현재 세션에서 생성
한 변수들이 디스크에 저장된다. (현 디렉토리에 .RData 화일이 생성된다)
이 분석을 나중에 계속하고 싶으면 data-tao.Rproj 화일을 바로 실행하면 된다. 아
니면 RStudio에서 "Open Project..."로 열어주던지.
R 퀴즈:
1. 이와 같은 패턴을 사용하면 setwd() 를 사용할 필요가 없게 된다.
2. Google's R Style Guide를 읽어보자.
17. 앞에서 보여준 차트들과 예시된 스토리들을 정리하면 이번 분석의 최종 결과물인
스토리텔링 슬라이드(보고서)가 완성된다.
숙제: 붓꽃자료를 R로 분석하여서 5-10 슬라이드 분량으로 스토리텔링 슬라이드
를 만들어 보세요.
차트, 슬라이드의 구성의 베스트 프랙티스 (best practice)에 대해서는 다음편에
서 다룰 예정이다.
7. 결론내기: 스토리텔링 슬라이드
18. 품종을 모르는 새로운 붓꽃을 발견했
다. 꽃잎과 꽃받침의 크기를 관측한 결
과 다음과 같았다. 이 붓꽃의 품종은
과연 무엇일까?
R퀴즈: 앞의 산점도 매트릭스에 이 관
측치를 표시할 수 있을까?
이것은 스토리탤링이 아니라 예측*의
문제이다. R에는 통계/머신러닝을 위
한 수많은 함수들이 있고, 조금만 구글
하면 다양한 모형들을 돌릴 수 있다.
하지만 제대로 돌리기 위해서는 ESL
(Elements of Statistical Learning)같
은 책을 읽는 것이 도움이 된다.
* 이 문제는 품종의 갯수가 세개이므로 "multi-class
classification"으로 "two-class classification"보다 약간 더
복잡하다.
부록: 모델링/예측모형개발