多元统计分析实验-线性回归

1、实验目的
通过本实验使学生熟练运用语言编写线性回归分析程序 。
2、 实验内容
有以下两组数据,第一组数据为我国2004年31个地区城镇居民年人均可支配收入和年人均消费性支出数据,第二组数据为随机抽查的36个人的当前年薪y(美元)与开始年薪x1(美元)、工作时间x2(月)、先前工作经验x3(月)和受教育年限x4(年) 。
图1城镇居民年人均可支配收入和年人均消费性支出数据
图2 抽样调查得到的36个人的数据资料
使用这两组数据完成以下内容 。
1、用SPSS软件对第一组数据和第二组数据进行相关系数、回归方程建模;
2、根据SPSS软件结果,用语言对第一组数据求可支配收入和消费性支出两个变量的相关系数;
3、根据SPSS软件结果,用语言对第一组数据建立回归方程模型;
4、根据SPSS软件结果,用语言对第二组数据求y和各x变量的相关系数;
5、根据SPSS软件结果,用语言对第二组数据建立回归方程模型 。
使用SPSS软件进行数据分析:
第一组数据分析
第二组数据分析
2、用语言对第一组数据求可支配收入和消费性支出两个变量的相关系数;
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport statsmodels.api as smdata = http://www.kingceram.com/post/pd.read_csv("数据1.csv",encoding="gbk") #读入数据data.head()print(data.corr())
运行结果:
3、用语言对第一组数据建立回归方程模型;
【多元统计分析实验-线性回归】import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport statsmodels.api as smdata = http://www.kingceram.com/post/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、用语言对第二组数据求y和各x变量的相关系数
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport statsmodels.api as smdata = http://www.kingceram.com/post/pd.read_csv("数据2.csv",encoding="gbk")data = http://www.kingceram.com/post/data.drop(['Unnamed: 0'], axis=1)print("当前年薪与开始年薪相关系数",data['当前年薪'].corr(data['开始年薪']))print("当前年薪与工作时间相关系数",data['当前年薪'].corr(data['工作时间']))print("当前年薪与先前工作经验相关系数",data['当前年薪'].corr(data['先前工作经验']))print("当前年薪与受教育年限相关系数",data['当前年薪'].corr(data['受教育年限']))
运行结果:
5、用语言对第二组数据建立回归方程模型 。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport statsmodels.api as smdata2 = 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]))