线性回归和时间序列分析北京房价影响因素可视化案例

简介: 线性回归和时间序列分析北京房价影响因素可视化案例

目的

房价有关的数据可能反映了中国近年来的变化:

  • 人们得到更多的资源(薪水),期望有更好的房子
  • 人口众多
  • 独生子女政策:如何影响房子的几何结构?更多的卧室,更多的空间

我核心的想法是预测房价。然而,我不打算使用任何arima模型;相反,我将使用数据的特性逐年拟合回归。

结构如下:

  • 数据准备:将数值特征转换为分类;缺失值
  • EDA:对于数值特征和分类特征:平均价格与这些特征的表现
  • 建模:
  • 分割训练/测试给定年份的数据:例如,在2000年分割数据;根据这些数据训练回归模型
  • 然后,在2016年之前的所有新年里,预测每套房子的价值。
  • 用于验证的度量将是房屋的平均价格(即每年从测试样本中获得平均价格和预测值)

数据准备

我们对特征有了非常完整的描述:

  • url:获取数据(字符)的url
  • id:id(字符)
  • Lng:和Lat坐标,使用BD09协议。(数字)
  • Cid:社区id(数字)
  • 交易时间:交易时间(字符)
  • DOM:市场活跃日。(数字)
  • 关注者:交易后的人数。(数字)
  • 总价:(数值)
  • 价格:按平方计算的平均价格(数值)
  • 面积:房屋的平方(数字)
  • 起居室数(字符)
  • 客厅数(字符)
  • 厨房:厨房数量(数字)
  • 浴室数量(字符)
  • 房子高度
  • 建筑类型:包括塔楼(1)、平房(2)、板塔组合(3)、板(4)(数值)
  • 施工时间
  • 装修:包括其他(1)、粗(2)、简单(3)、精装(4)(数值)
  • 建筑结构:包括未清(1)、混合(2)、砖和木(3)、砖混凝土(4)、钢(5)和钢-混凝土复合材料(6)(数值)
  • 梯梯比:同层居民数与电梯数量的比例。
  • 电梯有(1)或没有电梯(0)(数值)
  • 五年期:业主拥有不到5年的财产(数字)

数据清理、特征创建

从最初的数据看:

  • 从网址上,我发现它有位置信息,如chengjiao/101084782030。同样,一个简单的regexp进行省特征提取。
  • 另一个大的数据准备工作是转换一些数字特征,比如地铁,地铁站附近的房子编码为1,相反的情况编码为0。
  • 还有很大一部分DOM缺失。我既不能在建模中使用这个特性,也不能删除NA,但它也会减小数据帧的大小。
#从网址中提取省份
  sapply(df$url, function(x) strsplit(x,'/')[[1]][4])

检查缺失

#缺失数据图
 
  ggplot(data = .,aes(x = V2, y = V1)) + geom_tile(aes(fill = value )) +





  • 如上所述,DOM的很大一部分丢失了。我决定先保留这个特性,然后用中间值来填充缺失的值(分布是非常倾斜的)
  • 否则,buildingType和communityAverage(pop.)中只有几个缺少的值,我决定简单地删除这些值。事实上,它们只占了约30行,而整个数据集的数据量为300k+,因此损失不会太大。
  • 下面我简单地删除了我以后不打算使用的特征。
ifelse(is.na(df$DOM),median(df$DOM,na.rm=T),df$DOM)


用于将数字转换为类别的自定义函数

对于某些特征,需要一个函数来处理多个标签,对于其他一些特征(客厅、客厅和浴室),转换非常简单。

df2$livingRoom <- as.numeric(df2$livingRoom)


似乎buildingType具有错误的编码数字值:

buildingType count
0.048 4
0.125 3
0.250 2
0.333 5
0.375 1
0.429 1
0.500 15
0.667 1
1.000 84541
2.000 137
3.000 59715
4.000 172405
NaN 2021

由于错误的编码值和NA的数量很少,因此我将再次丢弃这些行

df2$renovationCondition <- sapply(df2$renovationCondition, ionCondition)
df2$buildingStructure <- sapply(df2$buildingStructure, makeStructure)
df2$elevator <- ifelse(df2$elevator==1,'has_elevator','no_elevator')


缺失值检察

# 缺失数据图
df2 %>% is.na %>% melt %>% 
  ggplot(data = .,aes(x = Var2, y = Var1)) + geom_tile(aes(fill = value)) +
  scale_fill_manual(values = c("grey20","white")) + theme_minimal(14) +


kable(df %>% group_by(constructionTime) %>% summarise(count=n()) %>% arrange(-count) %>% head(5))
constructionTime count
2004 21145
2003 19409
NA 19283
2005 18924
2006 14854

 

df3 <- data.frame(df2 %>% na.omit())

插补后的最终检查

any(is.na(df3))


## [1] FALSE


探索性分析

由于有数字和分类特征,我将使用的EDA技术有:

  • 数值:相关矩阵
  • 分类:箱线图和地图

我们必须关注价格(单位价格/单位价格)以及总价格(百万元)

totalPrice将是回归模型的目标变量。

数值特征

corrplot(cor(
  df3  ,
  tl.col='black')


评论

  • totalPrice与communityAverage有很强的正相关关系,即人口密集区的房价较高
  • totalPrice与客厅、卫浴室数量有一定的正相关关系。
  • 至于面积变量,我们看到它与上述变量也有很强的相关性:这是有道理的,因为如果房子的面积大,可以建造更多的房间(显而易见)。
  • 其他一些有趣的相关性:communityAverage与建筑时间呈负相关,这意味着在人口密集区建房所需的时间更短

分类特征

地图

  • 中国三级(省)地图
  • 我看了看城郊,它位于北京附近,所以我过滤了那个特定省份的地图
ggplot() + 
  geom_polygon(data = shapefile_test,aes(x = long, y = lat, group = group), 
BeijingLoc <- data.frame('Long'=116.4075,'Lat' = 39.904)


建筑结构

makeEDA('buildingStructure' )


砖木结构的房屋是最昂贵的,几乎是其他类型房屋的两倍


建筑类型

makeEDA('buildingType' )


  • 平房是最昂贵的

装修条件




电梯

  • 价格对电梯的依赖性非常小
  • 住宅的分布与这一特征是相对相等的。

地铁

  • 价格对地铁站附近的依赖性非常小。
  • 住宅的分布与这一特征是相对相等的。

是否满_五年_

makeFeatureCatEDA('fiveYearsProperty', length(unique(df3$fiveYearsProperty)))


  • 对于是否拥有不到5年房产来说,价格的依赖性确实很小
  • 就这一特征而言,房子的分布是相对平等的

区域

相关文章
|
存储 前端开发
Gin-Vue-Admin 前后端获取用户信息方式
Gin-Vue-Admin 前后端获取用户信息方式
684 0
Gin-Vue-Admin 前后端获取用户信息方式
|
人工智能 编解码 安全
如何使用Sora?Sora小白教程一文通
如何使用Sora?Sora小白教程一文通。本文深入探讨了OpenAI于2024年发布的Sora——一款创新的文生视频大模型,详细介绍了其功能、技术原理、精准度、安全性以及对未来影响的全面分析
|
4月前
|
消息中间件 缓存 JSON
1688拍立淘API实战指南:以图搜货解锁B2B采购新效率
1688拍立淘API(alibaba.ai.vision.product.search)通过“以图搜货”技术,助力企业快速匹配同款商品,解决B2B采购中“有图无货号、找货效率低”等痛点。支持图片上传、批量处理与全维度数据返回,结合合规性与高精度,重构供应链寻源模式,提升采购效率十倍以上。
|
JavaScript Linux iOS开发
Motrix:Star46.4k,有了这个开源项目你的烦恼基本少了一半?一款开源功能全面的下载管理器,用上它妈妈再也不用担心下载速度啦~~~
嗨,大家好,我是小华同学。今天为大家介绍一款全能下载管理器——Motrix。它支持HTTP、FTP、BitTorrent等多种协议,拥有简洁易用的界面和强大的下载功能,包括选择性下载、多线程加速、自动更新Tracker列表等,适用于工作、学习和娱乐场景。欢迎关注我们,获取更多优质开源项目和高效工具。
897 15
Motrix:Star46.4k,有了这个开源项目你的烦恼基本少了一半?一款开源功能全面的下载管理器,用上它妈妈再也不用担心下载速度啦~~~
|
前端开发 JavaScript 开发工具
2024年前端开发者的终极工具集
前端开发领域不断演进,新工具层出不穷。为了帮助前端开发者保持领先,本文介绍了2024年最前沿的前端开发工具,包括 VS Code、Webpack、React、Vue.js、Angular、TypeScript、Sass、PostCSS、Figma 和 Netlify。这些工具涵盖了代码编辑、模块打包、UI构建、样式处理、设计与部署等多个方面,能够显著提升开发效率和应用质量。选择合适的工具组合,可助你事半功倍,保持竞争力。
|
安全 关系型数据库 数据库
阿里云RDS PostgreSQL版支持 PG17,还不来体验?
PostgreSQL被誉为最先进的开源数据库,具有强大的扩展性和灵活架构。9月26日,社区官方正式发布了PostgreSQL 17.0版本,在性能、逻辑复制、开发者体验等方面进行了优化。阿里云RDS PostgreSQL 版已支持 PostgreSQL 17.0,并在社区17.0基础上,进行了安全、成本、可运维性等多方面提升,增加多种内核特性及插件特性。
|
机器学习/深度学习 数据采集 人工智能
AI在用户行为分析中的应用:实现精准洞察与决策优化
AI在用户行为分析中的应用:实现精准洞察与决策优化
1815 15
|
数据采集 存储 监控
如何使用 Python 爬取京东商品数据
如何使用 Python 爬取京东商品数据
836 2
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
468 0
|
JSON 前端开发 安全
【Java Web项目】基于WebSocket的Web聊天室
本项目的名称为Web聊天室,即类QQ群组聊天,多个用户可以在同一个群组收发消息进行聊天
【Java Web项目】基于WebSocket的Web聊天室

热门文章

最新文章