- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40245 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12785
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析
3 y3 ?* d- ?. l" X! E3 _这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。
9 u3 o9 j" ], O& H6 u这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: 3 s, {2 G' M' N9 R. j" `% d( S0 n# Z, z
行描述性统计分析,各连续型变量之间的相关关系如下:
% J8 l: ?( ]& e2 n : N9 u1 s0 D( V' Q @+ S
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
+ u7 o9 s7 w* r) N% l ) v j6 Y) x, z" a+ B+ b1 e% I
9 q. i. d; p- \* ~5 o, S, L( o
最终模型残差图:/ k. S3 w9 T. U4 V2 T) i
![]()
# C$ B' G U) d" }* o% i, b6 u通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:" `2 I- Z m9 L5 w2 f
属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比6 K2 @, K7 l% q* l" B
属性变量的具体影响在此处分析略去。
4 @ A! S. ~: p5 E' H连续型变量的影响主要为:0 F5 F) Q: L/ t2 c: t
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;( j+ W6 w" g' v/ M: z
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
6 x- s- T6 X" \' R, V: ]同时,原本为连续型变量的容积率经过离散化变为属性变量后:+ Q: T: d8 f; a2 r3 Q4 o
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;1 A8 q+ F. s& Y u, O, g( G
容积率与环线之间存在着交互效应。
+ m) M1 P, ]/ rrm(list=ls()) #清空当前工作空间
+ T* X* ]7 b$ x9 g2 B3 W+ g3 Wsetwd("D:/回归分析")5 j# i+ `) a- n9 d0 t
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a6 `2 C; C# Q; [) d5 ^+ u
View(a)
9 l, e/ [# y4 e ~* ~. oattach(a)
( v: |, N4 q- ]names(a)4 u/ t0 f1 X |) y3 ?" K
3 d9 T% [( ~6 I; d" t" K2 k- j! P1 [- e2 b. B" u1 l, z
##描述性统计
9 A5 z6 g& L, V' V( P7 O2 s/ d! d- i* I+ D. i( Q* R
& v" N+ D; x# W3 [7 c
#未做处理的响应变量分布情况$ i1 Y; u: r' @: q& Q
par(mfrow=c(1,1))8 o- A. M9 x+ }6 l
hist(price)
. B. |, L' z; D* H! _ ysummary(price) #查看响应变量的描述统计量& H2 L: s$ U0 i" ~( l( j+ Q
#连续型变量描述性统计
3 B4 z! w( v; N1 b* _ hwindows()$ x4 Y) |. ^+ ]- |6 Q& S, Q% R: t
pairs(a[,c(6:10)]) #所有连续型变量间的散点图3 f6 Q+ F; J# \& U
par(mfrow=c(2,2)) % y4 `! T! |8 T0 j) b# x
plot(rong,price) #每个连续型因变量与响应变量间的散点图
0 M- J$ L$ v" ^) E E6 Jplot(lv,price)3 P' U+ ^" | t& L
plot(area,price)
' p1 G* B I% J* d. pplot(ratio,price)- F, H: \/ m4 A
summary(a[,c(6:10)]) #查看连续型变量的描述统计量
% b7 Y. e Z0 N4 w4 p+ C; [cor(a[,c(6:10)]) #查看连续型变量的相关系数
7 j, y/ }, O+ v. b, `. G6 q#属性变量描述性统计0 C$ d* v Z l9 p
windows()9 M' K/ B1 P" l; n/ y, e8 G' s
par(mfrow=c(2,3))
5 [% U* m6 n( d, ]boxplot(price~dis) #每个属性变量关于响应变量的箱型图
8 Z0 @% K | ` j) aboxplot(price~wuye) 2 f) y2 @( `$ D- [
boxplot(price~fitment)
5 z% {; o3 N) Y9 l' [: uboxplot(price~ring) $ R K& a4 n- [
boxplot(price~contype); O9 p, f5 v. B& M
( p" m( @- V& I3 T5 C9 b
1 z8 z3 U O4 d
/ {+ X4 [9 P) |" A& k
0 [' j5 E- i2 n) i* J9 y##模型建立9 Z/ }' X( [" V2 V D( l
7 l9 A0 N8 m$ r
6 T# G! [, K. m% }( g
#在方差分析模型基础上加入连续型变量
7 {: e- D( |8 j( e8 ?/ X/ |7 [lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)+ ]1 G, N9 m) Y1 U$ i! d( U$ X
anova(lm1) #方差分析
+ I2 B; V1 Y7 T) X4 \3 [4 |summary(lm1) #模型参数估计等详细结果: e% {4 c4 L0 Z3 x4 z! x) o1 H/ N
windows()
1 D% ~" R: P7 H8 k; p/ xpar(mfrow=c(2,2))* d8 E* u, H5 M/ c
plot(lm1,which=c(1:4)) #回归诊断做残差图) J$ u H* W. G
$ g% z4 W' t3 S' J
1 b" F3 h+ n9 D" I& C, C+ J( X0 c" w* a% W" A4 n
" m/ a, n$ |$ g0 V
##变量处理
) ~: E4 X. c& f1 ^. P; W, J- t/ x: H5 S
+ u, n+ q0 J# t1 k
###对不显著的变量采用分组的方式希望能达到显著的效果
" \; V9 U9 s7 g6 s/ |1 t6 o##对容积率的处理
, u' W2 c3 r1 jwindows()
) l! r$ C9 H" Z9 ?n = 4
- G! L" T D# f' N, ?boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
" Z0 s; B3 z, Ttable(ceiling(rong/n)) #容积率各分组下的样本数* _/ L8 {; \" @. G! c ?6 ?$ Q
ronggrp=1*(rong>n) #进行二分类
3 k# V. D3 Z5 A2 q4 {0 |. F( a#ronggrp=ceiling(rong/n) $ H; b+ U+ y" O# j- c$ @9 t
table(ceiling(ronggrp)) #容积率二分类下的样本数4 `0 r1 G6 F* R( p, L o
windows()
( ^ b1 c- t5 G9 }boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图& H8 Q/ t+ L _( a# F6 M" V9 X8 }
windows()! C8 r' j+ n4 {% P( ~7 K7 R. H# p, z
par(mfrow=c(1,2))
w% ?! p* ]4 i% X T' h( vboxplot(rong~ring) #容积率与环线箱型图
D {& b$ n" K9 T. s B. Q' bboxplot(price~ring) #房价与环线箱型图
: f2 M( O$ _; b) J* b#加入容积率分组和容积率分组*所在环线交互因子的模型
7 B' f$ }8 w3 [0 d$ H; u9 Ulm2=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)9 N2 P \1 X5 o# V& X7 u
anova(lm2) #方差分析6 r! U$ x( y+ \6 g; Q4 E: }) `
summary(lm2) #模型参数估计等详细结果2 V0 C1 |9 V' f( x5 ~. i
windows()
6 h' g0 J% Z3 X% H* S$ q! npar(mfrow=c(2,2))! F1 `/ b. ]* Y1 w7 l2 @* O
plot(lm1,which=c(1:4)) #回归诊断
% A1 f& N+ u! d$ n' n1 j9 ^/ P5 H3 |
; x1 ]$ e9 y% W$ R6 n% j% u
##对小区面积的处理* U- X8 Z" s1 \+ C4 }
summary(area)
& |# K0 |% K+ W/ m- U- Vplot(area,price)
% c {8 P- f5 ]. }9 uwindows()
1 b& w: y: E& N0 \( }n = 1500001 l1 c+ T( n1 [5 }
boxplot(price~ceiling(area/n))
% h9 |# G* O6 c+ W* p" ?table(ceiling(area/n)) 8 Y. J' s K2 N7 ?) K L0 [
areagrp=1*(area>n)
& s: e/ w- d8 A0 Xtable(ceiling(areagrp))
+ H( x2 I/ W/ n# J$ S# x; r; tboxplot(price~ceiling(areagrp))
0 x: }9 G, Z; B( ]#加入小区面积分组的模型
4 D' m: L, m+ f# y; S3 nlm3=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); l, F+ _1 x ]
anova(lm3) #方差分析
. c7 O$ G3 l6 Asummary(lm3) #模型参数估计等详细结果
+ Y& y6 U5 p) \9 d" a) i4 xwindows()* |8 x8 b( c& A4 W! k* n
par(mfrow=c(2,2))
0 [* G0 u+ c5 ~- I& i- Pplot(lm3,which=c(1:4)) #回归诊断* D% `4 Z* N' X C7 Z
- r" e( y6 _- ]* s5 w$ Y- ], L, S# }9 ~$ R! g' b
##变量选择7 T& r- p4 ~: Q- B9 l% U) j
; r. r4 l y+ S$ A- _) @
; f/ Q9 X4 o: u" u# }
##AIC准则下的变量选择$ Y: k3 U4 B% p3 W
lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
5 y7 l) W% Y5 N! T- P* w" r; Nsummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节) I# ~: C+ |2 [2 R5 \( q3 y
##BIC准则下的变量选择& E/ J1 e9 E$ ]7 b8 m/ D
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
: j$ ^* r& x6 osummary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
5 ]& [* k- o2 s; @' e& X U
( F8 K/ o& T) i6 j/ \% @7 x2 R7 J x _ v- p D7 z
#选用AIC准则下的模型进行回归诊断' i' ?+ D1 r2 a% V* y
windows()/ U) f. q2 d" c* ?7 N; x
par(mfrow=c(2,2))
* H2 U" N% S; L! g; C( ^1 G Jplot(lm4.aic,which=c(1:4))
; n9 ?& b& u7 S0 |' `4 Q i
) @6 {2 c' h! U( Z& }
" z2 O. q" Q. F, F8 i5 P. F4 l
/ W& U7 n7 A9 g6 |8 l! i- d2 T4 ]5 o2 @; A
##数据变换5 d& Z t( A5 ^) o1 q7 g6 J+ Y
6 Z/ o+ @9 l6 k) M4 g" t
& o; r0 V2 T8 A$ w& B/ E/ i" R( R#box-cox变换
1 r1 Q( d1 `+ T! @- y: Elibrary(MASS)+ l' I. ^5 M& g% u
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))- u4 r$ s) ]. {4 Q0 F& C' Q3 O# r M
I=which(b$y==max(b$y)) #定位似然函数最大的位置# g# r- ?2 y3 b6 w. H D
lambda = b$x[I] #精确的λ值9 i, s- p1 l/ I: c8 w/ J- v
#λ接近于0,为模型简洁性,可以直接进行对数变换8 X% G: @6 W" M3 Y" e
logprice <- log(price)
! V, h4 o. g- c) i, H8 Whist(logprice)" ]& V" w' b. B. u! n% q2 P( E
& t4 Z! h) T5 T0 r- u
! [2 `6 _) l v##最终模型与诊断5 y9 S Q7 i. Z% o8 |
! v4 P" A4 u3 j; G) }% i9 D8 Q N3 a5 }4 D. }$ ~0 e8 C( i: I
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
, U; ^5 q$ R# O- }% u) D @windows()
1 N; ?) N! a& m3 T0 dpar(mfrow=c(2,2))4 g1 R% b4 r# _8 R/ }: x
plot(lm6,which=c(1:4))/ E. U! |7 R( c, ]( T
anova(lm6)
% c5 e3 ?! A( F; [* b/ dsummary(lm6)
( V( ]# }+ U, C, S$ O' T4 T$ b% Z* q" P: y! g4 P. c3 H
& n- j/ J. B7 R
请关注数学中国网微博和数学中国公众号,联系QQ 3243710560; m- j1 `+ X M) S$ \- n
' Y$ t0 y6 g( q6 E/ v+ y( y7 S3 M
& Q. h# g. i) T2 I, J8 w. Z5 c- F6 Z( E
|
zan
|