- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40220 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12777
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析
2 X$ z7 d3 {/ o1 B( K这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。! \/ b0 s* } @+ E+ e
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
' i( s* s7 G5 i" B5 p1 w4 s行描述性统计分析,各连续型变量之间的相关关系如下:4 _/ i7 @4 U4 b. Y& G
![]()
) l" b* N2 i7 e名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
; h& h: L+ K# R+ @& Q - F# t3 K( j$ a! h6 k( ]9 ~* r
P# V* b- K/ g, T& P4 h- a, W
最终模型残差图:
$ P( I: Q" ]. x) W- G 4 _: Y0 J& p, `' t" n
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
' S. l0 N" S% F- |属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
& q5 d. M. j9 H: I: g属性变量的具体影响在此处分析略去。+ j6 v; y8 Z1 t: P
连续型变量的影响主要为:! f6 P8 l$ {. @" |- s; J& q
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;
: e8 e3 k$ _0 {( j) s 停车位住户比:有较显著的影响,停车位住户比越高,价格越高;6 ^; w" H5 J9 S: e
同时,原本为连续型变量的容积率经过离散化变为属性变量后:% D5 J" h- z8 \% i, E* Q
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
0 F3 M5 r' x" I6 A1 e 容积率与环线之间存在着交互效应。3 Q' w0 D9 V2 ~# e
rm(list=ls()) #清空当前工作空间5 v4 g, O2 z8 S5 U
setwd("D:/回归分析")3 X" c( I4 v* q
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a
! n8 U! r* A1 |View(a)
% x( Z3 k# S4 m* q; O. @% jattach(a)
* Y" l/ f/ l' T z" X) ynames(a)
5 } G j w# r0 }. L! ^6 L! K6 X: O
8 h# [7 o9 S+ k7 r##描述性统计1 V% i/ X7 j& i" T# Q% c6 }8 B
' y: C1 q6 M$ T* u7 Z
* z+ k' t8 H% @ `6 _: R4 S
#未做处理的响应变量分布情况
/ u2 X. A! r$ Apar(mfrow=c(1,1))
' g$ a) ]8 c" _6 ~. Fhist(price)4 l5 X9 e5 m& ^/ I7 g0 @- b# @2 Q) `
summary(price) #查看响应变量的描述统计量' j, k8 A0 \+ g5 x+ R+ j0 g
#连续型变量描述性统计
' |% Z& h9 E( w, I: y; }windows()
5 _! g# j1 l( e& Zpairs(a[,c(6:10)]) #所有连续型变量间的散点图! ^" Y/ `7 [) k9 D* G
par(mfrow=c(2,2)) R; k6 x) a* _: G, I$ P
plot(rong,price) #每个连续型因变量与响应变量间的散点图
% S# q4 f8 X) W" mplot(lv,price)
. e/ {0 q" F. [plot(area,price)9 r+ L+ N& w) Y, D3 C
plot(ratio,price); w5 S" |+ |7 ?1 ~" f3 K7 n
summary(a[,c(6:10)]) #查看连续型变量的描述统计量
' n9 @/ D7 V$ ~0 V z( j$ U/ Dcor(a[,c(6:10)]) #查看连续型变量的相关系数+ ~# v6 W4 {! t# b8 J% L5 ]9 R
#属性变量描述性统计& ^$ L2 X' g% [$ T
windows()0 q# ?, }4 I. s! y
par(mfrow=c(2,3)) ( i/ \( g9 o' T( W2 d1 c! k
boxplot(price~dis) #每个属性变量关于响应变量的箱型图
+ q. i; p* G3 {1 cboxplot(price~wuye) F! ^ X1 E& c
boxplot(price~fitment) # p+ `& S$ b% o! J* i3 b* h3 U7 O
boxplot(price~ring) 7 ^8 |, m5 t! g! |' q5 ]+ S4 d
boxplot(price~contype)4 m$ z& t/ S% J/ N) U- i
5 F8 n, l r1 O
B% _4 ]" _/ {3 E4 R- Y4 A6 O0 ?' w6 N5 [8 G: O8 H
! ], O0 o u" @##模型建立# H% B0 u3 }5 \- D
* _% D; {6 c+ g. I2 D3 ~" A7 i1 I
5 [6 z! ?, |- C! B4 X; d# }: u7 q
#在方差分析模型基础上加入连续型变量
& O- \9 a4 ?; V$ n! |3 k. ` elm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
3 K/ V4 x; x U! N. H0 Uanova(lm1) #方差分析4 h, T- {8 m- f! Q; ~9 R. F
summary(lm1) #模型参数估计等详细结果7 i, Y" l# t% @2 `% ?+ G
windows()
2 F7 O7 ]7 o5 N( g3 W. Gpar(mfrow=c(2,2))
. ~( ~' a6 g3 e- B' Lplot(lm1,which=c(1:4)) #回归诊断做残差图
5 l( |/ [% r. h$ x+ ^% y7 b
! i1 f2 ?$ n: \5 W# S
% n& c( ? t2 a. E; n: I4 b
" Y7 a* W! a+ _0 I( `" m+ }/ e
##变量处理) s- N! M% d6 l b# M
& `/ F+ @) z$ G% A+ R) R
3 v* q- o' O& e( ~" R###对不显著的变量采用分组的方式希望能达到显著的效果% N6 S6 _0 a+ |, p" t
##对容积率的处理- ^1 T1 _8 q/ ~/ k7 W" @
windows()) o% z8 c+ m2 _- d0 V; a1 N
n = 4
* g6 Z8 ]& U9 q, Z% qboxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
/ F0 V8 S7 r% l9 ~table(ceiling(rong/n)) #容积率各分组下的样本数
+ p: e6 J" O. M9 _0 r& _ronggrp=1*(rong>n) #进行二分类8 Q: L% A- T7 I1 U* K, v2 }
#ronggrp=ceiling(rong/n) 0 L) o7 T- Y* O$ O
table(ceiling(ronggrp)) #容积率二分类下的样本数' ?. x+ T: w( Y+ v- y, a' D4 v& p Y. I
windows()
2 Y' O1 E0 W, Q. k7 ~) ~* k! f! \boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图
. N7 U# H( O9 R4 h, t4 Zwindows()1 g0 o# e+ S- A. X) P( r7 `7 O
par(mfrow=c(1,2))
2 [( Q# |8 w! {7 {7 N8 i% F$ Fboxplot(rong~ring) #容积率与环线箱型图
# L3 \6 p& n) ?8 P+ j `boxplot(price~ring) #房价与环线箱型图
6 U. k) E4 q# X% I$ [7 N( U* D#加入容积率分组和容积率分组*所在环线交互因子的模型
3 |2 U9 @0 V9 klm2=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)
# O; s' T- Q6 |1 ianova(lm2) #方差分析
W! Q7 |+ ~* k$ M1 zsummary(lm2) #模型参数估计等详细结果
8 q0 W3 ^% Z u4 i% Y. w* _9 Fwindows()+ L; s" G* W' t5 g
par(mfrow=c(2,2)). e2 {3 F4 ]2 d1 W; @7 u) q* l
plot(lm1,which=c(1:4)) #回归诊断! ~# \3 X9 T# R' T3 _' }
1 ?! r$ y, V7 i4 N9 a/ d4 H" |
% Z! z- k# z( H8 O. ?5 D##对小区面积的处理7 E& u* O$ o7 z: E4 i7 c
summary(area)
( q, w1 J% b' r r0 k. R$ Qplot(area,price)
6 `4 p1 d: J J Q1 f8 Q0 A$ [- |( Wwindows()" Y# z$ s9 e* s* z5 @& J* B9 _
n = 150000
K4 {* \5 G0 \- H/ I/ zboxplot(price~ceiling(area/n))
# E: q0 [# C- stable(ceiling(area/n))
" W% G1 o0 t6 v7 \6 _areagrp=1*(area>n)
+ [ r' b# h( @9 Ztable(ceiling(areagrp))7 G$ `2 f* W# g1 \" F }
boxplot(price~ceiling(areagrp))
8 f/ h3 q0 s- ^9 @#加入小区面积分组的模型
* E2 Z* n& h9 ]* e) _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)" b; e( _6 G- W; d1 j; L3 x- j/ h
anova(lm3) #方差分析- ]1 Y p3 z) m$ t7 N
summary(lm3) #模型参数估计等详细结果' K; F1 n0 \& u5 H2 Q9 Y
windows()
6 o, F* u) ?2 e5 K9 n5 q( kpar(mfrow=c(2,2))6 `2 u/ p# b |# \0 z" Y
plot(lm3,which=c(1:4)) #回归诊断
" N" k3 S* R- K2 C
0 i7 k/ M9 e' s. t+ w Z) t7 T
" U* Z4 @$ [% n: k$ c8 J4 M8 Y##变量选择# ]7 L# D, _8 K! {
4 _" N2 P( X$ c3 g A8 Y8 y8 S- @ U4 R
##AIC准则下的变量选择
Q+ U" e( J+ g/ llm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
: Z( U/ T! u8 T1 @( E3 H) D ~summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
% M+ i5 ?% ]' a# ^ s4 y; h##BIC准则下的变量选择% E/ ~: e5 j6 Q& C& l+ d
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
- @4 p+ g# d. X) z# H P7 E Q4 [summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
4 Y6 a. Y( d; k
5 B, Y0 i, `. z8 H# I9 g( _' \
5 y8 Y, g% i9 Y3 y1 b( A/ e#选用AIC准则下的模型进行回归诊断: T' q! i0 W' Y# F0 \% }6 S
windows()9 ^1 b! W ^1 w( x1 a
par(mfrow=c(2,2))
4 V2 J% J: v p+ e' Hplot(lm4.aic,which=c(1:4)) % V, G9 F3 [* M; i# H" U5 z: w( X
0 ]- V* l( Q$ n) c |. g+ A
: Y. w! K; L- [7 q) j
4 w) f) `% [7 Z# e
* K2 H0 T6 N# G( H; ]
##数据变换 ?3 ^7 O- {' E7 ?% R3 d
6 q+ f/ s; H' u9 L% ~# z4 j6 y$ Z
. H. G# u% A$ f6 Y#box-cox变换
8 J/ `" J0 I7 g6 ilibrary(MASS)+ H; S Z2 H5 r! ~ ?
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))
& C7 L8 m) q1 i9 ?1 S/ t% vI=which(b$y==max(b$y)) #定位似然函数最大的位置
$ d% g, P& k( p5 c: u& r; {% Q! }8 a0 M9 W# Ylambda = b$x[I] #精确的λ值
* l) H9 g L6 k. x' t#λ接近于0,为模型简洁性,可以直接进行对数变换- C7 l9 J# U3 m4 R
logprice <- log(price)1 @8 h; L, P8 F8 D1 a
hist(logprice): ~2 w. q- Y+ k/ a: y
3 W6 h& V, k4 Q& W/ i0 B: J3 w; Q
* ? J! J# \0 G& O6 `6 q: O##最终模型与诊断
7 z" L8 v6 g- v5 S
@* j3 c6 R! n) f. H3 ~6 S; I4 T7 C; V5 ?3 I
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
2 ?3 b# ]* U# n, `' G" `$ a2 dwindows()
5 p' W: X2 {0 `8 u" h; s" ~( ppar(mfrow=c(2,2))
, J' ?) @* v s$ s6 Wplot(lm6,which=c(1:4))5 x( e" t( E. ?/ Y! R* _0 K4 n
anova(lm6)
4 @6 } \5 _' m. ?4 Zsummary(lm6) }) S8 W# _: }. L: j" L
y% d z3 K# L/ m3 i; S5 D/ y" `) V; {3 q
2 k+ ?! Z4 l a# Y" V) O% M- E
请关注数学中国网微博和数学中国公众号,联系QQ 3243710560
! _- n+ Y& S A& R1 V, s& ~% }# z3 H" f$ ~. f7 s2 ^; b; h
9 f/ y8 R6 ?5 _' h m0 Q( S% p) O
3 n0 k6 {) F4 ]5 h6 d0 K7 G8 D9 z y
; N3 J7 ~5 Z4 Z: L- _$ p |
zan
|