SVD分解中SAS/IML和R的不同结果

SVD分解中SAS/IML和R的不同结果,r,sas,translate,svd,sas-iml,R,Sas,Translate,Svd,Sas Iml,很快,我将把一个R包翻译成IML语言,我完全在为R和IML之间的SVD分解结果而挣扎 R代码: s <- svd(MAT) s$v V是两边的矩阵,包含SVD分解的右奇异向量,但这里,请看一下R的结果: [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] -2.625059e-02 0.029572211 -0.006491235 0.01

很快,我将把一个R包翻译成IML语言,我完全在为R和IML之间的SVD分解结果而挣扎

R代码:

s <- svd(MAT) 
s$v
V是两边的矩阵,包含SVD分解的右奇异向量,但这里,请看一下R的结果:

             [,1]         [,2]         [,3]        [,4]        [,5]         [,6]         [,7]
[1,] -2.625059e-02  0.029572211 -0.006491235 0.015622547  0.01553215 -0.003882378  0.007250290
[2,] -4.762146e-06 -0.030403155 -0.016635218 0.024949110 -0.01238686  0.001334805  0.041902431
[3,] -8.460010e-02  0.025365547  0.006657322 0.020129575 -0.02312842  0.038366880  0.054249177
[4,] -1.368302e-02  0.029621706  0.005462163 0.017887163  0.02605000 -0.002546119 -0.001913554
[5,] -3.326751e-02  0.003552646  0.003634580 0.065277891 -0.01218518 -0.026305833  0.029209961
[6,] -1.451836e-02  0.089992653 -0.012355758 0.009777273 -0.07790069 -0.044679172 -0.028174261
这些结果来自SAS/IML:

            COL1      COL2      COL3      COL4      COL5      COL6      COL7      COL8      COL9

 ROW1   0.0262506 -0.029572 -0.006491 0.0156225 0.0155322 -0.003882  -0.00725  0.040721 -0.000566
 ROW2   4.7621E-6 0.0304032 -0.016635 0.0249491 -0.012387 0.0013348 -0.041902 0.0225321 0.0070566
 ROW3   0.0846001 -0.025366 0.0066573 0.0201296 -0.023128 0.0383669 -0.054249 0.0305745 -0.041534
 ROW4    0.013683 -0.029622 0.0054622 0.0178872   0.02605 -0.002546 0.0019136 0.0168932 0.0229999
 ROW5   0.0332675 -0.003553 0.0036346 0.0652779 -0.012185 -0.026306  -0.02921 -0.029533 0.0145009
 ROW6   0.0145184 -0.089993 -0.012356 0.0097773 -0.077901 -0.044679 0.0281743 -0.025475 -0.036881
 ROW7   -0.012385 0.0295035 0.0051056   -0.0007 0.0025335 -0.009391 -0.045927 -0.054661 -0.029963
这些值与您看到的值相同,但它们的符号有时相同,有时不同。我找不到发生这种事情的任何原因,这完全让我发疯。 有没有人能给我一个解决方案,或者至少是一个提示或者其他什么。 如果任何帮助都不能解决这个问题,我们将不胜感激

非常感谢


编辑:显然,发布的结果只是整个矩阵的一部分。

简而言之,SVD分解不是唯一的

M的奇异向量是M`M的特征向量。特征向量不是唯一的。即使矩阵是满秩的,特征向量也只定义到一个符号:如果v是矩阵a的特征向量,表示特征值λ,那么-v也是,因为 A*(-v)=-(Av)=-(λv)=-λ(-v)

不同的SVD(和特征值)算法可能导致不同的分解。只要M=UDV`,分解就有效。奇异值的D矩阵在软件包中基本相同,但U和V矩阵可能不同


顺便说一句,如果你的矩阵不是满秩,那么即使是“符号唯一性”也会崩溃。对于同一个秩亏矩阵,有两个非常不同的SVD的示例。

太好了,谢谢您的回答。现在,有没有办法了解SAS IML如何将符号分配给奇异向量的值?它不“分配符号”。该算法创建U和V矩阵,不同的算法可能会产生不同的U和V矩阵。SAS/IML文件涉及威尔金森和莱因施(1971年)。R文档说R使用LAPACK算法,这是FORTRAN代码,适用于复杂矩阵和实矩阵。再次非常感谢Rick,你的帮助非常有用。你的博客非常鼓舞人心,也是我对IML的“里程碑”
            COL1      COL2      COL3      COL4      COL5      COL6      COL7      COL8      COL9

 ROW1   0.0262506 -0.029572 -0.006491 0.0156225 0.0155322 -0.003882  -0.00725  0.040721 -0.000566
 ROW2   4.7621E-6 0.0304032 -0.016635 0.0249491 -0.012387 0.0013348 -0.041902 0.0225321 0.0070566
 ROW3   0.0846001 -0.025366 0.0066573 0.0201296 -0.023128 0.0383669 -0.054249 0.0305745 -0.041534
 ROW4    0.013683 -0.029622 0.0054622 0.0178872   0.02605 -0.002546 0.0019136 0.0168932 0.0229999
 ROW5   0.0332675 -0.003553 0.0036346 0.0652779 -0.012185 -0.026306  -0.02921 -0.029533 0.0145009
 ROW6   0.0145184 -0.089993 -0.012356 0.0097773 -0.077901 -0.044679 0.0281743 -0.025475 -0.036881
 ROW7   -0.012385 0.0295035 0.0051056   -0.0007 0.0025335 -0.009391 -0.045927 -0.054661 -0.029963