如何在多元线性回归模型中找到学生化残差和 PRESS 残差

How to find Studentized and PRESS residuals in multiple linear regression model

我正在尝试使用 python 查找多元回归模型的 Studentized 和 PRESS 残差。在这种情况下,我有以下数据:

X1  X2  Y
14  25  301
19  32  327
12  22  246
11  15  187

拟合模型为:Y=80.93−5.84 X1 + 11.32 X2 和 MSresidual:574.9 我编写了以下代码来查找这些残差。

import math
def lin_model(X1, X2):
    Y_hat = 80.93 - 5.84 * X1 + 11.32 * X2
    return Y_hat

MSresiduals = 574.9
X1 = [14, 19, 12, 11]
X2 = [25, 32, 22, 15]
Y=[301, 327, 246, 187]

i=0
hii = 0
print('Residual Standardized_Residual Studentized_Residual PRESS_Residual')
for z in Y:
    err = z - lin_model(X1[i],X2[i])
    sd_r = err / math.sqrt(MSresiduals)
    st_r = err / math.sqrt(MSresiduals * (1 - hii))
    press_r = err / (1-hii)
    print(err,' ',sd_r,' ', st_r,' ',press_r)
    i+=1

但是hii的值我不知道。 hii是帽子矩阵的对角线元素。但是我不知道如何实现帽子矩阵并获得 hii 的值。有人请帮我从给定的数据中找到 hii 的值,这样我就可以在代码中使用上面的公式计算学生化和压力残差。这里 st_r 是学生化的,press_r 是 PRESS 残差。我不想使用任何 python 库。提前致谢。

Matrix Multiplication in python?

处有纯矩阵乘法的代码

并且 Python 转置可以用此处显示的 zip 函数计算 Matrix Transpose in Python

然后可以将帽子矩阵计算为(使用上述参考资料中的函数除外): H = X(X^TX)^-lX^T

我得到这些杠杆值 (Hii):0.387681、0.951288、0.661433、0.999597。 PRESS = 1442464

请注意,模型 R 方很好,但模型预测的 R 方(预测的 R 方 = [1 - (PRESS / 总平方和)] * 100)为 0。X1 和 X2 p 值也不是具有统计学意义。数据集非常有限。