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()
运行结果如下:
月份 电视广告费用 月销售收入 0 1 35 650 1 2 30 591 2 3 28 570 3 4 18 540 4 5 21 570
# 描述相关数据
test_1_des=test_1.describe()
test_1_des
运行结果:
电视广告费用 月销售收入 count 12.000000 12.000000 mean 25.500000 575.416667 std 5.648813 33.405112 min 17.000000 520.000000 25% 21.000000 563.000000 50% 25.000000 570.000000 75% 30.000000 592.000000 max 35.000000 650.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.000000 0.907408 月销售收入 0.907408 1.000000
2 回归分析
2.1 一元线性回归
例如:在相关性分析的基础上,对电视广告收入和月销售收入关系进行线性分析。分析使用jupyter进行计算。
数据预处理
# 利用dmatrices生成x,y矩阵
from patsy import dmatrices
data.head(5)
运行结果:
电视广告费用 月销售收入 0 35 650 1 30 591 2 28 570 3 18 540 4 21 570
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: OLS Adj. R-squared: 0.806 Method: Least Squares F-statistic: 46.62 Date: Tue, 25 Jul 2023 Prob (F-statistic): 4.58e-05 Time: 15:25:16 Log-Likelihood: -48.207 No. Observations: 12 AIC: 100.4 Df Residuals: 10 BIC: 101.4 Df Model: 1 Covariance Type: nonrobust
coef std err t P>|t| [0.025 0.975] Intercept 438.5812 20.486 21.409 0.000 392.935 484.227 电视广告费用 5.3661 0.786 6.828 0.000 3.615 7.117
Omnibus: 1.630 Durbin-Watson: 2.361 Prob(Omnibus): 0.443 Jarque-Bera (JB): 0.943 Skew: 0.330 Prob(JB): 0.624 Kurtosis: 1.795 Cond. 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