目录
多元线性回归
多元线性回归是一般线性模型到多个自变量的概括,以及一般线性模型的特例,仅限于一个因变量。
一般线性模型(general linear model, multivariate regression model)是一个统计学上常见的线性模型。
其公式一般写为:
其中Y是一个包含反应变量的矩阵。X是一个包含独立自变量的设计矩阵。B是一个包含多个估计参数的矩阵。U 是一个包含误差和剩余项的矩阵。通常假设误差在测量之间是不相关的,并遵循多元正态分布。如果误差不遵循多元正态分布,则可以使用广义线性模型来放宽关于Y和U的假设。
一般线性模型包含许多不同的统计模型:ANOVA,ANCOVA,MANOVA,MANCOVA,普通线性回归,t检验和F检验。一般线性模型是对多于一个因变量的情况的多元线性回归的推广。如果Y,B和U是列向量,则上面的矩阵方程将表示多元线性回归。
使用一般线性模型的假设检验可以通过两种方式进行:多变量或多个独立的单变量检验。在多变量测试中,Y的列一起测试,而在单变量测试中,Y列独立地测试,即作为具有相同设计矩阵的多个单变量测试。
意义:事物的联系也是多方面的,而影响事物发展的因素是多样的。由多个自变量的最优组合共同来估计因变量,比单一的自变量预测更有效,更符合实际。
一、问题分析
通过对某段时间某地区的已售房价数据进行线性回归分析,探索影响房价高低的主要因素,并对这些影响因素的影响程度进行分析,利用分析得到的数据,对未来房价的趋势和走向进行预测。
本文探究街区(neighborhood),房屋面积(area),卧室(bedrooms),浴室数(bathrooms),房屋风格(style)与 房价(price)的关系以及影响大小。
二、数据预处理(excel)
1.数据清洗
原始数据中,存在有房屋数据存在 没有卧室,没有浴室或房屋面积不合理等疑似错误数据。
筛选
去掉bedroom为0
bathroom同理
将area值小于1000清洗
2.数据全数值化
neighborhood
和style
为非数值型数据,需要转换成数值型数据进行回归分析。
-A,B,C -1,2,3
-ranch、victorian、lodge -10、20、30
替换A 为 1
B:
C:
ranch:
victorian:
lodge:
三、使用EXcel回归
回归实现
方法
房价(price)
作为因变量其他变量作为自变量
回归分析
结果
Multiple R:相关系数R,用来衡量自变量x与y之间的相关程度的大小。
R Square:决定系数R方,反映因变量的全部变异能通过回归关系被自变量解释的比例。可以通俗地理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差。
本次数据集回归分析得到的R =0.778,表明x和y之间的关系为高度相关。
本次数据集回归分析得到的R方 = 0.605,说明自变量能解释因变量的60.5%
自变量 含义 Coefficients(系数)
X Variable 1 街区(neighborhood) 9768.8665605825
X Variable 2 房屋面积(area) 345.152705630739
X Variable 3 卧室数(bedrooms) -1733.14723959822
X Variable 4 浴室数(bathrooms) 8112.15494579683
X Variable 5 房屋风格(style) -455.450901280214
回归方程为: y=9768.8x1+345.1x2-1733.1x3+8112.1x4-455.4x5-6497.0
由上可以看出房屋面积x2的P值远小于显著性水平0.05房屋面积(area)
与房价(price)
相关。卧室数(bedrooms)
和浴室数(bathrooms)
的P值远大于显著性水平0.05,说明这卧室数(bedrooms)
和浴室数(bathrooms)
与房价(price)
相关性较弱。
四、使用代码实现回归
ⅠStatsmodels
1.数据处理
导入数据
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('house_prices.csv')
df.info(); df.head()
异常值处理
# 异常值处理