我正在尝试使用 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? 有纯矩阵乘法的代码
并且可以使用此处显示的 zip 函数计算 Python 转置 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 值在统计上不显着.数据集非常有限。
关于python - 如何在多元线性回归模型中找到学生化残差和 PRESS 残差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216943/