95
분석언어 R 기초 2014.2.3 윤형기 (v.0.9)

분석언어 R¸°초hky_DB...그래픽 환경: 메뉴 이용 또는 GUI 기반의 R을 별도로 설치 사용 R의 작업공간 둘러보기 GUI R RStudio R Commander … I-5 편리한

  • 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년