[R Programming] 벡터와 행렬의 연산 - Week 2-3
GIST에서 공개하는 청년 AI. Big Data 아카데미 온라인 기초과정 빅데이터 분석과 R프로그래밍 강의를 참고하였다.
기본 연산 기호
Operation | Description | Operation | Description |
+ | addition(더하기) | < | less than |
- | subtraction(빼기) | <= | less than or equal to |
* | multiplication(곱하기) | > | greater than |
/ | division(나누기) | >= | greater than or equal to |
^ or ** | exponentiation(제곱) | == | exactly equal to |
x && y | modulus(나눈 나머지) | != | not equal to |
x %/% y | integer division(정수 나누기) | !x | not x |
x|y | x or y | ||
x&y | x and y |
R Studio를 실행하여 실습을 해본다.
1
2
3
4
|
2^3
4**3
7%%5
7%/%5
|
cs |

간단한 제곱과 나누기, 나머지를 볼 수 있는 계산식이다.
t(A): Transpose(전치행렬)
1
2
3
4
|
m<-matrix(1:6, ncol=3)
m
tm<-t(m)
tm
|
cs |

2x3의 행렬 m을 생성하고 이를 전치행렬 함수를 통하여 3x2 행렬 tm을 생성하였다.
det(A): Determinant(행렬식)
1
2
3
|
d<-matrix(1:4, nrow=2, byrow=T)
d
det(d)
|
cs |

2x2의 행렬 d를 생성하고 이 행렬의 행렬식을 구한다.
| a b |
| c d | 행렬이 있으면 행렬식은 ab - cd 이다.
결과는 1x4 - 2x3 이므로 -2가 나온다.
solve(A): Inverse(역행렬)
1
2
3
|
d_inv<-solve(d)
d_inv
d%*%d_inv
|
cs |

행렬 d의 역행렬을 구할 수 있다.
행렬 d와 행렬 d의 역행렬을 곱하면 단위행렬(대각행렬이 1인 행렬)이 나온다.
d %*% d_inv 를 해준 결과가 단위행렬이 나온다.
역행렬을 이용한 방정식 해 구하기
3x+2y=8, x+y=2 두 방정식이 있을 때 역행렬을 사용하여 x와 y값을 구할 수 있다.
1
2
3
|
a <- matrix(c(3,1,2,1),nrow=2,ncol=2)
b <- matrix(c(8,2),nrow=2,ncol=1)
solve(a,b)
|
cs |

방정식의 값을 이용하여 = 을 기준으로 왼쪽의 4개의 숫자는 a행렬로 생성하고, 오른쪽 2개의 숫자는 b행렬로 생성한다. 이 2개의 행렬의 역행렬을 구하면 x와 y의 값이 나온다.
고유치(eigenvalue)와 고유벡터(eigenvector)
1
2
3
4
|
x<-matrix(c(-3,-2,0, 1, 2, 2, -3, -3, 0, 2, 2, 2, 5,7,4,0,-5,-11), nrow =6, ncol=3)
dim(x)
e1<-eigen(t(x)%*%x)
e1
|
cs |

6x3 행렬 x를 생성한다. 이를 관측치가 6개이고 변수가 3개로 이루어진 데이터로 본다.
고유치와 고유벡터는 공분산행렬로 구할 수 있는데, x의 전치행렬과 x의 곱이 공분산행렬이다.
x의 전치행렬은 3x6이고 x 행렬은 6x3이므로 공분산행렬은 3x3이다.
고유치와 고유벡터를 구하고 싶을때 eigen함수를 사용한다.
eigen으로 생성된 e1는 eigenvalue와 eigenvector를 출력한다.
위 사진의 eigenvalue를 보면 첫번째 변수가 유난히 큰 것을 볼 수 있다. 이러한 변화를 통해서 데이터를 분석하기 위해 eigen함수를 사용한다.