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

标签 python statistics regression

我正在尝试使用 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/

相关文章:

python - 从 np.argpartition 索引更快地索引 3D NumPy 数组

python - SpaCy - ValueError : operands could not be broadcast together with shapes (1, 2) (1,5)

mysql - 是否可以通过一次查询获得所有这些统计信息?

c# - 时间序列统计 algrothim 在 C# 中生成递归数据结构

python - 运行时警告: coroutine was never awaited in tests

php - 使用 MySQL 和 PHP 计算某个日期期间的占用天数

r - R lm 中的力系数为负

r - "residuals vs leverage"生成的 `plot.lm()` 图中的红色实线是什么?

r stargazer - 将线添加到回归输出并定制它们的顺序

python - 如何检查用户是否登录