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

时间:2017-09-14 10:42:50

标签: python statistics regression

我试图使用python找到多元回归模型的学生化和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和MS残余: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库。提前谢谢。

1 个答案:

答案 0 :(得分:1)

Matrix Multiplication in python?

处有纯矩阵乘法的代码

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

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

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

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