基于Jupyter完成(自行推导公式)多元线性回归的编程

一、导入文本

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
df = pd.read_excel("D:\\面积-距离-车站.xlsx")

在这里插入图片描述

x1 = df["店铺面积"]
x2 = df["车站距离"]
y = df["月营业额"]

店铺面积和营业额的关系图

plt.scatter(x1,y)#散点图绘制原始数据x,y
#plt.plot(x1,y,color='r')#绘制直线
plt.show()

在这里插入图片描述

车站距离和营业额的关系图

plt.scatter(x2,y)#散点图绘制原始数据x,y
#plt.plot(x1,y,color='r')#绘制直线
plt.show()

在这里插入图片描述

二、计算下图

在这里插入图片描述

#计算上图
data = np.genfromtxt("D:\\面积-距离-车站.csv",delimiter=",")
x1=data[1:11,0]#店铺面积
x2=data[1:11,1]#车站距离
y=data[1:11,2]#月营业额

#月营业额的转置矩阵
y1=np.array([y]).T

#店铺面积,转置矩阵
x11=np.array([x1]).T

车站距离,转置矩阵
x22=np.array([x2]).T

#创建矩阵A
A=np.array([[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]])
A1=A.T

#将列上合并
B=np.vstack((x1,x2,A1))

#行上合并
C=np.hstack((x11,x22,A))

#矩阵B与矩阵C相乘
D=np.dot(B,C)

#店铺面积
#D的逆矩阵
D_=np.linalg.inv(D)

#最近的车站的距离
E=np.dot(D_,B)

#偏回归系数
F=np.dot(E,y1)

a1=F[0,0]
a2=F[1,0]
b=F[2,0]
print("系数a1=",a1)
print("系数a2=",a2)
print("截距b=",b)
print("多元线性回归方程为:y=",a1,"x1+(",a2,")x2+",b)

在这里插入图片描述

三、计算R²

#求月营业额的总和和平均值
sum_y=0
average_y=0
for i in range (0,len(y)):
    sum_y=sum_y+y[i]
average_y=sum_y/len(y)
print("月营业额的总和:",sum_y)
print("月营业的平均值",average_y)

#求预测值sales1
sales1=[]
for i in range(0,len(y)):
    sales1.append(a1*x1[i]+a2*x2[i]+b)

sum_y1=0
average_y1=0
for i in range (0,len(sales1)):
    sum_y1=sum_y1+sales1[i]
average_y1=sum_y1/len(sales1)
print("预测月营业额的总和:",sum_y)
print("预测月营业的平均值",average_y1)

#(y-y平均)
a=0
for i in range (0,len(y)):
    a=y[i]-average_y+a
    
#(y1-y1平均)
c=0
for i in range(0,len(sales1)):
    c=sales1[i]-average_y1+c

#(y-y平均)²,计算Syy
Syy=0
for i in range(0,len(y)):
    Syy=Syy+(y[i]-average_y)*(y[i]-average_y)
    
#(y1-y1平均)²,计算Sy1y1
Sy1y1=0
for i in range (0,len(sales1)):
    Sy1y1=Sy1y1+(sales1[i]-average_y)*(sales1[i]-average_y1)

#(y-y的平均)*(y1-y1的平均),计算Syy1
Syy1=0
for i in range (0,len(y)):
    Syy1=Syy1+(y[i]-average_y)*(sales1[i]-average_y1)

#求R平方
R=R=Syy1/((Syy*Sy1y1)**0.5)
R2=R*R
print("判定系数R²=",R2)

在这里插入图片描述

发布了17 篇原创文章 · 获赞 45 · 访问量 494

猜你喜欢

转载自blog.csdn.net/qq_42585108/article/details/105089965
今日推荐