Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
분석언어 R 기초
2014.2.3
윤형기
(v.0.9)
목차
I. R 설치와 사용자 환경
II. R에서의 데이터 관리
III. 그래프 기초
IV. 통계 기초
V. 맺음말
I. R의 설치와 사용자 환경
R 설치와 사용자 환경
R의 설치와 작업공간 (Workspace)
입출력
할당 (Assignment)
Batch 처리
결과의 재사용
R의 설치
R 사이트에 접속 후 모듈 다운로드 CRAN (Comprehensive R Archive Network)
http://www.cran.r-project.org/index.html
http://www.cran.r-project.org/
I-2
http://www.cran.r-project.org/index.htmlhttp://www.cran.r-project.org/index.htmlhttp://www.cran.r-project.org/index.htmlhttp://www.cran.r-project.org/http://www.cran.r-project.org/http://www.cran.r-project.org/
더블클릭하여 설치 시작
I-3
R 실행
I-4
작업공간 (Workspace)
사용자 인터페이스 명령어 방식: 대화식: > 프롬프트에서 명령어 입력
그래픽 환경: 메뉴 이용 또는 GUI 기반의 R을 별도로 설치 사용
R의 작업공간 둘러보기
GUI R RStudio
R Commander
…
I-5
편리한 기능 – 계속 – 주석 (comment)
• ‘#’를 이용
도움말 기능: help.start() # 도움말 화면 help(seq) # seq 함수에 대한 도움말 ?seq # seq 함수에 대한 도움말 RSiteSearch("lm") # help 매뉴얼 및 mailing lists 검색
History기능 history() # 디폴트는 최근 사용된 25개 명령어 목록
savehistory(file="myfile") # 작업내역을 저장 (".Rhistory“가 디폴트)
loadhistory(file="myfile") # 앞서의 작업내역을 이용
I-8
맛보기: 계산기 기능 rnorm(10)
mean(abs(rnorm(100)); hist(rnorm(10))
R 을 설치하면 많은 예제 데이터가 제공됨. 사용 가능한 dataset을 보려면:
data( ) # Load된 package에 따라 결과는 다르다.
개별 dataset의 세부 내용을 보려면: help(datasetname)
Session별 환경 option options() # 현재 설정된 option 상황
작업 디렉토리 getwd() # 현재 디렉토리
dir.create("d:/Rtraining"); setwd("d:/Rtraining") # \ 대신 /를 이용
getwd() I-9
입출력
입력 source( ) 함수이용
• 현행 session의 script 수행 (디폴트는 현재 디렉토리) source("myfile.R") # script파일의 적용 (.R 또는 .r)
출력 출력결과를 화면에 출력
lm(mpg~wt, data=mtcars)
• 결과는 화면 출력되지만 저장되지 않는다.
출력결과를 별도의 object에 저장
fit
sink( ) 함수 - 출력 방향을 특정파일로 지정 (redirect)
sink("myfile", append=FALSE, split=FALSE) # 출력을 파일로 지정
sink() # 출력을 터미널 화면으로 복구
• append option - 덮어 쓸지 또는 추가할지 지정 (디폴트는 overwrite)
• split option – 출력 파일과 함께 화면출력도 할지를 지정. # 예: 출력을 특정 파일로 지정 (해당 이름의 파일을 엎어 쓴다)
sink("c:/projects/output.txt")
# 예: 출력을 특정 파일로 지정 (기존 파일에 내용 추가, 화면에도 동시에 출력)
sink("myfile.txt", append=TRUE, split=TRUE)
단, 그래픽 출력 방향을 바꿀 때는 pdf(“mygraph.pdf”)
I-12
패키지 (Package)
Package = R 함수, 데이터 및 컴파일된 코드의 모음.
Packages 추가 ① 다운로드 설치 (한번만 하면 됨). install.packages(package명)
② CRAN Mirror사이트 선택. (e.g. Korea)
③ 현재의 session에 load (session당 한번만 실시) library(package명)
Library Package가 저장된 디렉토리로서 load 시켜야 사용이 가능
library() # library 내에 존재하는 packages 목록
search() # 현재 load되어 있는 packages 목록
Package에 대한 도움말 help(package=“패키지명”)
I-13
작업 시작환경의 Customization
R은 항상 Rprofile.site 파일을 먼저 수행. MS Windows: C:\Program Files\R\R-n.n.n\etc directory.
Rprofile 파일은 홈 디렉토리 또는 별도 디렉토리에 저장 가능.
Rprofile.site 파일 찾는 순서 • 현행 디렉토리 > 사용자의 홈 디렉토리
Rprofile.site 파일에는 2개의 함수를 지정 가능 .First( ) – R session 시작될 때 수행
.Last( ) – R session이 종료할 때 수행
I-14
Batch 처리
일괄처리 방식 (non-interactively) 처리 MS Windows의 경우 (경로명은 조절)
“C:/Program Files/R/R-3.0.2/R.exe” CMD BATCH “C:/Rtraining/a.R”
Linux의 경우 R CMD BATCH [options] my_script.R [outfile]
오류메시지 > sqrt(-2)
[1] NaN
경고메시지:
In sqrt(-2) : NaN이 생성되었습니다
끝내기 > q()
I-15
II. R에서의 데이터 관리
R에서의 데이터 관리
데이터 입출력
데이터 타입
결측치와 날짜 데이터
연산자 (Operators)
내장 함수
제어문
사용자 작성 함수
데이터의 정렬과 병합 (Merge)
apply() 함수
데이터 입출력
할당 (Assignment) 변수에 값을 배정하는 것
R에서는 =, x+y
> print(x+y)
> x=pi
> x
> rm(x)
II-1
키보드 입력 직접 입력
# 처음부터 새로 데이터 프레임 생성
age
Import from: csv 텍스트 파일 mydata
R에서의 데이터 종류
용어의 문제
Variable의 종류 연속 수치형 – Continuous (nominal, ratio)
기수형 – Ordinal
명목형 – Nominal (categorical)
기타 • 식별자 (identifier), 날짜형 (date)
행 열
데이터베이스 Records Fields
통계 Observations Variables
기계학습(Mining) Examples attributes
Factor형
II-4
데이터 종류(Mode) 숫자형 (numeric) - 숫자 (문자가 있으면 전체가 문자형으로 바뀜)
문자형 (character) - “ “ 또는 ‘ ‘로 표시
논리형 (logical) - TRUE, FALSE (FALSE는 0, 0 이외는 TRUE)
복소수 (허수: imaginary number)
Raw (byte)
R에서의 데이터 타입 (data type, data structure) Vector, matrix
Array, Data frame
List, Class
II-5
데이터셋 (dataset) 여러 관측값을 가지는 것
위 데이터를 data vector로 저장할 때 c()를 이용
> Rev_2012 = c(110,105,120,140) # 예: 분기별 매출
> Rev_2013 = c(105,115,140,135)
> Revenue = cbind(Rev_2012, Rev_2013) # column별로 결합
> Revenue
Rev_2012 Rev_2013
[1,] 110 105
[2,] 105 115
[3,] 120 140
[4,] 140 135
>
II-6
R의 데이터 타입 vectors (numerical, character, logical)
• 1차원 배열로 데이터를 묶어 놓은 것
• R에는 scalar가 존재하지 않음. (= 한 개 항목을 가지는 vector)
• 문자열 (character string)도 문자 mode의 single-element vector
Matrices • 2차원 배열로 데이터를 모아 놓은 것
Arrays • 3차원 이상의 형태로 데이터를 모아 놓은 것
data frames • Column마다 data mode가 다른 형태의 데이터 (일종의 테이블 형)
Lists • 서로 다른 데이터를 인위적으로 묶어 놓은 것
II-7
데이터 형태의 변환 데이터 형태 확인
is.numeric() is.character()
is.vector() is.matrix()
is.data.frame()
데이터 변환 함수
~ 로 변환 변환함수 규칙
숫자형 (numeric) 데이터
as.numeric() FALSE 0 “1”,”2” 1,2
논리형 (logical) 데이터 as.logical() 0 FALSE
문자형 데이터 as.character() 1,2 - “1”,”2” FALSE “FALSE”
Factor as.factor() 범주형 (factor) 형태로 변경
Vector as.vector() 벡터 형태로 변화
Matrix as.matrix() Matrix 형태로 변환
데이터프레임 as.dataframe() 데이터프레임 형태로 변환 II-8
데이터타입 - Vector
같은 mode의 데이터를 가지는 여러 항목으로 이루어진 것 a x = c(1,3,5,7)
> x
[1] 1 3 5 7
문자 벡터 > family = c("아버지", "어머니","딸","아들")
> family
[1] "아버지" "어머니" "딸" "아들"
논리벡터 > c(T,T,F,T)
[1] TRUE TRUE FALSE TRUE
II-9
Vector indexing Vector의 개별 항목 (elements)은 첨자 (subscripts, [ ] )로 지정
a[c(2,4)] # 2번째와 4번째 항목
> new_a new_a
[1] 1.0 5.3 6.0 -2.0 4.0
다양한 vector 생성 방법들 : 연산자
seq() – sequence 생성
rep() - vector항목의 반복
Vector 연산 (Vectorized Operations) = vector 내의 각각의 element에 함수를 적용하는 것 효율개선
• 결과값에 따라: Vector In, Vector Out or Vector In, Matrix Out
II-10
Recycling 예: 2개 vector 계산 시 개수를 맞춤 c(1,2) + c(5,6,7)
Filtering 조건 충족되는 항목만 추출 > z w 0]
> w
[1] 5 3
subset()
NA와 Null NA ; 결측치 (missing value)
Null : undefined value (적절한 값이 존재하지 않음.)
II-11
행렬의 계산: Vector연산 R의 데이터타입으로서의 matrix와 구별할 것
각 행렬은 vector로 지정하고 연산이 가능 • 행렬의 곱셈은 %*%
• 행렬의 덧셈은 +
• 행렬을 합칠 때는 cbind() 또는 rbind()
• 역행렬을 구할 때는 library(MASS)를 부른 후 ginv()
• t() 전치행렬 (transpose)
예: 2개의 vector: x와 y가 다음과 같은 경우의 벡터연산
II-12
데이터 타입 – Matrices
= row와 column을 가지는 vector 각 column은 같은 mode(숫자 또는 문자 등)의 데이터
각 column내 수록된 항목의 개수는 일정
생성 시 미리 크기를 지정할 것 (nrow=, ncol = )
일반형 mymatrix
또 다른 예 cells
Matrix의 row와 column에 함수를 적용하기 apply() 함수
• apply(m, dimcode, f, fargs) • m = matrix,
• dimcode = 1: row에 적용, 2: column에 적용,
• f=적용할 함수, fargs = optional arg’ts
> m # row별 평균
> apply(m, 1, mean)
[1] 3.5 4.5 5.5 6.5 7.5
> # column별 평균
> apply(m, 2, mean)
[1] 3 8
> # 각 항목을 2로 나눔
> apply(m, 1:2, function(x) x/2)
II-15
Matrix의 변경 > x x x
rbind(), cbind()를 이용한 변경 > B = matrix(c(2, 4, 3, 1, 5, 7), nrow=3, ncol=2)
> C = matrix(c(7, 4, 2), nrow=3, ncol=1)
> cbind(B, C)
II-16
Matrix와 vector의 관계 Matrix는 vector + Matrix의 고유한 성질 > z z
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
> length(z)
[1] 8
> class(z)
[1] "matrix"
> attributes(z)
$dim
[1] 4 2
II-17
데이터 타입 – Array
Matrices와 동일하나 2차원 이상의 항목을 가진다. 예: 4 x 3 x 2의 3차원 배열에 1~24의 값을 입력 > x x[1,,]
[,1] [,2] [,3]
[1,] 1 13 25
[2,] 5 17 29
[3,] 9 21 33
> x[,,1]
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
II-18
데이터 타입 – List
관련 없는 각종 객체목록 (ordered collection of objects). 관련 없는 (unrelated) 데이터를 함께 모으고자 할 때 사용
주로 함수나 각종 작업의 결과로서 반환되는 데이터의 형태 n = c(2, 3, 5)
s = c("aa", "bb", "cc", "dd", "ee")
b = c(TRUE, FALSE, TRUE, FALSE, FALSE)
x = list(n, s, b, 3) # x contains copies of n, s, b
x[2]
…
x[c(2, 4)]
…
항목의 식별은 [[]] 를 이용. x[[3]]
II-19
List 항목의 추가,삭제 > z z
…
> z$c z
…
> # 또는 다음과 같이 할 수도 있다.
> z[[4]] lapply(list(2:5,35:39), median) # list에 적용하는 함수
> sapply(list(2:5, 35:39), median) # 결과가 vector or matrix인 경우
II-20
데이터 타입 – Data Frame
= list의 special case
Column마다 다른 모드(숫자, 문자, factor 등)의 항목을 가짐. d
기술적으로는 데이터프레임은 list의 일종. 단지 그 항목이 같은 길이의 vector일 뿐
따라서 vector에 적용된 내용이 상당부분 그대로 적용된다.
데이터프레임의 merge 2개의 데이터프레임을 merge() # merge two data frames by ID
total
데이터 타입 – Factor
변수가 명목변수(nominal 또는 categorical)일 때 사용 각 항목은 [ 1... k ] 범위의 숫자 vector로 인식
factor() 및 ordered() 함수의 option을 통해 문자와 순서 사이의 대응관계를 조절할 수 있다.
x
Factor에 유용한 함수 tapply()
• Vector를 그룹별로 나눈 후 지정한 함수를 적용 > ages party tapply(ages, party, mean)
기타 민주 새누리
57 30 34
split() • split(x,f) x를 그룹별로 나눔 (분리시킴)
> g split(1:7, g)
…
II-24
분할표 (contingency table)
2-way 테이블을 통해 범주형 (categorical) 데이터를 분석 contingency table 예: > trial colnames(trial) rownames(trial) trial.table trial.table
sick healthy
risk 34 9
no_risk 11 32
II-25
기타 – Dataset에 대한 정보 획득
ls() # objects 목록 출력
names(mydata) # mydata에 있는 변수 목록
str(mydata) # mydata의 구조 출력
levels(mydata$v1) # mydata의 v1 factor의 level
dim(object) # object의 차원 (dimensions)
class(object) # object (numeric, matrix, data frame, etc)의 class
mydata # mydata 출력
head(mydata, n=10) # mydata의 맨 앞 10개 row 출력
tail(mydata, n=5) # mydata의 맨 뒤 5개 row 출력 II-26
연산자 (Operators)
Binary 연산자는 vector, matrix 및 scalar 모두에 적용됨.
Arithmetic Operators
Operator Description
+ 더하기
- 빼기
* 곱하기
/ 나누기
^ or **
지수 (제곱)
x %% y 나머지 (x mod y) 5%%2 is 1
x %/% y
integer division 5%/%2 is 2
II-33
논리 연산자 Operator Description
< less than
greater than
>= greater than or equal to
== exactly equal to
!= not equal to
!x Not x
x | y x OR y
x & y x AND y
isTRUE(x) test if X is TRUE
II-34
문자함수
문자 함수
Function Description
substr(x, start=n1,
stop=n2)
문자vector에서 substring을 추출 또는 변경
grep(pattern, x ,
ignore.case=FALSE,
fixed=FALSE)
Search for pattern in x. fixed =FALSE pattern은 정규표현 식. fixed=TRUE pattern 은 텍스트 문자열이며 해당 index를 산출 grep("A", c("b","A","c"), fixed=TRUE) 2
sub(pattern,
replacement, x,
ignore.case =FALSE,
fixed=FALSE)
x에서 pattern을 찾아서 변경시킴. fixed=FALSE pattern 은 정규표현 식. fixed = T pattern은 텍스트 문자열. sub("\\s",".","Hello There") "Hello.There"
strsplit(x, split) 문자열의 지정 element를 분리 (Split).
strsplit("abc", "") 3 개의 vector로 분리. 즉, "a","b","c"
paste(..., sep="") sep으로 구분시키면서 문자열 연결 (Concatenate)
toupper(x)
tolower(x)
대문자로 변환 소문자로 변환
II-35
기타의 유용한 함수
기타 함수
Function Description
seq(from , to, by) 수열 (sequence) 생성 indices
제어문
다음 표시 중 expr에 { }를 이용하여 복합문을 이용할 수 있다.
if-else if (cond) expr
if (cond) expr1 else expr2
for for (var in seq) expr
while while (cond) expr
switch switch(expr, ...)
ifelse ifelse(test,yes,no)
II-37
데이터의 정렬
order( )
디폴트는 ASCENDING.
sorting 변수 앞에 – (minus) 표시를 하면 DESCENDING order. # 예: mtcars 데이터 셋을 정렬
attach(mtcars)
# sort by mpg
newdata
III. R의 그래프 기초
R의 그래프 기초
R 그래프 개요
plot() 함수
그래프 생성
밀도 Plots
점 (Dot) Plots
막대 (Bar) Plots
선 도표 (Line Charts)
파이 차트 (Pie Charts)
상자 그림 (Boxplots)
Scatter Plots
R 그래프 개요
R에서의 다양한 그래프 기능의 예 demo(graphics); > demo(persp)
plot(c(1,2,3),c(1,2,4))
Nile
mean(Nile)
sd(Nile)
hist(Nile)
III-1
plot() 함수
plot( ) 함수 지정하는 object들을 도표상에 표시(plot)하는 함수
Generic 함수 – density, data frame, … 에 따라 지정된 기능
형태: plot(x,y, arguments)
대화식으로 그래프 생성 attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
plot()함수의 옵션: 뒷면
III-5
파라미터 Option 및 설명
type = 그래프의 형태를 지정 type=“p” 점(point) 그래프 type=“l” 선(line) 그래프 type=“b” 점과 선으로 이어서 그림 type=“o” 선이 점 위에 겹쳐진 형태 type=“h” 수직선으로 그림 type=“s” 계단(step)형 그래프
xlim =
ylim = x축과 y축의 상한과 하한. xlim = c(1,10) 또는 xlim = range(x)
xlab =
ylba = x축과 y축의 이름(label) 부여
main = 그래프의 위쪽에 놓이는 주 제목(main title).
sub = 그래프의 아래쪽에 놓이는 소 제목(subtitle).
bg= 그래프의 배경화면 색깔
bty= 그래프를 그리는 상자의 모양 III-6
pch
lty
파라미터 Option 및 설명
pch = 표시되는 점의 모양
lty = 선의 종류 1: 실선(solid line) 2: 파선 (dashed) 3: 점선: 점선(dotted) 4: dot-dash
col= 색깔 지정: “red”,”green”,”blue” 및 색상을 나타내는 숫자
mar = c(bottom, left, top, right) 의 순서로 가장자리 여분 값을 지정. 디폴트는 c(5,4,4,2) + 0.1
asp = 종횡의 비율 Apsect ratio (= y/x )
III-7
예: par(mfrow = c(2,2)) # mfrow 는 multiple plot plot(x,y, type="b", main = "cosie 그래프", sub = "type = b") plot(x,y, type="o", las = 1, bty = "u", sub = "type = o")
plot(x,y, type="h", bty = "7", sub = "type = h")
plot(x,y, type="s", bty = "n", sub = "type = s")
III-8
abline() 직선
abline(a,b) # 절편=a, 기울기=b인 직선
abline(h=y) # 수평선
abline(v=x) # 수직선 abline(lm.obj) # lm.obj에 지정된 직선
예: data(cars)
attach(cars)
par(mfrow=c(2,2))
plot(speed, dist, pch=1); abline(v=15.4)
plot(speed, dist, pch=2); abline(h=43)
plot(speed, dist, pch=3); abline(-14,3)
plot(speed, dist, pch=8); abline(v=15.4); abline(h=43)
III-9
점 plotting
점 Plotting (Dot Plot) dotchart(x, labels=)
x는 숫자 vector, labels은 각 점의 레이블.
groups= option x를 그룹화할 factor 지정.
dotchart(mtcars$mpg, labels = row.names(mtcars), cex=.7,
main="모델별 휘발유 마일리지", xlab = "Gallon당 mile 수")
III-10
# Dotplot: 그룹별, 정렬 (기준: mpg, group), 색깔 (by cylinder)
x
막대 (Bar) Plots
barplot(height) height는 vector 또는 matrix.
• If (height 가 vector) • 값에 따라 높이가 달라짐.
• If (height 가 matrix AND option beside=FALSE) • 각 bar는 height column에 대응되고 값은 stacked “sub-bars”의 높이)
• If (height 가 matrix AND beside=TRUE) • Column별 값이 나란히 비교됨
• option names.arg=(문자형 벡터) 막대에 대한 label
• option horiz=TRUE 수평 barplot 생성
단, Bar plot은 빈도수 외에 여타의 통계량도 bar plotting가능. (mean, median, sd 등)
• aggregate( ) 함수의 결과를 barplot( ) 에 전달하는 방식
III-12
# Simple Bar Plot
counts
Stacked Bar Plot counts
Grouped Bar Plot counts
선 도표 (Line Charts)
선 도표 (Line Charts) lines(x, y, type=)
• x와 y는 연결하고자 하는 점좌표의 숫자 vector
• type= 다음의 값을 가짐
Type Description
p 점
l 선
o overplotted points와 lines
b, c 선으로 연결(join)된 points ("c“의 경우 비었음)
s, S stair steps
h histogram-like vertical lines
n 아무 것도 출력치 않음
III-16
lines( ) 함수 • 자체만으로는 그래프 생성 못하고 plot(x, y) 명령 후 사용됨.
• 디폴트: plot( ) plots the (x,y) points.
• plot( ) 의 type="n" option – 그래프에 점을 plotting 하지 않으면서 axes, titles 등을 만들어냄.
• 예: x
III-18
plot( ) 에서의 type= options 의 예 x
파이 차트
pie(x, labels=) x 는 non-negative numeric vector (각 slice의 면적표시)
labels= • 각 slice 이름의 문자 vector
# Simple Pie Chart
slices
Pie 차트에서 백분율 표시 # Pie Chart with Percentages
slices
Box Plot
상자 plot Box-and-whisker plot – 최대값, 중앙값, 최소값 ,Q1,Q3
각 변수별 또는 그룹별로 Boxplot 가능.
boxplot(x, data= ) • x 는 formula, data= 에서 데이터프레임 지정
• formula (예 : y~group ), horizontal=TRUE 축 방향이 반대
III-23
# Cylinder 별 MPG에 대한 상자그림
attach(mtcars)
boxplot(mpg~cyl,data=mtcars, main="자동차 Milage 데이터",
xlab="Cylinder 수", ylab="Miles Per Gallon")
detach(mtcars)
III-24
산점도 (散點圖, Scatterplots)
두 변수 값을 좌표평면에 표시해서 변수간의 관련성을 보여 줌.
Scatterplot의 단순한 방식 plot(x, y) (x, y는 numeric vector로서 plot할 점 (x,y)을 표시)
plot(wt, mpg, main="Scatterplot의 예",
xlab="자동차 무게", ylab="Miles Per Gallon ", pch=19)
III-25
IV. R과 기초통계
R과 기초통계
기본함수 (수학, 확률, 통계함수)
기술통계 (記述統計)
빈도수와 Crosstabs
상관관계
수학함수
수학 함수 Function Description
abs(x) 절대값
sqrt(x) 제급근
ceiling(x) ceiling(3.475) 는 4
floor(x) floor(3.475) 는 3
trunc(x) trunc(5.99) 는 5
round(x, digits=n) round(3.475, digits=2) 는 3.48
cos(x), sin(x), tan(x) 이 밖에도 acos(x), cosh(x), acosh(x)등
log(x)
log10(x)
exp(x) e^x
factorial(x) factorial(5) 120
IV-1
확률 함수
특정 분포로부터 난수(亂數)를 발생시켜서 이를 통해 확률표본 (random sample)을 생성 simulation에 활용
종류(d/p/q/r) + 확률함수 • 확률함수의 종류
• d: 확률밀도함수 (density)
• p: 누적확률 (probability)
• q: 4분위수 (quantile)
• r: 난수 (random number) 발생
IV-2
확률 함수
Function Description
dnorm(x) 정규밀도함수 (default m=0 sd=1)
pnorm(q) 누적 정규 확률 (area under the normal curve to the right of q)
qnorm(p) normal quantile 즉, 정규분포 상의 p percentile의 값
rnorm(n, m=0,sd=1) n 개의 정규편차 (random normal deviates) (평균: m, 표준편차: sd).
dbinom(x, size, prob)
pbinom(q, size, prob)
qbinom(p, size, prob)
rbinom(n, size, prob)
이항분포 (size = 표본 수, prob = 확률)
dpois(x, lamda)
ppois(q, lamda)
qpois(p, lamda)
rpois(n, lamda)
poisson 분포 (m=std=lamda) # lamda=4일 때의 0,1, or 2 event가 발생할 확률 dpois(0:2, 4)
dunif(x, min=0, max=1)
punif(q, min=0, max=1)
qunif(p, min=0, max=1)
runif(n, min=0, max=1)
일양분포 (uniform distribution) #10 uniform random variates
x
IV-4
통계 함수
다음 통계함수에서 na.rm 옵션을 통해 결측치 제거 후 작업. Object는 숫자 vector 또는 데이터프레임.
IV-5
통계함수
함수 설명
mean(x, trim=0,
na.rm=FALSE)
object x의 평균 # trimmed mean, 결측치 제거 및 상하위 점수 5% mx
기술통계 (Descriptive Statistics)
= 요약통계 (summary statistics)
sapply( ) 함수 # mydata라는 데이터프레임에서의 변수 평균. 단, 결측치는 계산에서 제외
sapply(mydata, mean, na.rm=TRUE)
sapply 에 이용 가능한 함수: • mean, sd, var, min, max, median, range, and quantile.
각종 그래픽 (histogram, density plot, … 등)을 활용한다.
기타의 함수 summary(mydata) # 평균, 중위값, 1사분위/3사분위, 최소, 최대
fivenum(x) # Tukey min,lower-hinge, median,upper-hinge,max
IV-7
히스토그램
Histograms hist(x) 함수
• x 는 plotting하려는 값의 숫자 vector
• freq=FALSE option 빈도 대신 확률밀도
• breaks= option bin의 개수 지정
Histogram의 단점 • 구간의 개수에 크게 영향을 받는다.
# 가장 단순한 히스토그램
hist(mtcars$mpg)
# 구간의 개수를 지정. 색상 지정
hist(mtcars$mpg, breaks=12, col="red")
IV-9
밀도 Plot
핵 밀도(Kernel Density) Plots plot(density(x)) 단, x는 수치 vector.
# Kernel Density Plot
d
Kernel Density를 이용한 Group 비교 sm package의 sm.density.compare(x, factor)
• x는 숫자 vector, factor는 grouping 변수.
• superimpose the kernal density plots of two or more groups. # MPG 분포를 비교 (cars with 4,6, or 8 cylinders)
library(sm)
attach(mtcars)
# value label 생성 (factor로 변환. 원래 cyl=4,6,8의 numeric 변수)
cyl.f
IV-12
빈도수와 분할표 (contingency table)
빈도표 생성 table( ) 빈도표
prop.table( ) 비율 테이블
margin.table( ) marginal 빈도
분할표 각 개체를 특성에 따라 분류한 자료 정리표
2-way contingency table (2원 분할표) ; 행과 열 변수간의 자료 정리
IV-13
상관관계
cor( )
상관관계 cov( )
공분산
단순 포맷: cor(x, use=, method= ) 다음 표를 참조
Option Description x Matrix 또는 data frame
use 결측치 처리방법. Options: all.obs (결측치 없는 것을 전제 – 결측치는 에러 발생), complete.obs (listwise deletion), pairwise.complete.obs (pairwise deletion)
method 분석하려는 상관관계의 종류 Options: pearson, spearman, kendall.
IV-14
# mtcars의 수치 변수간 상관관계/공분산. 결측치는 listwise deletion
cor(mtcars, use="complete.obs", method="kendall")
cov(mtcars, use="complete.obs")
cor.test( ) 하나의 correlation coefficient를 검정 neither cor( ) or cov( ) produce tests of significance,
Hmisc package의 rcorr( ) pearson & spearman 상관관계에 대한 correlations/covariances 및 유의도 수준 단, 입력항목은 matrix이고 pairwise deletion 적용.
# 유의도 수준과 상관관계
library(Hmisc)
rcorr(x, type="pearson") # pearson 또는 spearman 타입
rcorr(as.matrix(mtcars)) # mtcars는 data frame
IV-15
cor(X, Y) 또는 rcorr(X, Y) column X와 column Y간의 상관관계 생상
# mtcars의 Correlation matrix
# rows: mpg, cyl, disp
# columns:hp, drat, wt
x
회귀분석
독립변수 (x)와 종속변수 (y)의 관계식을 구하는 것 단순회귀분석
• 한 개의 독립변수(=설명변수)로서 1차 선형 관계식을 구하는 것 • Yi = β0 + βi xi + Єi
• 오차의 제곱 합을 최소로 하는 최소제곱법 (least squares method)
기타 • 복합회귀모형, 비모수적 회귀모형, …
data(women)
women
fit
V. 맺음말
R의 특징
오픈소스 소프트웨어 – 자유 + 무료 출현 배경은 S 언어.
기본 명령(함수) + 외부 packages 설치
특징 사용자 관점
• 통계/분석 특화기능 (DSL :Domain Specific Language)
• 어떤 환경에서든 사용 가능 (Windows, Unix, MacOS).
• 속도가 빠르고 그래픽 기능이 뛰어남.
프로그래밍 관점. • 함수형 (Functional Programming) 언어
• 함수결과를 다른 함수로 입력, 반복작업 (loop) 대신 함수로 처리, …
• Script 언어, Interpreter 방식
• 객체지향형 (OOP) • Generic 함수 Polymorphic.
• 함수는 그 결과를 object 형태로 반환 I-1
R의 성능
빅데이터와 R
R 언어의 여러 측면 수리/통계 분석도구로서의 R
프로그래밍 언어로서의 R
시각화 도구로서의 R
빅데이터 분석과 R 기계학습과 예측적 분석 (Predictive Analysis)
기본에 충실
강사소개
윤형기
• 학력: • 한국외대 및 대학원 (MIS) 졸
• 경력: • 쌍용정보통신, 삼보컴퓨터, 한국 Sun Microsystems
• 현재: • 주식회사 임팩트라인 대표
• 저서: • 『빅데이터 (Hadoop과 분석기법) 』, 교보문고 (Pubple), 2013년
• 『 가상화 스토리지 네트워크』, 홍릉과학출판사, 2006년