pythonnumpymatrixleast-squares

How to use least squares with weight matrix?


I know how to solve A.X = B by least squares using Python:

Example:

A=[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,0,0]]
B=[1,1,1,1,1]
X=numpy.linalg.lstsq(A, B)
print X[0]
# [  5.00000000e-01   5.00000000e-01  -1.66533454e-16  -1.11022302e-16]

But what about solving this same equation with a weight matrix not being Identity:

A.X = B (W)

Example:

A=[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,0,0]]
B=[1,1,1,1,1]
W=[1,2,3,4,5]

Solution

  • I found another approach (using W as a diagonal matrix, and matricial products) :

    A=[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,0,0]]
    B = [1,1,1,1,1]
    W = [1,2,3,4,5]
    W = np.sqrt(np.diag(W))
    Aw = np.dot(W,A)
    Bw = np.dot(B,W)
    X = np.linalg.lstsq(Aw, Bw)
    

    Same values and same results.