1
我有X,Y数据:计算残差与numpy的lstsq
import numpy as np
x = np.array([ 2.5, 1.25, 0.625, 0.3125, 0.15625, 0.078125])
y = np.array([ 2448636.,1232116.,617889.,310678.,154454.,78338.])
X = np.vstack((x, np.zeros(len(x))))
popt,res,rank,val = np.linalg.lstsq(X.T,y)
popt,res,rank,val
给我:
(array([ 981270.29919414, 0. ]),
array([], dtype=float64),
1,
array([ 2.88639894, 0. ]))
为什么残差为零?如果我加的人,而不是零残差计算:
X = np.vstack((x, np.ones(len(x)))) # added ones instead of zeros
popt,res,rank,val = np.linalg.lstsq(X.T,y)
popt,res,rank,val
(array([ 978897.28500355, 4016.82089552]),
array([ 42727293.12864216]),
2,
array([ 3.49623683, 1.45176681]))
另外,如果我在Excel中计算残差平方的总和我得到9261214
如果拦截设置为零,5478137
如果那些被添加到x。
奇怪。我从“小数点后六位”开始,在'ones'情况下的残差平方和的结果甚至略有不同:array([42727293.12864096]) – FuzzyDuck 2015-01-26 18:22:50