[R코딩] 행렬의 특잇값 분해 (svd)
행렬의 특잇값 분해는 아래와 같이 행렬 A를 U,D,V 세 행렬의 곱으로 나타내는 것입니다. (보통 D 대신 Σ 를 사용하는데, R 함수에서는 D를 사용합니다.) $A=UDV^{T}$ 특잇값 분해는 영어로 singular value decomposition 입니다. 줄어서 SVD 라고 부릅니다. R 함수 이름도 svd 입니다. singular value 를 한글로 옮긴 것이 '특잇값' 입니다. A,U,D,V 에 대한 설명은 아래와 같습니다. A : NxM 크기의 행렬 U : N차원 정방 직교 행렬 D : 대각행렬 V : M차원 정방 직교 행렬 아래는 R 예시입니다. > A=matrix(1:6,2) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > svd(A) $d [1] 9.5..
2020. 12. 22.
[R코딩] 행렬을 열 방향으로 연결 (cbind)
R행서 행렬을 열 방향(좌->우)으로 연결할 때는 cbind함수를 사용합니다. 두 행렬이 열방향으로 연결되려면 두 행렬의 행의 크기가 같아야합니다. 두 행렬을 정의해봅시다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:4,2) > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 cbind 함수를 이용하여 연결해봅시다. > cbind(m1,m2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 1 3 [2,] 2 4 6 2 4
2020. 12. 21.
[R코딩] 행렬을 행 방향으로 연결 (rbind)
두 행렬을 행 방향(위->아래)으로 연결할 때는 rbind 함수를 사용합니다. 두 행렬을 정의해봅시다. 행 방향으로 연결하려면 두 행렬의 열의 크기가 같아야 합니다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:9,3) > m2 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 rbind 함수를 이용하여 연결해봅시다. > rbind(m1,m2) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [3,] 1 4 7 [4,] 2 5 8 [5,] 3 6 9
2020. 12. 21.
[R코딩] 행렬의 곱 (%*%)
R에서 행렬의 곱을 수행하는 함수는 %*% 입니다. 행렬을 하나 정의합시다. > m1=matrix(1:4,2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 m1과 m1을 곱하는 행렬의 곱을 해봅시다. > m1%*%m1 [,1] [,2] [1,] 7 15 [2,] 10 22 행렬과 행렬을 곱할 때는, 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야 합니다. 두 행렬을 정의합시다. m2 는 2행3열, m3는 3행3열의 행렬입니다. > m2=matrix(1:6,2) > m2 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m3=matrix(1:9,3) > m3 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 m2의 열의 수와 m3의 행..
2020. 12. 21.
[R기초] 대각행렬을 생성하는 diag 함수
대각행렬은 대각선 방향을 제외한 나머지 값이 0인 행렬입니다. R에서는 diag 함수를 이용하여 생성합니다. diag(값,행의수,열의수) 예를들면 아래와 같습니다. > diag(1,4,4) [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 1 0 0 [3,] 0 0 1 0 [4,] 0 0 0 1
2020. 12. 20.
[R 코딩] 역행렬 구하는 함수 (solve)
R에서 역행렬을 구할 때는 solve 함수를 사용합니다. 행렬을 하나 정의합시다. > m=matrix(1:4,2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 역행렬을 구해봅시다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 역행렬이 맞는지 확인합시다. 둘을 곱하여 단위행렬이 나오면 됩니다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5
2020. 12. 18.
[R 코딩] 모든 원소가 0인 행렬 만들기
파이썬 넘파이나 매트랩의 zeros 와 같은 역할입니다. R에서 행렬을 정의할 때, 벡터가 들어가는 자리에 0을 넣으면 됩니다. 3행 5열의 zeros 행렬을 만들어봅시다. > matrix(0,3,5) [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 0 0 0 0 0 [3,] 0 0 0 0 0
2020. 12. 18.
[R 코딩] matrix 함수 없이 벡터에서 행렬만들기
보통 행렬은 아래와 같이 만듭니다. > m1=matrix(c(1,2,3,4),2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 위 방법 말고 벡터를 정의한 뒤 dim 함수를 이용하여 만들 수도 있습니다. > v1=c(1,2,3,4) > dim(v1)=c(2,2) > v1 [,1] [,2] [1,] 1 3 [2,] 2 4
2020. 12. 15.
R 행렬 인덱싱, 원소 추가/수정/제거
R 행렬 인덱싱, 원소 추가/수정/제거 1. 행렬의 인덱싱 행렬을 하나 정의합시다. > m1=matrix(c(1,2,3,4,5,6),nrow=2)> m1 [,1] [,2] [,3][1,] 1 3 5[2,] 2 4 6 인덱싱 원리는 벡터와 동일한데, 방향이 하나 추가된 것입니다. 행방향 index와 열방향 index가 있습니다. 아래와 같이 입력합니다. 행렬이름[행방향 index, 열방향 index] 1) 단일 원소 위 행렬의 1행2열 원소에 접근해봅시다. > m1[1,1][1] 1 1행 2열의 원소에 접근해봅시다. > m1[1,2][1] 3 2) 여러원소 벡터형태로 인덱스를 입력하면 됩니다. 1행의 2,3열의 원소에 접근해봅시다. > m1[1,c(2,3)][1] 3 5 아래와 같이 입력해도 됩니다. > ..
2020. 1. 30.
R 행렬(matrix)정의, 행과열의 이름 지정
R 행렬(matrix)정의, 행과열의 이름 지정 행렬은 숫자를 행과 열에 배열한 것입니다. 행렬을 정의하는 방법은 두가지가 있습니다. - matrix 함수 사용- 벡터를 bind하여 정의 1. 행렬 정의 : matrix 함수 사용 먼저 matrix 함수를 사용하여 정의해봅시다. 아래는 R의 공식문서에서 제공하는 정의방법입니다. matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 옵션을 하나씩 알아봅시다! data 자리에는 벡터를 입력합니다. 숫자벡터, 문자벡터 둘 다 올 수 있습니다. 문자벡터가 오는 경우에는 산술연산(+,-,*,% 등)이 불가능합니다. 벡터를 입력한 뒤에, 행의 수 혹은 열의 수를 정해줍니다. nrow가 행의 수,..
2019. 11. 30.