분석언어 r¸°초hky_db...그래픽 환경: 메뉴 이용 또는 gui 기반의 r을 별도로...
TRANSCRIPT
-
분석언어 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년