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

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

线性回归和时间序列分析北京房价影响因素可视化案例(上):https://developer.aliyun.com/article/1490584


建筑类型

makeEDA('buildingType' )


  • 平房是最昂贵的

装修条件

电梯

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

地铁

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


是否满_五年_

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


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

区域


回归模型


策略


  • 从tradeTime中提取年份和月份
  • 按年度和月份分组,得到房屋的数量和均价
  • 拆分数据集:
  • 对于年[2010-2017]=在这组年上训练并运行回归模型
  • 对于>2017年:逐月对测试样本并预测平均价格


平均价格总览


首先我们需要看看我们想要预测什么

df3$year <- year(df3$tradeTimeTs)
df3$month <- month(df3$tradeTimeTs)


df3 %>% filter(year>2009) %>% group_by(monthlyTrad) %>% 
  summarise(count=n(), mean = mean(price)) %>% 
  ggplot(aes(x=monthlyTradeTS, y= mean)) +


  • 平均价格上涨至2017年中期,然后迅速下降
  • 同时,房屋数量随着价格的上涨而增加,而且现在房屋交易的数量也随着价格的上涨而减少。


准备训练/测试样本


我在2017-01-01拆分数据。对于所有样本,我需要把分类特征变成伪变量。

df_train <- data.frame(df  %>% filter(year>2009 & year<2017))
df_test <- data.frame(df %>% filter(year>=2017))
as.data.frame(cbind(
  df_train %>% select_if(is.numeric) %>% select(-Lng, -Lat, -year, -month),
  'bldgType'= dummy.code(df_train$buildingType),
  'bldgStruc'= dummy.code(df_train$buildingStructure),
  'renovation'= dummy.code(df_train$renovationCondition),
  'hasElevator'= dummy.code(df_train$elevator),


在这一步中,我只训练一个线性模型

regressors<-c('lm')
 
 Control <- trainControl(method = "cv",number = 5, repeats=3)
for(r in regressors){
    cnt<-cnt+1
     res[[cnt]]<-train(totalPrice ~., data = train ,method=r,trControl =  Control)


r^2在0.88左右,不错。让我们看看细节。


训练精度

g1<-ggplot(data=PRED,aes(x=Prediction,y=True)) + geom_jitter() + geom_smooth(method='lm',size=.5) +
    #计算指标
    mse <- mean((PRED$True-PRED$Prediction)^2)
    rmse<-mse^0.5
    SSE = sum((PRED$Pred - PR


## [1] "MSE: 15952.845934 RMSE : 126.304576 R2 :0.795874"


  • 所以看起来残差还不错(分布是正态的,以0为中心),但对于低价格来说似乎失败了。


训练和测试样本的预测与时间的关系


  • 基本上与上述相同,但我将重复预测所有月份的训练数据
  • 我的目标指标是平均房价。
  • 训练是在10多年的训练样本中完成的,因此逐月查看预测将非常有趣。
# 训练样本->训练精度
 
for (i in 1:length(dates_train)){
     current_df <- prepareDF(current_df)
     current_pred <- mean(predict(res[[1]],current_df))
 
#运行测试样本-->测试精度
 
for (i in 1:length(dates_test)){
     current_df <- prepareDF(current_df)
    current_pred <- mean(predict(res[[1]],current_df))


RES %>% reshape2::melt(id=c('date','split')) %>% 
  ggplot(aes(x=date,y=value)) + geom_line(aes(color=variable, lty=split),size=1) +


  • 预测对于2012年之后的数据确实非常好,这可能与有足够数据的月份相对应


改进


地理位置作为特征


  • 下面是一个有趣的图;它显示了每个位置的总价格。在二维分布的中心,价格更高。
  • 这个想法是计算每个房子到中心的距离,并关联一个等级/分数
BeijingLoc <- data.frame('Long'=116.4075,'Lat' = 39.904)
df3 %>% ggplot(aes(x=Lng,y=Lat)) + geom_point(aes(color=price),size=.1,alpha=.5)  + 
  theme(legend.position = 'bottom') +


相关文章
|
机器学习/深度学习 数据采集 算法
大数据分析案例-基于随机森林模型对北京房价进行预测
大数据分析案例-基于随机森林模型对北京房价进行预测
812 0
大数据分析案例-基于随机森林模型对北京房价进行预测
|
6月前
|
机器学习/深度学习 数据可视化 Python
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
441 0
|
6月前
|
机器学习/深度学习 数据可视化 安全
Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化(下)
Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化
|
6月前
|
机器学习/深度学习 数据可视化 Python
Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化(上)
Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言SVM、决策树与因子分析对城市空气质量分类与影响因素可视化研究
R语言SVM、决策树与因子分析对城市空气质量分类与影响因素可视化研究
|
6月前
|
数据可视化 JavaScript 定位技术
线性回归和时间序列分析北京房价影响因素可视化案例(上)
线性回归和时间序列分析北京房价影响因素可视化案例
|
6月前
|
传感器 数据可视化 定位技术
【视频】R语言用线性回归预测共享单车的需求和可视化|数据分享
【视频】R语言用线性回归预测共享单车的需求和可视化|数据分享
【视频】R语言用线性回归预测共享单车的需求和可视化|数据分享
|
6月前
|
存储
【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
|
6月前
|
数据可视化 算法 数据挖掘
R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数
R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数
|
6月前
|
数据可视化
数据报告分享|SPSS基于多元回归模型的电影票房预测
数据报告分享|SPSS基于多元回归模型的电影票房预测
下一篇
无影云桌面