정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 행렬

    • 작성자     : 박진만

    • 작성일     : 2020-03-24

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

    • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

    • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

    • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

    • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

     

     

    [특징]

    • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    • R 행렬은 수학 행렬과 거의 같은 개념이다.

    • 즉 행과 열로 이루어진 2 차원 배열의 데이터이다.

    • 행렬에 대하여 행렬의 모든 요소가 동일한 특성을 가질 필요가있다.

    • 즉, 행렬에 포함되어있는 모든 요소는 같은 단위여야 한다. 또한, R은 행렬과 비슷한 것으로 데이터 프레임 이라는 개념이 존재한다.

    • 데이터 프레임은 행렬과 달리 열마다 다른 단위를 가질 수있다.

     

    [행렬 만들기]

    • 행렬은 matrix함수를 이용하여 행렬의 열 수와 행 수를 지정하여 생성한다.

    matrix(1:9, nrow = 3, ncol = 3)
    ##      [,1] [,2] [,3]
    ## [1,]    1    4    7
    ## [2,]    2    5    8
    ## [3,]    3    6    9
    
    matrix(1:9, nrow = 3, ncol = 3, byrow = T)
    ##      [,1] [,2] [,3]
    ## [1,]    1    2    3
    ## [2,]    4    5    6
    ## [3,]    7    8    9

     

    • 그리고 행렬의 행과 열에 이름을 붙일 수 있다.

    m <- matrix(1:12, nrow = 3, ncol = 4)
    
    colnames(m) <- c("A", "B", "C", "D")
    rownames(m) <- c("first", "second", "third")
    
    m
    ##        A B C  D
    ## first  1 4 7 10
    ## second 2 5 8 11
    ## third  3 6 9 12

     

    [행렬의 요소]

    • 행렬에서 요소를 꺼낼 때 대괄호를 사용하여 행과 열 개수를 지정한다. 

    • 행과 열 개수를 복수 지정하여 여러 요소를 꺼낼 수있다. 또한 행수만큼을 지정하여 열 수를 두 의미하는 경우는 지정된 행의 행 벡터를 얻을 수있다.

    x <- matrix(c(1:16), nrow = 4, ncol = 4)
    x
    ##      [,1] [,2] [,3] [,4]
    ## [1,]    1    5    9   13
    ## [2,]    2    6   10   14
    ## [3,]    3    7   11   15
    ## [4,]    4    8   12   16
    
    x[3, 2]
    ## [1] 7
    
    ## x[3, ]
    [1]  3  7 11 15
    
    x[-3, ]
    ##      [,1] [,2] [,3] [,4]
    ## [1,]    1    5    9   13
    ## [2,]    2    6   10   14
    ## [3,]    4    8   12   16
    
    x[c(1,2),c(3,4)]
    ##      [,1] [,2]
    ## [1,]    9   13
    ## [2,]   10   14

     

    • 행렬의 행과 열에 이름이있는 경우, 행 및 열 이름에서 요소를 추출할 수 있다.

    m <- matrix(1:12, nrow = 3, ncol = 4)
    colnames(m) <- c("A", "B", "C", "D")
    rownames(m) <- c("first", "second", "third")
    
    m[, "D"]
    ##  first second  third 
    ##     10     11     12
    
    m[c("first", "second"), c("B", "C", "D")]
    ##        B C  D
    ## first  4 7 10
    ## second 5 8 11
    

     

    [행렬의 계산]

    입력 예시 의미
    - -A 각 성분에 (-1)을 곱한다.역행렬을 계산하는 것은 아니다.
    * A * B 각 성분을 개별적으로 곱을 취한다. 즉, a ij * b ij 를 계산하고있다. 행렬의 곱을 계산하는 것은 아니다.
    %*% A %*% B 행렬 A와 행렬 B의 곱. 즉 Σa ij * b ji 을 계산한다.
    + A + B 행렬 A와 행렬 B의 합.
    - A - B 행렬 A와 행렬 B의 차.

     

    A <- matrix(1:9, 3, 3)
    B <- matrix(1:9, 3, 3)
    
    A + B
    ##     [,1] [,2] [,3]
    ## [1,]    2    8   14
    ## [2,]    4   10   16
    ## [3,]    6   12   18
    
    A * B 
    ##      [,1] [,2] [,3]
    ## [1,]    1   16   49
    ## [2,]    4   25   64
    ## [3,]    9   36   81
    
    A %*% B 
    ##      [,1] [,2] [,3]
    ## [1,]   30   66  102
    ## [2,]   36   81  126
    ## [3,]   42   96  150

     

    • 고유값과 역행렬 등은 R의 함수로 계산한다.
    의미
    rowSums(x) 행렬 x의 각 행의 총합
    solSums(x) 행렬 x의 각 열의 합
    rowMeans(x) 행렬 x의 각 행의 평균
    colMeans(x) 행렬 x의 각 열의 평균
    t(x) 행렬 x의 전치행렬
    solve(x) 행렬 x의 역행렬
    diag(n) n 행 n 열의 단위 행렬
    diag(a1:an) 대각선 성분 (a 1 , a 2 , ..., a n )의 대각 행렬
    x[upper.tri(x)] <- n 대각선 성분을 제외한 상위 삼각 성분을 모두 n으로 치환
    x[lower.tri(x)] <- n 대각선 성분을 제외한 아래 삼각 성분을 모두 n으로 치환
    sum(x^n) 행렬 x의 n 곱
    crossprod(x) 행렬 x의 벡터 곱
    crossprod(x,y) 행렬 x와 행렬 y의 내적
    eigen(x) 행렬 x의 고유치와 고유 벡터
    det(x) 행렬 x의 행렬식

     

    [행렬의 결합]

    • 2 개의 행렬을 가로로 결합 할 때(열 결합)는 cbind함수를 사용한다. 

    • 2 개의 행렬을 수직으로 결합 할 때 (행 결합)은 rbind함수를 사용한다.

    a <- matrix(1:9, 3, 3)
    b <- matrix(11:19, 3, 3)
    
    rbind(a, b)
    ##      [,1] [,2] [,3]
    ## [1,]    1    4    7
    ## [2,]    2    5    8
    ## [3,]    3    6    9
    ## [4,]   11   14   17
    ## [5,]   12   15   18
    ## [6,]   13   16   19
    
    cbind(a, b)
    ##      [,1] [,2] [,3] [,4] [,5] [,6]
    ## [1,]    1    4    7   11   14   17
    ## [2,]    2    5    8   12   15   18
    ## [3,]    3    6    9   13   16   19

     

    [다음글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터 프레임

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 데이터 프레임 작성자 : 박진만 작성일 : 2020-03-25 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지..

    shlee1990.tistory.com

     

    [이전글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 벡터

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 벡터 작성자 : 박진만 작성일 : 2020-03-24 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석..

    shlee1990.tistory.com

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기