Statsmodels之OLS回归

目录

Statsmodels基本介绍

Statsmodels 是 Python 中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检验等等的功能。Statsmodels 在计量的简便性上是远远不及 Stata 等软件的,但它的优点在于可以与 Python 的其他的任务(如 NumPy、Pandas)有效结合,提高工作效率。在本文中,我们重点介绍最回归分析中最常用的 OLS(ordinary least square)功能。

OLS 回归

假设模型为:
Y = W 0 X 0 + W 1 X 1 + W 2 X 2 + . . . + W n X n Y=W_0X_0 +W_1X_1+W_2X_2+...+W_nX_n Y=W0X0+W1X1+W2X2+...+WnXn

statsmodels.OLS 是 statsmodels.regression.linear_model 里的一个函数。它的输出结果是一个statsmodels.regression.linear_model.OLS,只是一个类,并没有进行任何运算。在 OLS 的模型之上调用拟合函数 fit(),才进行回归运算,并且得到statsmodels.regression.linear_model.RegressionResultsWrapper,它包含了这组数据进行回归拟合的结果摘要。调用 params 可以查看计算出的回归系数 w_0,w_1,...,w_n。其中sm.add_constant()用于生成常数项,它会在一个 array 左侧加上一列 1。

实战

实战1:

python 复制代码
# 导入第三方模块
import pandas as pd
import statsmodels.api as sm

income = pd.read_csv('Salary_Data.csv')
print(income.head())
# 利用收入数据集,构建回归模型
fit = sm.formula.ols('Salary ~ YearsExperience', data = income).fit()
# 返回模型的参数值
print(fit.params)

实战2:

python 复制代码
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt # type: ignore

# 生成模拟数据
np.random.seed(12)
square_feet = np.random.randint(800, 2500, 50)
price = 150000 + 300 * square_feet + np.random.normal(0, 50000, 50)

# 创建数据框
df = pd.DataFrame({'SquareFeet': square_feet, 'Price': price})

# 添加常数列
X = sm.add_constant(df['SquareFeet'])

# 拟合线性回归模型
model = sm.OLS(df['Price'], X).fit()

# 打印模型摘要
print(model.summary())

# 绘制拟合结果
plt.scatter(df['SquareFeet'], df['Price'], label='Data')
plt.plot(df['SquareFeet'], model.predict(X), color='red', label='Fitted Line')
plt.xlabel('Square Feet')
plt.ylabel('Price')
plt.title('Linear Regression: House Price vs. Square Feet')
plt.legend()
plt.show()


相关推荐
FIT2CLOUD飞致云16 分钟前
MaxKB+MinerU:通过API实现PDF文档解析并存储至知识库
人工智能·开源
Swiler21 分钟前
数据结构第2问:什么是算法?
数据结构·人工智能·算法
AI扶我青云志25 分钟前
BERT和GPT和ELMO核心对比
人工智能·gpt·bert
MQ_SOFTWARE26 分钟前
AI大模型前沿:Muyan-TTS开源零样本语音合成技术解析
人工智能·开源
一碗绿豆汤35 分钟前
JAVA+AI教程-第四天
java·开发语言·人工智能
月吟荧静1 小时前
05动手学深度学习(下)
人工智能·深度学习
I_have_a_lemon1 小时前
前端神器推荐——DeepSite免费搭建网页只要1分钟!
前端·人工智能
AI训练师1 小时前
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
人工智能
金井PRATHAMA2 小时前
广泛分布于内侧内嗅皮层全层的速度细胞(speed cells)对NLP中的深层语义分析的积极影响和启示
人工智能·神经网络·自然语言处理·知识图谱