相关与回归

1 相关关系

1.1 相关关系与函数关系

函数关系:一个变量的取值由另一个变量唯一确定,即变量间是一一对应的确定关系;当变量取某个数值时,依确定的关系取相应的值,则称的函数,记为

相关关系:一个变量的取值不能由另一个变量唯一确定

1.2 代码演示

例如:分析excel表中,电视广告收入和月销售收入的相关性。使用jupyter进行计算。

数据预处理

# 读取数据
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import statistics
import scipy.stats as stats
test_1=pd.read_excel(r'E:\相关与回归.xlsx',sheet_name='表9-2')
# 数据处理
test_1=test_1.iloc[:,:3] # 取前三列
test_1=test_1[:-1]  # 去除最后一行
test_1.head()
运行结果如下:
月份电视广告费用月销售收入
0135650
1230591
2328570
3418540
4521570
# 描述相关数据
test_1_des=test_1.describe()
test_1_des

 运行结果:

电视广告费用月销售收入
count12.00000012.000000
mean25.500000575.416667
std5.64881333.405112
min17.000000520.000000
25%21.000000563.000000
50%25.000000570.000000
75%30.000000592.000000
max35.000000650.000000

 数据可视化

# 取x轴和y轴
x=test_1['电视广告费用']
y=test_1['月销售收入']
# 绘图
plt.scatter(x,y)
plt.xlim(16,36)
plt.ylim(500,700)
plt.show()

 运行结果:

 分析散点图可以看出,月销售收入与电视广告费用之间存在较高的程度的正向线性关系

相关系数计算

# 利用scipy.stats计算相关系数
r1=stats.pearsonr(x,y)[0]  # pearsonr()  输出r:float类型,相关系数:p-value:float类型
r1

 运行结果:

0.9074083891919941
#利用pandas计算相关系数
data=test_1[['电视广告费用','月销售收入']]
data.corr()

 运行结果:

电视广告费用月销售收入
电视广告费用1.0000000.907408
月销售收入0.9074081.000000

2 回归分析

2.1 一元线性回归

例如:在相关性分析的基础上,对电视广告收入和月销售收入关系进行线性分析。分析使用jupyter进行计算。

数据预处理

# 利用dmatrices生成x,y矩阵
from patsy import dmatrices
data.head(5)

 运行结果:

电视广告费用月销售收入
035650
130591
228570
318540
421570
y2,x2=dmatrices(formula_like='月销售收入~电视广告费用',data=data,return_type='dataframe')
y2.head

 运行结果:

<bound method NDFrame.head of     月销售收入
0   650.0
1   591.0
2   570.0
3   540.0
4   570.0
5   564.0
6   520.0
7   565.0
8   595.0
9   610.0
10  560.0
11  570.0>
x2.head

 运行结果:

<bound method NDFrame.head of     Intercept  电视广告费用
0         1.0    35.0
1         1.0    30.0
2         1.0    28.0
3         1.0    18.0
4         1.0    21.0
5         1.0    24.0
6         1.0    17.0
7         1.0    21.0
8         1.0    32.0
9         1.0    30.0
10        1.0    25.0
11        1.0    25.0>

线性分析 

# 利用statsmodels.api进行线性分析
import statsmodels.api as sm
# 用ols做普通最小二乘,初始化简单的线性回归模型
model=sm.OLS(y2,x2)

# fit函数进行拟合模型,估计回归方程
fit=model.fit()

# 用summary函数保存计算结果
fit.summary()

 运行结果:

OLS Regression Results
Dep. Variable:月销售收入R-squared:0.823
Model:OLSAdj. R-squared:0.806
Method:Least SquaresF-statistic:46.62
Date:Tue, 25 Jul 2023Prob (F-statistic):4.58e-05
Time:15:25:16Log-Likelihood:-48.207
No. Observations:12AIC:100.4
Df Residuals:10BIC:101.4
Df Model:1
Covariance Type:nonrobust
coefstd errtP>|t|[0.0250.975]
Intercept438.581220.48621.4090.000392.935484.227
电视广告费用5.36610.7866.8280.0003.6157.117
Omnibus:1.630Durbin-Watson:2.361
Prob(Omnibus):0.443Jarque-Bera (JB):0.943
Skew:0.330Prob(JB):0.624
Kurtosis:1.795Cond. No.126.

 结果解释

 R-squared: 0.823为判断系数即拟合优度,等于相关系数的平方,介于0,1之间,值越大回归方程的拟合度越高。

Adj. R-squared(调整确定系数):与R-squared类似,但考虑了自变量个数对模型解释能力的惩罚项。在此模型中,Adj. R-squared为0.806。

F-statistic(F统计量):用于评估整体回归模型的显著性。较大的F统计量值表示模型具有统计显著性。在此模型中,F-statistic为46.62,对应的p-value(Prob (F-statistic))为4.58e-05,这意味着该模型具有统计显著性。p-value<a=0.05即说明具有显著的线性关系

F 检验检验变量 x 和 y 之间的线性关系是否显著: 如果我们不仅仅关心x和y之间的相关性,还想知道是否存在线性关系,我们可以进行F检验。该检验可以判断体重与身高之间的线性关系是否显著。如果F检验的结果表明线性关系显著,即p值小于设定的显著性水平,我们可以推断在给定的数据范围内,身高对于体重的变化确实具有影响。

t 检验检验自变量x对因变量y的影响是否显著: 在这个例子中,我们可以针对自变量x(身高)进行单独的t检验,来判断身高对体重的影响是否显著。如果t检验结果表明p值小于设定的显著性水平,我们可以得出结论:在给定的数据样本中,身高对体重的影响是显著的。

另外,电视广告的费用x对应的p值为0.000<a-0,05所以,电视收入费用对月收入的影响是显著的 线性回归方程y=5.3661x+438.5812

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littleFive.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值