[Numpy-discussion] Identifying Colinear Columns of a Matrix

josef.pktd at gmail.com josef.pktd at gmail.com
Fri Aug 26 16:03:21 EDT 2011


On Fri, Aug 26, 2011 at 2:57 PM, Charles R Harris
<charlesr.harris at gmail.com> wrote:
>
>
> On Fri, Aug 26, 2011 at 12:38 PM, Mark Janikas <mjanikas at esri.com> wrote:
>>
>> Charles!  That looks like it could be a winner!  It looks like you always
>> choose the last column of the U matrix and ID the columns that have the same
>> values?  It works when I add extra columns as well!  BTW, sorry for my lack
>> of knowledge… but what was the point of the dot multiply at the end?  That
>> they add up to essentially zero, indicating singularity?  Thanks so much!
>
> The indicator of collinearity is the singular value in d, the corresponding
> column in u represent the linear combination of rows that are ~0, the
> corresponding row in v represents the linear combination of columns that are
> ~0. If you have several combinations that are ~0, of course you can add them
> together and get another. Basically, if you take the rows in v corresponding
> to small singular values, you get a basis for the for the null space of the
> matrix, the corresponding columns in u are a basis for the orthogonal
> complement of the range of the matrix. If that is getting a bit technical
> you can just play around with things.

Interpretation is a bit difficult if there are more than one zero eigenvalues

>>> zt2 = np.vstack((zt, zt[2,:] + zt[3,:]))
>>> zt2
array([[ 1.  ,  1.  ,  1.  ,  1.  ,  1.  ],
       [ 0.25,  0.1 ,  0.2 ,  0.25,  0.5 ],
       [ 0.75,  0.9 ,  0.8 ,  0.75,  0.5 ],
       [ 3.  ,  8.  ,  0.  ,  5.  ,  0.  ],
       [ 3.75,  8.9 ,  0.8 ,  5.75,  0.5 ]])
>>> u,d,v = np.linalg.svd(zt2)
>>> d
array([  1.51561431e+01,   1.91327688e+00,   3.25113875e-01,
         1.05664844e-15,   5.29054218e-16])
>>> u[:,-2:]
array([[ 0.59948553, -0.12496837],
       [-0.59948553,  0.12496837],
       [-0.51747833, -0.48188813],
       [ 0.0820072 , -0.60685651],
       [-0.0820072 ,  0.60685651]])

Josef

>
> <snip>
>
> Chuck
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>



More information about the NumPy-Discussion mailing list