y_hat = [beta0 + beta1*X[i] for i in range(len(X))]
现在计算残差,也就是Y-Y\u
residuals = [Y[i] - y_hat[i] for i in range(len(Y))]
我们需要找到H矩阵,它是
其中X是自变量的矩阵。在
为了找到杠杆作用,我们必须采用H矩阵的对角线元素,如下所示:
leverage = numpy.diagonal(H)
如果回归为
Var_e = sum([(Y[i] - y_hat[i])**2 for i in range(len(Y)) ]) / (len(Y) -2)
SE_regression = math.sqrt(Var_e*[(1-leverage[i]) for i in range len(leverage)])
现在你可以计算学生化的残差
studentized_residuals = [residuals[i]/SE_regression for i in range(len(residuals))]
Nodar的实现是不正确的,这里是来自https://newonlinecourses.science.psu.edu/stat501/node/339/的修正公式以及删除的studentized残差,以防人们不想使用statsmodels包。两个公式返回的结果与上面链接中的示例相同
我在处理同样的问题。解决方案是使用
statsmodels
库:它包含一个
resid_studentized_internal
方法。在对于简单的线性回归,可以使用以下方法计算学生化残差
将X和Y的平均值定义为:
现在你要估计系数β0和β1
^{2}$现在,您需要通过使用
现在计算残差,也就是Y-Y\u
我们需要找到
H
矩阵,它是 其中X
是自变量的矩阵。在为了找到杠杆作用,我们必须采用
H
矩阵的对角线元素,如下所示:如果回归为
现在你可以计算学生化的残差
注意,我们有两种类型的学生化残差。一个是内部学生化残差第二个是外部学生化残差
我的解决方案是找到内部学习的残差。在
我修正了我的计算。对于外部研究的残差,请参考@kkawabat的答案
相关问题 更多 >
编程相关推荐