1、实验目的
通过本实验使学生熟练运用python语言编写线性回归分析程序。
2、 实验内容
有以下两组数据,第一组数据为我国2004年31个地区城镇居民年人均可支配收入和年人均消费性支出数据,第二组数据为随机抽查的36个人的当前年薪y(美元)与开始年薪x1(美元)、工作时间x2(月)、先前工作经验x3(月)和受教育年限x4(年)。
图1城镇居民年人均可支配收入和年人均消费性支出数据
图2 抽样调查得到的36个人的数据资料
使用这两组数据完成以下内容。
1、用SPSS软件对第一组数据和第二组数据进行相关系数、回归方程建模;
2、根据SPSS软件结果,用python语言对第一组数据求可支配收入和消费性支出两个变量的相关系数;
3、根据SPSS软件结果,用python语言对第一组数据建立回归方程模型;
4、根据SPSS软件结果,用python语言对第二组数据求y和各x变量的相关系数;
5、根据SPSS软件结果,用python语言对第二组数据建立回归方程模型。
第一组数据分析
第二组数据分析
2、用python语言对第一组数据求可支配收入和消费性支出两个变量的相关系数;
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import statsmodels.api as sm
data = pd.read_csv("数据1.csv",encoding="gbk") #读入数据
data.head()
print(data.corr())
运行结果:
3、用python语言对第一组数据建立回归方程模型;
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import statsmodels.api as sm
data = pd.read_csv("数据1.csv",encoding="gbk") #读入数据
data.head()
X = data['可支配收入'].values.reshape(-1,1) #自变量
Y = data['消费性支出'].values.reshape(-1,1) #因变量
reg = LinearRegression()
reg.fit(X, Y)
a = reg.coef_ #系数
b = reg.intercept_ #常量
print("回归系数为",a," 常量为",b)
print("回归方程为: Y(消费性支出) = {:.5} * X(可支配收入) + {:.5}".format(a[0][0], b[0]))
运行结果:
4、用python语言对第二组数据求y和各x变量的相关系数
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import statsmodels.api as sm
data = pd.read_csv("数据2.csv",encoding="gbk")
data = data.drop(['Unnamed: 0'], axis=1)
print("当前年薪与开始年薪相关系数",data['当前年薪'].corr(data['开始年薪']))
print("当前年薪与工作时间相关系数",data['当前年薪'].corr(data['工作时间']))
print("当前年薪与先前工作经验相关系数",data['当前年薪'].corr(data['先前工作经验']))
print("当前年薪与受教育年限相关系数",data['当前年薪'].corr(data['受教育年限']))
运行结果:
5、用python语言对第二组数据建立回归方程模型。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import statsmodels.api as sm
data2 = pd.read_csv("数据2.csv",encoding="gbk")
data2.head()
data2.drop(['Unnamed: 0'], axis=1)
Xs = data.drop(['当前年薪','性别'], axis=1)
Y = data['当前年薪'].values.reshape(-1,1)
reg2 = LinearRegression()
reg2.fit(Xs, Y)
#系数
a = reg2.coef_
#常量
b = reg2.intercept_
print("回归系数为",a," 常量为",b)
print("线性回归方程为: Y(当前年薪) = {:.5} + {:.5}*开始年薪 + {:.5}*工作时间 + {:.5}*先前工作经验 + {:.5}*受教育年限".format(reg2.intercept_[0], reg2.coef_[0][0], reg2.coef_[0][1], reg2.coef_[0][2],reg2.coef_[0][3]))
运行结果:
参考:python线性回归(其中 statsmodels.api 里的summary()能输出模型评估,与spss的结果基本一致)
https://blog.csdn.net/hubingshabi/article/details/80172608
相关代码及数据:蓝奏云