[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 코딩] 역행렬 구하는 함수 (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 코딩] 배열,행렬 생성 시 사용 가능한 반복규칙
배열에서는 아래와 같은 생성이 가능합니다. > ar=array(c(1,2,3,4),dim=c(3,5)) > ar [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 [3,] 3 2 1 4 3 전체 차원의 원소수보다 적게 입력해도, 행방향으로 반복하여 입력합니다. 행렬에서도 가능합니다. > m=matrix(c(1,2,3,4),3,5) Warning message: In matrix(c(1, 2, 3, 4), 3, 5) : data length [4] is not a sub-multiple or multiple of the number of rows [3] > m [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 ..
2020. 12. 15.
[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.