How to Perform Singular Value Decomposition (SVD) in R


How to Perform Singular Value Decomposition (SVD) in R ?

Answer

To perform Singular Value Decomposition (SVD) in R, you can use the svd() function. This function decomposes a matrix into three matrices representing the singular vectors and values.



✐ Examples

1 Performing SVD on a 3x2 Matrix

In this example,

  1. We start by creating a 3x2 matrix named mat using the matrix() function. This matrix represents the data we want to decompose.
  2. Next, we use the svd() function to perform SVD on the matrix mat. We assign the result to a variable named svd_res.
  3. We extract the matrices representing the singular vectors from svd_res using the $u and $v attributes and assign them to variables named u and v respectively.
  4. We also extract the singular values from svd_res using the $d attribute and assign them to a variable named d.
  5. We print the matrices u and v, as well as the vector d to the console to see the results. This allows us to verify the decomposition.

R Program

mat <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE)
svd_res <- svd(mat)
u <- svd_res$u
v <- svd_res$v
d <- svd_res$d
print('Matrix U:')
print(u)
print('Matrix V:')
print(v)
print('Vector D:')
print(d)

Output

[1] "Matrix U:"
           [,1]       [,2]
[1,] -0.2298477  0.8834610
[2,] -0.5247448  0.2407825
[3,] -0.8196419 -0.4018960
[1] "Matrix V:"
           [,1]       [,2]
[1,] -0.6196295 -0.7848945
[2,] -0.7848945  0.6196295
[1] "Vector D:"
[1] 9.5255181 0.5143006

2 Performing SVD on a 4x3 Matrix

In this example,

  1. We start by creating a 4x3 matrix named mat using the matrix() function. This matrix represents another set of data we want to decompose.
  2. Next, we use the svd() function to perform SVD on the matrix mat. We assign the result to a variable named svd_res.
  3. We extract the matrices representing the singular vectors from svd_res using the $u and $v attributes and assign them to variables named u and v respectively.
  4. We also extract the singular values from svd_res using the $d attribute and assign them to a variable named d.
  5. We print the matrices u and v, as well as the vector d to the console to see the results. This allows us to verify the decomposition.

R Program

mat <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow = 4, byrow = TRUE)
svd_res <- svd(mat)
u <- svd_res$u
v <- svd_res$v
d <- svd_res$d
print('Matrix U:')
print(u)
print('Matrix V:')
print(v)
print('Vector D:')
print(d)

Output

[1] "Matrix U:"
           [,1]        [,2]       [,3]
[1,] -0.1408767 -0.82471435  0.5418041
[2,] -0.3439463 -0.42626394 -0.6625522
[3,] -0.5470159 -0.02781353 -0.3003078
[4,] -0.7500855  0.37063688  0.4210560
[1] "Matrix V:"
           [,1]        [,2]       [,3]
[1,] -0.5045331  0.76077568 -0.4082483
[2,] -0.5745157  0.05714052  0.8164966
[3,] -0.6444983 -0.64649464 -0.4082483
[1] "Vector D:"
[1] 2.546241e+01 1.290662e+00 2.503310e-15

Summary

In this tutorial, we learned How to Perform Singular Value Decomposition (SVD) in R language with well detailed examples.




More R Matrices Tutorials

  1. How to Create a Matrix in R ?
  2. How to Combine Matrices by Columns in R ?
  3. How to Combine Matrices by Rows in R ?
  4. How to Create Diagonal Matrices in R ?
  5. How to Access Matrix Elements using Indexing and Slicing in R ?
  6. How to get Matrix Size in R ?
  7. How to get Number of Rows in Matrix in R ?
  8. How to get Number of Columns in Matrix in R ?
  9. How to do Matrix Addition in R ?
  10. How to do Matrix Subtraction in R ?
  11. How to do Matrix Multiplication in R ?
  12. How to do Scalar Multiplication on a Matrix in R ?
  13. How to do Scalar Division on a Matrix in R ?
  14. How to do Element-Wise Operations in a Matrix in R ?
  15. How to Assign Row and Column Names in a Matrix in R ?
  16. How to get Row Names in a Matrix in R ?
  17. How to get Column Names in a Matrix in R ?
  18. How to find Transpose of a Matrix in R ?
  19. How to Extract the Diagonal of a Matrix in R ?
  20. How to find Determinant of a Matrix in R ?
  21. How to find Inverse of a Matrix in R ?
  22. How to find Rank of a Matrix in R ?
  23. How to Find Eigenvalues and Eigenvectors of a Matrix in R ?
  24. How to Perform Singular Value Decomposition (SVD) in R ?
  25. How to Perform QR Decomposition in R ?
  26. How to Perform Cholesky Decomposition in R ?
  27. How to Reshape Matrices in R ?
  28. How to Convert Data Frames to Matrices in R ?
  29. How to Create Identity Matrix in R ?
  30. How to Create Zero Matrix in R ?
  31. How to Create Ones Matrix in R ?
  32. How to Generate Random Matrices in R ?
  33. How to Calculate Row and Column Sums in R ?
  34. How to Calculate Row and Column Means in R ?
  35. How to Find Row and Column Max/Min in R ?
  36. How to Perform Element-Wise Comparisons in R ?