0

我在 3D 空间中有一组数据点,我想量化地确定是否可以忽略数据的 y 分量。我计算了 z = ax + b 的普通最小二乘和 z = ax + b*y + c 的普通最小二乘。我得到了我的 2D 图的 R^2 值和我的 3D 图的残差(误差平方和)。如何从 3D 图的残差值变为 R^2 值,与我的 2D 图的 R^2 值进行比较是否可以接受?

xs = array of x data

ys = array of y data

zs = array of z data

对于 2D:

slope, intercept, r_value, p_value, std_err = stats.linregress(xs, zs)

对于 3D:

tmp_A = []
tmp_b = []
for i in range(len(xs)):
   tmp_A.append([xs[i], ys[i], 1])
   tmp_b.append(zs[i])
b = np.matrix(tmp_b).T
A = np.matrix(tmp_A)
fit = (A.T * A).I * A.T * b
errors = b - A * fit
residual = np.linalg.norm(errors)

谢谢!

杰森

编辑

这是答案:

E = np.squeeze(np.asarray(errors))
Z = np.array(zs)
r2 = 1 - (E.var() / Z.var())
4

0 回答 0