首页天道酬勤多元线性回归分析结果解读,多元回归分析数据

多元线性回归分析结果解读,多元回归分析数据

张世龙 05-13 05:10 77次浏览

用文章清单1、概念2、Excel进行多元线性回归1,删除表里不一的非数据项2,分析数据库3,用代码方式实现多元线性回归1,导入软件包2,读取文件3,取出变量4,进行多元线性回归,结果5.5 提取自变量和因变量9,在进行多元线性回归10的线性回归模型的统计学库中实现1,引入函数2,进行预测3,验证4,去除bedroom,再次建模5,分析6,总结7,参考

1 .概念

在回归分析中,如果有两个以上的参数,则称为多元回归。 事实上,一个现象经常与多个因素相关联,通过多个自变量的最佳组合来预测或估计因素变量比仅用一个自变量来预测或估计更有效和现实。 因此,多元线性回归比一元线性回归的实用意义更大。

2 )在excel中进行多元线性回归1,删除表里不一的项,即非数据项

2、分析数据库在数据鼠标外点击右键

然后单击自定义功能区,单击加载项,然后单击继续

单击分析工具库,然后单击“确定”

单击数据,然后单击右边的数据分析

选择回归

在此输入x和y的输入区域

然后生成另一个文件,然后单击

可以看到intercept是切片。 下一行是与参数对应的系数

3、基于编码方式的多元线性回归1, 软件包importpandasaspdimportnumpyasnpimportseabornassnsfromsklearnimportdatasetsfromsklearn.linear _ modelimportlinearrregressklearn ad _ CSV (c :\users\HP\desktop\house _ prices.CSV ) df.info ) #显示列名和数据类型的df.info )

3、提取变量#提取参数data _ x=df [ [ ' area '、' bedrooms '、' bathrooms ' ] ] data _ y=df [ ' price ' ] 4,进行多元线性回归后结果

6、检测异常#异常值处理#================异常值检验函数: iqr z评分两种方法=====================格式' x '可以用带引号的return选择; outlier:异常值数据框upper:上的截止点; lower:下截止点method :检查异常值的方法(可选,默认None为上下截止点法),如果选择z方法,则z默认为2''ifmethod==none:print 使用基于列的上下截止点方法。现在调用函数时,异常的column _ iqr=NP.quantile (data[column] ],0.75 )-NP.quantile ) data [ column 问题3 )存在。NP.quantile(data[column], 0.75 ) #计算上下截止点upper,将lower=(Q3 ) 1.5*column_iqr )、(q1 - 1.5 * column_iqr )检测异常值outlier=data ((data [ cata ]=upper ) ) print ) f '第一点(四分位极差({column_iqr} ) ) print(f ) f )上切割点(upper ),下切割点({lower} ) ) ) retet

n} 列为依据,使用 Z 分数法,z 分位数取 {z} 来检测异常值...') print('=' * 70) mean, std = np.mean(data[column]), np.std(data[column]) upper, lower = (mean + z * std), (mean - z * std) print(f"取 {z} 个 Z分数:大于 {upper} 或小于 {lower} 的即可被视为异常值。") print('=' * 70) # 检测异常值 outlier = data[(data[column] <= lower) | (data[column] >= upper)] return outlier, upper, lower 7,得到异常集并进行丢弃 outlier, upper, lower = outlier_test(data=df, column='price', method='z')#获得异常数据outlier.info(); outlier.sample(5)df.drop(index=outlier.index, inplace=True)#丢弃异常数据 8,取出自变量和因变量 #取出自变量data_x=df[['area','bedrooms','bathrooms']]data_y=df['price'] 9,进行多元线性回归 # 进行多元线性回归model=LinearRegression()l_model=model.fit(data_x,data_y)print('参数权重')print(model.coef_)print('模型截距')print(model.intercept_) 10,结果

4,用线性回归模型的统计学库实现 1,导入函数

数据的预处理都是一样的,只是后面的导入的函数不一样了

# 对名义变量neighborhood进行处理# 设置虚拟变量nominal_data = df['neighborhood']# 设置虚拟变量dummies = pd.get_dummies(nominal_data)dummies.sample() # pandas 会自动帮你命名# 每个名义变量生成的虚拟变量中,需要各丢弃一个,这里以丢弃C为例dummies.drop(columns=['C'], inplace=True)dummies.sample()# 对名义变量style进行处理# 设置虚拟变量nominal_style_data = df['style']# 设置虚拟变量style_dummies = pd.get_dummies(nominal_style_data)style_dummies.sample() # pandas 会自动帮你命名# 每个名义变量生成的虚拟变量中,需要各丢弃一个,这里以丢弃lodge#原因:转化后的虚拟变量需要舍弃一个,才能得到满秩矩阵,可理解为当变量名可划分为n类时,只需要n-1个虚拟变量就能获取所有信息了style_dummies.drop(columns=['lodge'], inplace=True)style_dummies.sample()#数据拼接results = pd.concat(objs=[df, dummies], axis='columns') # 按照列来合并results = pd.concat(objs=[results, style_dummies], axis='columns') # 按照列来合并results.sample(3) 2,进行预测 from statsmodels.formula.api import ols#使用虚拟变量lm = ols('price ~ area + bedrooms + bathrooms + A + B', data=results).fit()lm.summary()

3,检验一下 def vif(df, col_i): """ df: 整份数据 col_i:被检测的列名 """ cols = list(df.columns) cols.remove(col_i) cols_noti = cols formula = col_i + '~' + '+'.join(cols_noti) r2 = ols(formula, df).fit().rsquared return 1. / (1. - r2)test_data = results[['area', 'bedrooms', 'bathrooms', 'A', 'B']]for i in test_data.columns: print(i, '\t', vif(df=test_data, col_i=i))

可以看到bedroom和bathroom相关程度较高

4,去掉bedroom,再次建模 # 去掉bedroom再次建模lm = ols(formula='price ~ area + bathrooms + A + B', data=results).fit()lm.summary()

成功

5,分析

不进行数据处理时,用jupyter和使用excel进行数据分析的结果没有不同,但是数据清理之后差别还是挺大的,在就行了多元共线性检测后,结果更为合理

6,总结

初步了解了多元线性回归的步骤,也清楚了异常数据对于回归方程的影响,明白了Excel和jupyter的差别

7,参考

Excel-一元线性回归和多元线性回归(借助数据分析功能和直接计算)

线性回归分析

, 多元线性回归模型检验,线性回归和岭回归的区别