Statistics:Python OLS简单一元线性回归之Statsmodels包(二)

Statistics

Python OLS简单一元线性回归之Statsmodels包(二)

续上期 : Python OLS简单一元线性回归之Scipy包(一)

代码

import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt

datas = pd.read_excel('D:\\vscode\\第八章\\顺丰β系数.xlsx',sheet_name='Sheet1',header=2,index_col=0,usecols=4,skip_footer=5) 
datas.head()
datas=datas.dropna()
y = datas.iloc[:, 2] # 因变量为第 4 列数据(注意index_col=0的操作)
x = datas.iloc[:, 3] # 自变量为第 5 列数据
x = sm.add_constant(x) # 若模型中有截距,必须有这一步。假如没有截距项可以不需要这一行代码。
model = sm.OLS(y, x).fit() # 构建最小二乘模型并拟合
model.summary() # 输出回归结果

效果图
在这里插入图片描述
说明:这里我们使用的是statsmodels.api模块,其中表示OLS回归的关键代码是:

model = sm.OLS(y, x).fit() # 构建最小二乘模型并拟合
model.summary() # 输出回归结果

其中model = sm.OLS(y, x).fit() 的参数附加代码进行说明:

import statsmodels.api as sm
model_shjc=sm.OLS(endog=datas.iloc[:,2],exog=datas.iloc[:,3])
result_shjc=model_shjc.fit()
result_shjc.summary()###回归结果

注意:endog(endogenous variable:内生变量);
exog(exogenous variable:外生变量)

预测:比scipy 中scipy.stats linregress 函数的回归分析更强大的是,statsmodels.api模块可以做预测。代码如下:

预测代码

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

predicts = model.predict() # 模型的预测值
x = datas.iloc[:, 3] # 自变量为第 3 列数据
plt.scatter(x, y, label='实际值') # 散点图
plt.plot(x, predicts, color = 'red', label='预测值')
plt.legend() # 显示图例,即每条线对应 label 中的内容
plt.show() # 显示图形

效果图
在这里插入图片描述

附:多元统计分析:statsmodels.api模块可以进行多元统计分析,具体在这里不展开讨论。
代码:

##附:多元统计分析代码
y = datas.iloc[:, 1] # 因变量为第 2 列数据
x = datas.iloc[:, 2:6] # 自变量为第 3 列到第 6 列数据
x = sm.add_constant(x) # 若模型中有截距,必须有这一步
model = sm.OLS(y, x).fit() # 构建最小二乘模型并拟合
model.summary()# 输出回归结果

评价: statsmodels.api模块比scipy 中scipy.stats linregress 函数的回归分析功能更强大,操作起来也比较方便,回归解释summary也更加规范,因此经济学相关专业可能更加常用。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值