import pandas as pd
media=PD.read_CSV(media.CSV ) )。
media.head () )。
输出结果:
项目目的:在TV Radio Newspaper这三种渠道不同的广告投入情况下,带来的销售额是多少?
一元线性回归
import statsmodels.api as sm
y=media.sales
x=media.TV
x=sm.add_constant(x ) #在参数中放入常数项
model=sm.ols(y,x ).fix ) )
model.summary (
输出结果
image.png
下面介绍上表中的一些参数
Dep.Variable :使用的参数值
模型:要使用的模型
method :使用方法
数据:时间
No.Observations :样本数据的个数
Df Residuals :残差自由度
DF Model :模型自由度
R-squared:R端的值
Adj.R-squared:调整后的r端
F-statistic :F统计量
prob(f-statistic ):f统计的p值
Log-Likelihood :似然
AIC BIC :是衡量模型好坏的指标,越小越好
const :切片项
关于P|t| :t检验的p值,如果p值小于0.05,则认为变量显著
model.params
输出结果
model.params [0] models.params [1] * media.TV
y_hat=model.predict(x ) #得到拟合值
frommatplotlibimportpyplotasplt
PLT.Scatter(x,y,alpha=0.3 ) )。
PLT.xlabel('TV ) ) )。
PLT.ylabel(sales ) )。
PLT.plot(x,y_hat,' r ',alpha=0.9 ) )。
plt.show () )
红线表示拟合模型,蓝点表示原始数据的分布情况
多元线性回归
x1=media[['TV ',' radio ',' newspaper']]
y1=media['sales']
x=sm.add_constant(x1 ) )
model2=sm.ols(y1,x ).fit ) )
model2.summary (
输出结果:
如何向模型添加交互
importstatsmodels.formula.apiassmf
model3=smf.ols (sales至TV * radio newspaper,data=media ).fit ) ) ) )。
创建#TV和radio的交互
如何向模型添加辅助项目
model4=smf.ols (sale至TV radio * *2newspaper ),data=media ).fit
将radio一项转换为二次项