R Programming

[R Programming] 벡터와 행렬의 연산 - Week 2-3

akffhaos95 2019. 9. 5. 13:00

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,0122-3-302225,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함수를 사용한다.

 

댓글수0