【R语言】回归分析案例:北京市商品房价格影响因素分析 您所在的位置:网站首页 r语言房价分析 【R语言】回归分析案例:北京市商品房价格影响因素分析

【R语言】回归分析案例:北京市商品房价格影响因素分析

2023-09-04 07:14| 来源: 网络整理| 查看: 265

这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。 这里将连续型变量也加进来,进行协方差分析,建立完整的模型。

首先对房价进行对数变换,解决异方差问题: 在这里插入图片描述进行描述性统计分析,各连续型变量之间的相关关系如下:在这里插入图片描述 名义变量的EDA一般做箱型图。

模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 在这里插入图片描述在这里插入图片描述 最终模型残差图: 模型残差图 通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有: 属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比 属性变量的具体影响在此处分析略去。 连续型变量的影响主要为:  绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;  停车位住户比:有较显著的影响,停车位住户比越高,价格越高; 同时,原本为连续型变量的容积率经过离散化变为属性变量后:  容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;  容积率与环线之间存在着交互效应。

rm(list=ls()) #清空当前工作空间 setwd("D:/回归分析") a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a View(a) attach(a) names(a) ##描述性统计 #未做处理的响应变量分布情况 par(mfrow=c(1,1)) hist(price) summary(price) #查看响应变量的描述统计量 #连续型变量描述性统计 windows() pairs(a[,c(6:10)]) #所有连续型变量间的散点图 par(mfrow=c(2,2)) plot(rong,price) #每个连续型因变量与响应变量间的散点图 plot(lv,price) plot(area,price) plot(ratio,price) summary(a[,c(6:10)]) #查看连续型变量的描述统计量 cor(a[,c(6:10)]) #查看连续型变量的相关系数 #属性变量描述性统计 windows() par(mfrow=c(2,3)) boxplot(price~dis) #每个属性变量关于响应变量的箱型图 boxplot(price~wuye) boxplot(price~fitment) boxplot(price~ring) boxplot(price~contype) ##模型建立 #在方差分析模型基础上加入连续型变量 lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio) anova(lm1) #方差分析 summary(lm1) #模型参数估计等详细结果 windows() par(mfrow=c(2,2)) plot(lm1,which=c(1:4)) #回归诊断做残差图 ##变量处理 ###对不显著的变量采用分组的方式希望能达到显著的效果 ##对容积率的处理 windows() n = 4 boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 table(ceiling(rong/n)) #容积率各分组下的样本数 ronggrp=1*(rong>n) #进行二分类 #ronggrp=ceiling(rong/n) table(ceiling(ronggrp)) #容积率二分类下的样本数 windows() boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图 windows() par(mfrow=c(1,2)) boxplot(rong~ring) #容积率与环线箱型图 boxplot(price~ring) #房价与环线箱型图 #加入容积率分组和容积率分组*所在环线交互因子的模型 lm2=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+as.factor(ring)*as.factor(ronggrp)+lv+area+ratio) anova(lm2) #方差分析 summary(lm2) #模型参数估计等详细结果 windows() par(mfrow=c(2,2)) plot(lm1,which=c(1:4)) #回归诊断 ##对小区面积的处理 summary(area) plot(area,price) windows() n = 150000 boxplot(price~ceiling(area/n)) table(ceiling(area/n)) areagrp=1*(area>n) table(ceiling(areagrp)) boxplot(price~ceiling(areagrp)) #加入小区面积分组的模型 lm3=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+as.factor(ring)*as.factor(ronggrp)+lv+as.factor(areagrp)+ratio) anova(lm3) #方差分析 summary(lm3) #模型参数估计等详细结果 windows() par(mfrow=c(2,2)) plot(lm3,which=c(1:4)) #回归诊断 ##变量选择 ##AIC准则下的变量选择 lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节 ##BIC准则下的变量选择 lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节 #选用AIC准则下的模型进行回归诊断 windows() par(mfrow=c(2,2)) plot(lm4.aic,which=c(1:4)) ##数据变换 #box-cox变换 library(MASS) b=boxcox(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio, data=a,lambda=seq(-3, 3, by=0.1)) I=which(b$y==max(b$y)) #定位似然函数最大的位置 lambda = b$x[I] #精确的λ值 #λ接近于0,为模型简洁性,可以直接进行对数变换 logprice


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有