如何在Python中计算 Studentized Residuals

如何在Python中计算 Studentized Residuals

Studentized 残差是一个统计学术语,它被定义为用残差除以其估计的标准差而得到的商。这是一种用于检测轮廓的重要技术。实际上,人们可以声称,数据集中的任何类型的观察,如果其研究性残差超过3(绝对值),就是一个离群点。

以下Python库应该已经安装在我们的系统中。

你可以通过在终端使用以下命令在你的系统上安装这些软件包。

pip3 install pandas numpy statsmodels matplotlib

在Python中计算 studentized残差的步骤

第1步:导入库。

我们需要在上面安装的程序中导入这些库。

# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt

第2步:创建一个数据框架。

首先,我们需要创建一个数据框。在pandas包的帮助下,我们可以创建一个数据框。下面是一个片段。

# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})

第3步:建立一个简单的线性回归模型。

现在我们需要对创建的数据集建立一个简单的线性回归模型。为了拟合一个简单的线性回归模型,Python提供了statsmodels软件包中的ls()函数。

语法:

statsmodels.api.OLS(y, x)

参数:

  • y : 它表示取决于x的变量
  • x :它代表自变量

示例:

# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()

步骤4:产生研究性的剩余物。

为了产生一个包含数据集中每个观测值的 studentized 残差的 dataFrame,我们可以使用 outlier_test() 函数。

语法:

simple_regression_model.outlier_test()

这个函数将产生一个dataFrame,包含数据集中每个观测点的 studentized残差。

# Producing studenterized residual
stud_res = simple_regression_model.outlier_test()

以下是完整的实现

# Python program to calculate studenterized residual
 
# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
 
# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})
 
# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()
 
# Producing studenterized residual
result = simple_regression_model.outlier_test()
 
print(result)

输出:

如何在Python中计算 Studentized Residuals?

输出是一个数据框,其中包含。

  • 螺线管残差
  • 未经调整的研究性残差的P值
  • 经过邦费罗尼校正的研究性残差的P值

我们可以看到,数据集中第一个观测点的studentized残差为-1.121201,第二个观测点的studentized残差为0.954871,以此类推。

可视化:

现在,让我们来看看 studentized残差的可视化情况。在matplotlib的帮助下,我们可以绘制预测变量值与相应的studentized残差图。

示例:

# Python program to draw the plot
# of stundenterized resiual
 
# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
 
# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})
 
# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()
 
# Producing studenterized residual
result = simple_regression_model.outlier_test()
 
# Defining predictor variable values and
# studentized residuals
x = dataframe['Score']
y = result['student_resid']
 
# Creating a scatterplot of predictor variable
# vs studentized residuals
plt.scatter(x, y)
plt.axhline(y=0, color='black', linestyle='--')
plt.xlabel('Points')
plt.ylabel('Studentized Residuals')
 
# Save the plot
plt.savefig("Plot.png")

输出:

如何在Python中计算 Studentized Residuals?

Plot.png:

如何在Python中计算 Studentized Residuals?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程