欢迎访问宙启技术站
智能推送

使用Python的statsmodels模块中的ols()函数进行多项式回归

发布时间:2023-12-28 01:07:11

statsmodels是一个Python库,用于拟合线性回归模型。其中的ols()函数可以用来进行多项式回归分析。多项式回归是线性回归的一种扩展形式,通过添加多项式项,可以更好地拟合非线性关系的数据。

下面是一个使用ols()函数进行多项式回归的例子:

首先,我们需要安装并导入必要的库,包括numpy、pandas和statsmodels。

import numpy as np
import pandas as pd
import statsmodels.api as sm

接下来,我们生成一个简单的数据集,包含自变量x和因变量y。这里我们使用二次多项式来生成数据,其中y = 3x^2 + 2x + 1,并添加一些噪声。

np.random.seed(0)  # 设置随机种子以保持结果的一致性

x = np.linspace(-10, 10, 100)  # 生成自变量x的取值范围
y = 3*x**2 + 2*x + 1  # 真实的因变量y

# 添加噪声
noise = np.random.normal(0, 10, 100)
y += noise

# 创建一个DataFrame用于存储数据
data = pd.DataFrame({'x': x, 'y': y})

现在,我们可以使用ols()函数来进行多项式回归分析。我们可以指定多项式的阶数,并使用加号来连接不同项。对于二次多项式(二次多项式包含二次项和一次项),模型可以表示为:y = β0 + β1*x + β2*x^2。

# 添加二次项和一次项
data['x2'] = data['x']**2
data['x1'] = data['x']

# 定义自变量和因变量
X = data[['x', 'x2']]
Y = data['y']

# 添加常数项
X = sm.add_constant(X)

# 拟合回归模型
model = sm.OLS(Y, X).fit()

接下来,我们可以查看回归模型的摘要以获取相关统计信息。

print(model.summary())

输出的摘要包含了回归系数的估计值、标准误差、置信区间、显著性水平等重要信息。

最后,我们可以使用模型来预测新的数据点。首先,需要创建新的数据点的DataFrame,类似于之前的数据集,然后使用predict()函数来进行预测。

new_x = np.linspace(-10, 10, 10)  # 生成新的自变量x的取值范围
new_data = pd.DataFrame({'x': new_x})

# 添加二次项和一次项
new_data['x2'] = new_data['x']**2
new_data['x1'] = new_data['x']

# 添加常数项
new_data = sm.add_constant(new_data)

# 预测新的因变量y
predictions = model.predict(new_data)

通过上述步骤,我们成功使用statsmodels的ols()函数进行了多项式回归分析,并对新数据进行了预测。

总结:在多项式回归中,我们可以使用statsmodels模块中的ols()函数进行分析。首先,需要创建一个DataFrame包含自变量和因变量。然后,我们可以指定多项式的阶数,并使用加号来连接不同项。之后,通过拟合模型并查看摘要,可以获取回归系数的估计值和显著性水平等统计信息。最后,使用模型来预测新的数据点。