svd
位于 base
包(package)。 说明
计算矩形矩阵的 singular-value 分解。
用法
svd(x, nu = min(n, p), nv = min(n, p), LINPACK = FALSE)
La.svd(x, nu = min(n, p), nv = min(n, p))
参数
x |
要计算其 SVD 分解的数值或复数矩阵。逻辑矩阵被强制转换为数字。 |
nu |
要计算的左奇异向量的数量。这必须在 |
nv |
要计算的右奇异向量的数量。它必须位于 |
LINPACK |
合乎逻辑的。失效并出现错误。 |
细节
奇异值分解在许多统计技术中起着重要作用。 svd
和La.svd
提供了两个接口,其返回值有所不同。
对于大型矩阵来说,计算奇异向量是最慢的部分。如果 nu <= min(n, p)
和 nv <= min(n, p)
的计算效率会更高,如果两者都为零,计算效率会更高。
底层 LAPACK 代码的不成功结果将导致错误,给出正错误代码(最常见的是 1
):这些只能通过详细研究 FORTRAN 代码来解释,但这意味着算法无法收敛。
x
中缺少 NaN
或无限值将给出错误。
值
由 LAPACK 计算的矩阵的 SVD 分解,
其中 和 是正交的, 表示 V 转置(对于复数输入共轭), 是对角矩阵,其中(非负)奇异值 按降序排列。等效地, ,这在示例中得到了验证。
返回值是一个包含组件的列表
d |
包含 |
u |
一个矩阵,其列包含 |
v |
一个矩阵,其列包含 |
回想一下,奇异向量仅定义为符号(复数情况下模数为 1 的常数)。如果左奇异向量的符号发生变化,则改变相应右向量的符号会产生等效的分解。
对于 La.svd
,返回值用 vt
替换 v
,vt
是 v
的转置(如果复数则为共轭)。
例子
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, `+`) }
X <- hilbert(9)[, 1:6]
(s <- svd(X))
D <- diag(s$d)
s$u %*% D %*% t(s$v) # X = U D V'
t(s$u) %*% X %*% s$v # D = U' X V
来源
使用的主要函数是 LAPACK 例程 DGESDD
和 ZGESDD
。
LAPACK 来自https://netlib.org/lapack/,其指南在参考文献中列出。
参考
Anderson. E. and ten others (1999)
LAPACK Users' Guide. Third Edition. SIAM.
Available on-line at
https://netlib.org/lapack/lug/lapack_lug.html.
The ‘Singular-value decomposition’ Wikipedia article.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相关用法
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R search 给出 R 对象的搜索路径
- R solve 求解方程组
- R scan 读取数据值
- R sprintf 使用 C 风格字符串格式化命令
- R stop 停止函数执行
- R sign 标志函数
- R strtoi 将字符串转换为整数
- R source 从文件、连接或表达式中读取 R 代码
- R sQuote 引用文字
- R switch 选择替代方案列表之一
- R substitute 替换和引用表达式
- R strrep 重复字符向量的元素
- R split 分组并重新集合
- R slice.index 数组中的切片索引
- R sort 对向量进行排序或排序
- R standardGeneric 形式化方法系统 – 调度 S4 方法
- R sequence 创建序列向量
- R startsWith 字符串是否以另一个字符串开头或结尾?
- R system.file 查找 R 系统文件的名称
- R sample 随机样本和排列
- R strwrap 将字符串换行以设置段落格式
- R seek 重新定位连接的函数
- R stopifnot 确保 R 表达式的真实性
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Singular Value Decomposition of a Matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。