통계자료 분석을 위한 r

61
R 기초 한림대학교 금융정보통계학과

Upload: yoonwhan-lee

Post on 01-Jul-2015

5.969 views

Category:

Education


4 download

DESCRIPTION

TRANSCRIPT

Page 1: 통계자료 분석을 위한 R

R 기초

한림대학교 금융정보통계학과

이 윤 환

Page 2: 통계자료 분석을 위한 R

R 설치

• Windows 용 다운로드o http://www.r-project.org

o 좌측의 “CRAN” 클릭

이윤환, [email protected] 입문

Page 3: 통계자료 분석을 위한 R

R 설치

o 대한민국(Korea)의 http://statlab.snu.ac.kr/R/ 클릭

이윤환, [email protected] 입문

Page 4: 통계자료 분석을 위한 R

R 설치

o Download for Windows 클릭

• 다른 OS 사용자는 해당 OS 명 클릭

이윤환, [email protected] 입문

Page 5: 통계자료 분석을 위한 R

R 설치

o Base 클릭

이윤환, [email protected] 입문

Page 6: 통계자료 분석을 위한 R

R 설치

o Download R x.xx.x for Windows 클릭

o 이후 다운로드 받아 실행하면 바로 설치 된다.

이윤환, [email protected] 입문

Page 7: 통계자료 분석을 위한 R

R 실행하기

• 프로그램 그룹에서 R을 찾고 그 아래의 “R x.xx.x” 클릭

이윤환, [email protected] 입문

Page 8: 통계자료 분석을 위한 R

R 화면

이윤환, [email protected] 입문

Page 9: 통계자료 분석을 위한 R

계산기로써의 R

• 산술 연산o +(더하기), -(빼기), *(곱하기), /(나누기), ^ (승수)

이윤환, [email protected] 입문

Page 10: 통계자료 분석을 위한 R

계산기로써의 R

• 논리 연산 : 결과를 참(TRUE)과 거짓(FALSE)으로 갖는

연산연산자 설명

< Less than, binary

> Greater than, binary

== Equal to, binary

>= Greater than or equal to, binary

<= Less than or equal to, binary

& And, binary, vectorized

&& And, binary, not vectorized

| Or, binary, vectorized

|| Or, binary, not vectorized

이윤환, [email protected] 입문

Page 11: 통계자료 분석을 위한 R

변수와 상수

• 상수o 숫자 2의 의미가 변할 수 있을까?

o 1, 2, 3 … 등과 R의 문자열인 “a”, “abc”… 등은 그 의미가 숫자와 문자로 정해져

있다.

o 즉 표기 자체의 의미가 변하지 않는 것을 상수라고 하고 숫자와 큰 따옴표로 둘러

쌓여진 문자들은 상수로 사용된다.

• 변수o 큰 따옴표로 둘러싸여지지 않은 알파벳은 자료를 담는 그릇이라 생각하자.

o 이 그릇은 대입연산자(<-, 부등호와 Dash)을 통해 값을 넣는다.

o 변수에는 상수값을 넣을 수도 있고 또 다른 변수를 넣을 수도 있다.

이윤환, [email protected] 입문

Page 12: 통계자료 분석을 위한 R

변수와 상수

• 다음 상황에서 값은 뭐가 나올 것으로 생각하십니까?

이윤환, [email protected] 입문

Page 13: 통계자료 분석을 위한 R

Vector : 자주 사용되는 자료형

• x <- 5 의 예에서 x는 5라는 값 하나를 갖는 스칼라(Scalar) 자료

• 학생들의 키를 조사한다고 할 경우 학생 수 만큼 변수를 만들어서 값

을 입력하는 것은 어리석은 일

• 하나의 변수에 모든 학생들의 변수를 넣어 보관한다면 좀 더 쉽게 자

료를 관리할 수 있다.

• 함수 c(…)

o R Console 에서 help(c ) 라고 입력해 보자

이윤환, [email protected] 입문

Page 14: 통계자료 분석을 위한 R

Vector

• 다음 예를 살펴보자

이윤환, [email protected] 입문

Page 15: 통계자료 분석을 위한 R

Vector 연산

• Vector는 스칼라와 연산시 스칼라 값이 Vector 의 각 원소와 연산을

한다.

• Vector 끼리의 연산은

o 먼저 각 Vector의 원소의 개수가 같아야 한다.

이윤환, [email protected] 입문

Page 16: 통계자료 분석을 위한 R

Vector 연산

o Vector의 원소 개수가 서로 다를 경우에는 서로 배수의 관계에 있을 때 계산 가능

이윤환, [email protected] 입문

Page 17: 통계자료 분석을 위한 R

다른 방법으로 Vector 만들기

• 연산자 : “:”

이윤환, [email protected] 입문

Page 18: 통계자료 분석을 위한 R

다른 방법으로 Vector 만들기

• 함수 : seq(), rep()

이윤환, [email protected] 입문

seq(

from = 1,

to = 1,

by = n),

length.out = NULL,

...

)

Page 19: 통계자료 분석을 위한 R

다른 방법으로 Vector 만들기

• 함수 : seq(), rep()

이윤환, [email protected] 입문

rep(

x = vector,

(times | each) = n,

)

Page 20: 통계자료 분석을 위한 R

Vector 특정 원소 추출

• Vector명 뒤에 대괄호([]) 쌍으로 특정 원소를 추출한다.o 대괄호 값이 양수일 경우 : 해당 위치의 값을 가져온다.

o 대괄호 값이 음수일 경우 : 해당 위치의 값을 제외하고 가져온다.

o 대괄호에 논리연산이 들어갈 경우 : 해당 연산에 맞는 값을 가져온다.

이윤환, [email protected] 입문

Page 21: 통계자료 분석을 위한 R

Arrays and matrices

• Arrayo 배열에 대한 수학적 의미와 비슷하게 생각하자.

• n 차원을 갖고 있다

o 배열의 생성

• dim : 속성으로 차원 vector를 갖는다.

이윤환, [email protected] 입문

1500개의 원소를

갖는 vectorz는 3차원을 가지며

1차원 : 3, 2차원 : 5, 3차원 : 100개의 원소

3 * 5* 100 = 1,500

Page 22: 통계자료 분석을 위한 R

Arrays and matrices

o 배열의 생성

• array() 이용

이윤환, [email protected] 입문

array(

data : vector,

dim : dimension vector,

[dimnames = NULL]

: 차원의 이름 list

)

Page 23: 통계자료 분석을 위한 R

Arrays and matrices

• Matrix o 배열의 특별한 경우로 행과 열을 갖는 (즉, 2차원 배열) 배열을 Matrix 라 한다.

o Matrix 생성

• matrix() 함수 이용

이윤환, [email protected] 입문

matrix(

data : vector,

nrow = 1, ncol = 1,

: 행과 열의 수

byrow = FALSE,

: data를 행단위로

읽을지 여부

[dimnames = NULL]

: 차원의 이름 list

)

Page 24: 통계자료 분석을 위한 R

Arrays and matrices

• Matrix 생성

o cbind(), rbind() 이용

• cbind()는 주어진 Vector 혹은 Matrix를 열로 묶고 rbind()는 행으로 묶는

다.

이윤환, [email protected] 입문

Page 25: 통계자료 분석을 위한 R

Arrays and matrices

• Array indexingo 앞선 3차원 배열의 경우

o 배열명[1st dim, , ]

• Ex) > z[1, ,] ; 1차원의 인덱스가 1인 원소 출력

2차원이 5, 3차원이 100이므로 원소의 개수는 500

1차원의 인덱스를 1로 고정한 나머지는

2차원 배열처럼 출력

이윤환, [email protected] 입문

Page 26: 통계자료 분석을 위한 R

Arrays and matrices

o 배열명[1st dim, 2nd dim, ]

• Ex) > z[1, 1,] ; 1차원의 인덱스가 1, 2차원의 인덱스가 1인 원소 출

3차원의 원소의 개수는 100이므로 100개 출력

이윤환, [email protected] 입문

Page 27: 통계자료 분석을 위한 R

Arrays and matrices

o 배열명[1st dim, 2nd dim, 3rd dim]

• Ex) > z[1, 1, 1] ; 1차원의 인덱스가 1, 2차원의 인덱스가 1,

3차원의 인덱스가 1인 스칼라 출력

이윤환, [email protected] 입문

Page 28: 통계자료 분석을 위한 R

Arrays and matrices

o Index Matrices

• Array의 특정 원소의 위치를 값으로 갖는 배열

• 특히 2차원 배열 즉, matrix에 값을 줄 때 각 행 별로 첫 열에 행, 두번째 열에

열 index를 부여한다.

이윤환, [email protected] 입문

Page 29: 통계자료 분석을 위한 R

Data Frame

• Matrix의 경우 서로 다른 자료형을 넣을 수 없다.

• 실제 자료들은 속성(열) 별로 서로 다른 자료형이 한데 섞여 있는 경

우가 많으므로 이럴 경우 Data Frame을 사용하면 유용하다.

• data.frame 함수

o 서로 다른 자료형 벡터에 대해 cbind() 한 효과와 유사

이윤환, [email protected] 입문

Page 30: 통계자료 분석을 위한 R

Data Frame

• Indexingo Dataframe명$열이름

o Dataframe명[[열 번호]]

o Matrix와 같이 표현

이윤환, [email protected] 입문

Page 31: 통계자료 분석을 위한 R

Package 설치와 사용

• R Packageo R 기능을 확장하는 기능 모둠

o R을 사용하는 사용자들이 제작하고 등록한 함수, Data 등으로 구성

• Package 설치와 사용o R Console 창에 다음과 같이 입력하자 (alr3 라는 package 설치)

> install.packages("alr3")

o 옆에 보이는 화면과 같이 어디서 해당 Package를

다운로드 받을 것인지 사용자가 선택하도록 한다.

• Korea 를 선택하자

o 방금 설치한 alr3 를 사용하기 위해 다음과 같이 입력하자

> library(alr3)

o alr3가 갖고 있는 자료 fuel2001이 있는지 확인하자.

> fuel2001

Drivers FuelC Income Miles MPC Pop Tax

AL 3559897 2382507 23471 94440 12737.00 3451586 18.00

이윤환, [email protected] 입문

Page 32: 통계자료 분석을 위한 R

작업공간 설정 : setwd()

• 다음과 같이 C 드라이브에 “R_work”라는 디렉토리를 만들자.

• R Console에서 다음과 같이 입력해 보자.> setwd(“c:\\R_work”)

이윤환, [email protected] 입문

Page 33: 통계자료 분석을 위한 R

Excel 파일의 import

• 다음 주소를 브라우저 창에 입력하고 다운로드를 클릭하

여 파일을 앞선 만든 “c:\R_work”에 저장하자.o http://j.mp/KXsVuE

이윤환, [email protected] 입문

Page 34: 통계자료 분석을 위한 R

Excel 파일의 import

• 다운로드 받은 fuel2001.xlsx 파일을 Excel로 연다.o Excel 자체를 읽어들이는 xlsReadWrite 같은 Package도 있지만 Excel에서 자료

를 일반 Text로 변환하여 R에서 불러들인다.

• “파일” 메뉴의 “다른 이름으로 저장”을 클릭

이윤환, [email protected] 입문

Page 35: 통계자료 분석을 위한 R

• 파일 형식을 “CSV 쉼표로 분리(.csv)” 선택

이윤환, [email protected] 입문

Page 36: 통계자료 분석을 위한 R

• 파일 이름은 “fuel2001.csv”가 되도록 입력하고 저장o 이후에 나오는 메시지는 현재 쉬트만 저장 가능하다는 알림과 엑셀의 기능이 빠진

순수 텍스트로 저장된다는 경고 메시지로 모두 “예”를 클릭한다.

이윤환, [email protected] 입문

Page 37: 통계자료 분석을 위한 R

• 저장된 파일을 메모장 등으로 열어보자.

• 앞서 엑셀에 저장된 내용을 행구분은 줄바꿈으로 그리고

열 구분은 쉼표(Comma)로 한 파일을 csv 파일이라고 한

다.o 값들중에 쉼표를 포함하는 값은 큰 따옴표 등으로 묶는다.

이윤환, [email protected] 입문

Page 38: 통계자료 분석을 위한 R

• R에서 방금 생성한 fuel2001.csv 파일을 불러오기 위해

다음과 같이 입력하자> f2001 <- read.csv("fuel2001.csv", header=T)

o fuel2001.csv 를 csv 포맷에 맞춰 읽어온다.

o header = T : fuel2001.csv 파일은 첫 행에 제목 줄이 있다. 즉, 데이터로 인식하지

말고 열 이름으로 인식하라

o 읽어온 자료는 f2001 이라는 이름으로 저장하라.

• 제대로 읽어 왔는지 다음과 같이 확인해 보자.

이윤환, [email protected] 입문

Page 39: 통계자료 분석을 위한 R

R Graphics

Page 40: 통계자료 분석을 위한 R

Graphics Windows

• win.graph()o 그래픽 창의 활성화

o Ex

• win.graph()

• win.graph()

• win.graph()

• dev.list()o 활성화된 장치의 리스트를

열람한다.

• dev.set(which=n)o 지정한 n 장치를 활성화 한

다.

• dev.cur()o 현재 장치를 보여준다.

• dev.off()o 현재 장치를 비활성화(끈다)

한다.

• graphics.off()o 모든 그래픽 장치를 끈다.

• par() 함수o mfrow, mfcol

o bg : 바탕화면 색깔

o fig : 분할된 창의 크기

o new : 기본값 ‘F’, 새로 고수준 그래픽 함수 호출시 새로그릴 것인지 결정

Page 41: 통계자료 분석을 위한 R

• 저수준 그래픽 함수 vs 고수준그래픽 함수

o 그림이나 그래프는 점, 선, 면으로 분해할 수 있는데 R은 이런 기초적인 기능 외에 그래프의 여백, 좌표축등을 정의하는등 그래프를 그리는 기본적인함수는 저수준 그래픽 함수라부르고 여러가지 저수준 그래픽 함수를 모아 하나의 완성된그래프를 그리는 함수는 고수준 그래픽 함수라 부른다.

• plot 함수

o 가장 대표적인 함수로 데이터객체를 x-y 좌표에 그래프로 나타낸다.

• Ex> win.graph()

> x1 <- 1:5

> y1 <- x1^2

> z1 <- 5:1

> mat1 <- cbind(x1, y1, z1)

> par(mfrow=c(2, 3))

> plot(y1, main=“using index”)

> plot(x=x1, y=y1, main=“x1^2”)

> plot(mat1, main=“using matrix”)

> plot(x1, y1, type=“l”)

> plot(x1, y1, type=“h”)

> plot(x1, y1, type=“n”)

고수준 그래픽 함수

Page 42: 통계자료 분석을 위한 R

• type 인수o “p” : 점(points)

o “l” : 선(lines)

o “b” : 점과 선

o “c” : “b”에서 점이 빠진것

o “o” : 겹침 점과 선

o “h” : 수직선(high density)

o “s” : 수평선 우선의 계단모양

o “S” : 수직선 우선의 계단 모양

o “n” : 출력하지 않음

고수준 그래픽 함수

Page 43: 통계자료 분석을 위한 R

• 점을 만드는 함수 points

o pch : 점의 모양

• 1-25는 정해진 모양이며 그 이후는 ASCII 코드에 의한 점 모양

o Ex

> x <- rep(1:5, rep(5, 5))

> y <- rep(5:1, 5)

> plot(1:5, type=“n”, xlim=c(0, 7.5), ylim=c(0.5, 5.5))

> points(x, y, pch=1:25, cex=2.5)

> text(x-0.4, y, labes=as.character(1:25), cex=1.5)

• 선을 그리는 함수

o abline : 좌표에 직선을 그린다.

• 기울기 b와 절편 a를 지나는직선

• x축에 평행이고 y의 값이 h인직선

• y축에 평행이고 x의 값이 v인직선

• Ex

> cars[1:5, ]

> z <- lm(dist ~ speed, data=cars)

> z$coef

> plot(cars, main=“abline”)

> abline(h=20)

> abline(v=20)

> abline(a=40, b=4)

> abline(z, lty=2, lwd=2)

저수준 그래픽 함수

Page 44: 통계자료 분석을 위한 R

• lineso 좌표의 점들을 이어서 선을 그

리는 함수

o Ex

> plot(0:6, 0:6, type=“n”)

> lines(c(1, 3), c(6, 6), lty=1)

> lines(c(1, 3), c(5, 5), lty=2)

> lines(c(1, 3), c(4, 4), lty=3)

> lines(c(1, 3), c(3, 3), lty=4)

> lines(c(1, 3), c(2, 2), lty=5)

> lines(c(1, 3), c(1, 1), lty=6)

• arrows o 화살표를 그린다.

o Ex

> plot(1:9, type=“n”, axes=F)

> arrows(1, 9, 4, 9, angle=30, length=0.25, code=2)

> arrows(1, 8, 4, 8, length=0.5, code=0)

> arrows(1, 7, 4, 7, angle=90, length=0.1, code=1)

> arrows(1, 6, 4, 6, angle=120, code=3)

저수준 그래픽 함수

Page 45: 통계자료 분석을 위한 R

• segmentso 좌표 점들을 분할해서 출력할

수 있으며 단일 선분이 아니라

벡터로 구성된 여러 점들을 한

화면에 출력한다.

o Ex

> x <- runif(12); y <- rnorm(12)

> i <- order(x); x <- x[i]; y <- y[i]

> par(mfrow=c(2,1))

> plot(x, y)

> s <- seq(length(x)-1)

> segments(x[s], y[s], x[s+2], >

y[s+2], lty=1:2)

> plot(x, y)

> s <- seq(length(x)-2)

>

segments(x[s], y[s], x[s+3], y[s+3], lt

y=1:3)

> box(which=“outer”)

저수준 그래픽 함수

Page 46: 통계자료 분석을 위한 R

• barploto 막대그래프를 생성한다.

o height• 막대그래프로 그릴 대상 자료

객체를 지정하며 인수값으로벡터나 행렬이 올 수 있다.

• beside가 FALSE이면 열의 수는 막대의 크기, 행의 수는 각막대에서의 마디의 크기

• beside가 FALSE이면 그룹지어 병열로 배열된 형태

o beside• 벡터형 출력 여부

• 4 by 5 행렬의 경우o TRUE : 20개의 기둥

o FALSE : 4개의 마디를 갖는5개의 기둥

o width • 막대의 두께 지정

o space• 막대간의 간격

o horiz• TRUE이면 수평으로 FALSE

이면 수직으로

o density• 막대기둥 내부를 채우는 사선

의 밀도

o angle• density를 사용할 때 사선의 각

o col• 막대나 막대 성분을 위한 색

지정

o border• 테두리 색

고수준 그래픽 함수 II

Page 47: 통계자료 분석을 위한 R

• Ex> bar.x <- round(runif(12)*50)

> bar.y <- matrix(bar.x, ncol=3, byrow=T)

> par(mfrow=c(2,2))

> barplot(bar.x, horiz=T, density=5)

> barplot(bar.x, density=15, angle=135)

> barplot(bar.x, col=rainbow(length(bar.x)))

> barplot(bar.x, border=“red”, col=c(“lightblue”, “mistyrose”, “lightcyan”, “lavender”))

고수준 그래픽 함수 II

Page 48: 통계자료 분석을 위한 R

단순선형회귀분석

Page 49: 통계자료 분석을 위한 R

• 다음은 책의 페이지 수와 가격의 자료이다.

Pages Prices

637 27

336 15

336 14

430 15

164 9.5

533 20

529 22

509 20

419 16

596 24

Pages Prices

496 20

673 25

562 24

229 10

316 13

217 8

296 12

115 7

257 11

649 22

Page 50: 통계자료 분석을 위한 R

자료 가져오기

> bnp <- read.csv("bookNprice.csv", header=T)> bnp

Pages Prices1 637 27.02 336 15.03 336 14.0…18 115 7.019 257 11.020 649 22.0> attach(bnp)

Page 51: 통계자료 분석을 위한 R

Plot

> plot(Pages, Prices)

Page 52: 통계자료 분석을 위한 R

회귀계수의 추정 - 최소제곱법

> lms <- lm(Prices ~ Pages)> lms

Call:lm(formula = Prices ~ Pages)

Coefficients:(Intercept) Pages

2.19108 0.03503

절편

ß0

기울기

ß1

Page 53: 통계자료 분석을 위한 R

회귀계수로부터의 회귀직선

> plot(Pages, Prices)> abline(lms$coef)

Page 54: 통계자료 분석을 위한 R

회귀의 적합도

Page 55: 통계자료 분석을 위한 R

회귀의 분산분석

> summary(aov(lms))

Df Sum Sq Mean Sq F value Pr(>F)

Pages 1 681.78 681.78 332.09 4.769e-13 ***

Residuals 18 36.95 2.05

---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘

오차

회귀(모형)

Page 56: 통계자료 분석을 위한 R

회귀분석에서의 추론

Page 57: 통계자료 분석을 위한 R

> summary(lms)

Call:

lm(formula = Prices ~ Pages)

Residuals:

Min 1Q Median 3Q Max

-2.9228 -0.7875 -0.1059 0.9603 2.4975

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 2.191079 0.859491 2.549 0.0201 *

Pages 0.035026 0.001922 18.223 4.77e-13 ***

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’

0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.433 on 18 degrees of freedom

Multiple R-squared: 0.9486, Adjusted R-squared: 0.9457

F-statistic: 332.1 on 1 and 18 DF, p-value: 4.769e-13

절편

ß0

기울기

ß1

Page 58: 통계자료 분석을 위한 R

잔차 분석

Page 59: 통계자료 분석을 위한 R

• 적합값 : fitted

• 잔차 : resid

> fitted(lms)1 2 3 4 5 6 7

24.502460 13.959720 13.959720 17.252137 7.935296 20.859786 20.719683 8 9 10 11 12 13 14

20.019169 16.866854 23.066406 19.563834 25.763386 21.875532 10.211968 15 16 17 18 19 20

13.259205 9.791659 12.558691 6.219036 11.192688 24.922769

> resid(lms)1 2 3 4 5 6

2.49753964 1.04028032 0.04028032 -2.25213703 1.56470357 -0.85978584 7 8 9 10 11 12

1.28031703 -0.01916864 -0.86685415 0.93359402 0.43616567 -0.76338616 13 14 15 16 17 18

2.12446838 -0.21196800 -0.25920535 -1.79165941 -0.55869101 0.78096368 19 20

-0.19268807 -2.92276896

Page 60: 통계자료 분석을 위한 R

> plot(fitted(lms), resid(lms))

0 주변으로 몰려있

어야 한다.

Page 61: 통계자료 분석을 위한 R

> qqnorm(resid(lms), ylim=c(-3, 3), xlim=c(-3, 3))

대각선 주변으로 몰

려있어야 한다.