如何在多元线性回归模型中找到学生化和PRESS残差
问题描述:
我正在尝试使用python找到学生化和PRESS残差的多元回归模型。在这种情况下,我有以下数据:如何在多元线性回归模型中找到学生化和PRESS残差
X1 X2 Y
14 25 301
19 32 327
12 22 246
11 15 187
与拟合模型为:Y = 80.93-5.84 X1 + X2 11.32和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的值,以便我可以使用代码中的上述公式计算studentized和Press residual。这里st_r被studentized,press_r是PRESS残差。我不想使用任何python库。提前致谢。
答
有一个在Matrix Multiplication in python?
纯矩阵乘法的代码和Python的转置可以与在此 Matrix Transpose in Python
所示的帽子矩阵然后可被计算为的zip函数来计算(除了使用函数在上面的参考文献中): H = X(X^TX)^ - 1X^T
我得到这些杠杆值(嗨):0.387681,0.95258,0.6661433,0.999597。注意模型的R平方好,但是模型预测的R平方(预测的R平方= [1-(PRESS /总平方和)]×100)为0.另外X1和X2 pvalues在统计学上不显着。非常有限的数据集。