정보
-
업무명 : 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
[다음글]
[이전글]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] R을 이용한 통계 분석 및 데이터 시각화 : 배열 (0) | 2020.03.25 |
---|---|
[R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터 프레임 (0) | 2020.03.25 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : 벡터 (0) | 2020.03.24 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터형 (0) | 2020.03.23 |
[R] R를 이용한 고급 기상 통계학 실습 : R 기초, 자료의 특성, 자료의 상관성, 통계적 유의수준, 조화 분석, 주성분 분석, 기계 학습 (0) | 2020.03.17 |
최근댓글