- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40219 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12777
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析& O8 N* j8 t7 x5 _ i. x v0 E9 B
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。
5 k' v0 j6 w7 Y$ {; {0 [' B3 t这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
! c$ r7 L) d8 v* D# [9 _) y' p. v) R行描述性统计分析,各连续型变量之间的相关关系如下:
+ R% ^( \, ?+ r2 z![]()
8 n9 {6 @- P; y9 ^. P, y名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 ' ?. b+ {' E+ u) C g. x: e
![]()
' V+ F) b1 Y; M; `1 i9 T1 O% @ 2 w' o8 X ?% g' \1 K3 I/ @4 Z
最终模型残差图:3 Z7 E$ p; g( B' Q' G
2 Z* O6 Z$ C u; Q
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
8 m0 e* r, N3 h& @: f4 U) E属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
q. Z' v+ T# x属性变量的具体影响在此处分析略去。
' K( d$ I8 L* c- }0 `3 |# q3 f连续型变量的影响主要为:
* C0 A4 s' |" w' w! [1 x. U& s/ C9 u 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;. M+ s5 H: m. E- R0 A, l. X
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
" ?1 M* i+ _0 F# d$ R1 c同时,原本为连续型变量的容积率经过离散化变为属性变量后:0 B, R2 ^3 E5 Y! Q
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
! N) U% p, |' }, E 容积率与环线之间存在着交互效应。; e) |) v a! r7 h( L+ G' T
rm(list=ls()) #清空当前工作空间4 I/ w/ ~/ d6 l& O
setwd("D:/回归分析")( H0 W7 Q) Q/ \ B ?. Q
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a3 U2 G8 z/ B( F0 b
View(a): l9 x0 U0 y# x, V
attach(a)! O$ e7 h! [ [' f+ r4 q$ p: m0 [
names(a)7 H) {" V9 b) p. t6 G9 _" X- X
* P, [1 T3 l) \8 P; s+ Y K
% w8 B: m/ Y" i+ P( P; N/ x) `" s7 d##描述性统计
, {4 `; s% }6 U9 n1 D! t/ y
+ a4 k/ v5 v6 X, Z ^3 I2 @! F: y9 x& W) A, f0 \
#未做处理的响应变量分布情况8 ]' i7 e) w8 b! D4 p0 J, U
par(mfrow=c(1,1))
( H1 Q' W0 p' A5 Yhist(price)
& a( @0 R, C. b' l, t: \) L( qsummary(price) #查看响应变量的描述统计量
+ |# [5 p3 T6 Z1 m. k! O# i: O#连续型变量描述性统计
* U% }5 l# [0 s5 r) O8 zwindows()
F; @8 w' Q" W9 w% s' Q* v( q! gpairs(a[,c(6:10)]) #所有连续型变量间的散点图
0 A8 j0 `& b( g6 t# vpar(mfrow=c(2,2)) ' b+ ]& `( `9 M6 x% n
plot(rong,price) #每个连续型因变量与响应变量间的散点图
' h( A! [; ^+ ~7 l9 Cplot(lv,price)
% J' ?4 o3 s C/ ~" O: jplot(area,price)' T) g) p+ B; A- }- h6 H4 U
plot(ratio,price)
8 h5 Y k- N7 I: Hsummary(a[,c(6:10)]) #查看连续型变量的描述统计量
4 [& M) L, C( c1 e# [cor(a[,c(6:10)]) #查看连续型变量的相关系数
( d$ D" h/ S7 B#属性变量描述性统计4 h& a9 u- o) \4 Z ^3 [( p1 A
windows()
& S( D/ Y T+ zpar(mfrow=c(2,3)) ' G' l/ n% i! H
boxplot(price~dis) #每个属性变量关于响应变量的箱型图
4 f/ W9 R) y. ?5 `6 Xboxplot(price~wuye) ( E3 N' L- h" f D- w
boxplot(price~fitment)
: m U, |* _) M5 i, r5 |% h1 Wboxplot(price~ring)
) ~8 W) K' S1 n3 kboxplot(price~contype)! b7 G+ G, E% a$ }5 u# g; j
. n" `, G) K% U; Q
* Z% {* ~; R! N' I1 y$ I. d; u
, `* k' u! i8 U
7 Z2 p2 l3 w! `/ q/ k##模型建立9 }0 S2 Z4 X2 s1 [
% j% [/ p0 U! L' r, \ i8 y$ P
: n0 U5 o% S. P3 X) u( a7 N O9 Z( Z
#在方差分析模型基础上加入连续型变量! C% y3 C2 Z; s
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
+ p) I4 \3 a7 q0 uanova(lm1) #方差分析& P5 b3 O$ |+ Y% X# h
summary(lm1) #模型参数估计等详细结果# g$ O) c, \+ J0 N
windows()
8 N- D. e, v* D2 O7 p. k9 dpar(mfrow=c(2,2))
5 e2 ^# f7 v; R A4 q5 A$ T [plot(lm1,which=c(1:4)) #回归诊断做残差图! q5 L1 O# f* V: t. j* T9 ~/ W4 v
' ^ j0 \! ]8 T2 N* e+ k
+ C7 d. X, @. I. w# T
* }; I8 K: b8 \/ h8 r, R8 \
5 k9 R: H7 D8 a" n1 W; ]6 q- z##变量处理9 X! X7 T2 `; g* H! {7 G; d% X
2 \% h6 s7 z' l; m+ A6 F! T2 I0 z8 O
- f4 L$ v1 U4 w+ z; c; ?
###对不显著的变量采用分组的方式希望能达到显著的效果: Z, N; V8 s# n1 U/ f6 \
##对容积率的处理
& @0 L( j* Q5 l, f8 F* jwindows(), m+ Z2 B) N, }8 J
n = 4
/ l% ~) P) j' R% p5 Q: J9 G Hboxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
/ B; [+ n$ Z+ Ktable(ceiling(rong/n)) #容积率各分组下的样本数
) w( X4 I- H( u% W7 G7 |5 Qronggrp=1*(rong>n) #进行二分类( F& v5 r, O; v3 d3 V7 `7 @
#ronggrp=ceiling(rong/n)
) ?7 D/ M# z. \table(ceiling(ronggrp)) #容积率二分类下的样本数5 r2 j+ k3 Y) z) D j
windows()$ t: K B Q; a( {9 @# c: w) x
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图6 v- K( k3 `4 D
windows()7 h* M3 W, F4 g% f- E/ c
par(mfrow=c(1,2))
# {, J5 O7 F3 _* uboxplot(rong~ring) #容积率与环线箱型图8 f/ S. e1 C; y: x3 E |
boxplot(price~ring) #房价与环线箱型图
4 `& K+ R& K& Q+ s, t b#加入容积率分组和容积率分组*所在环线交互因子的模型5 U7 j9 [9 P- n5 I9 v: N9 \- a- K
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)
: x' ? Q' O/ n1 Zanova(lm2) #方差分析
$ [( {1 Z. @- @$ G7 I! a! w# d8 |3 bsummary(lm2) #模型参数估计等详细结果
6 m3 h' w2 A0 |3 p: [! Ewindows()
( C; v4 C& p& Npar(mfrow=c(2,2))
) [7 H- j* B' V3 r: y2 Xplot(lm1,which=c(1:4)) #回归诊断
+ W" k' w" h- I5 T1 X8 H% z, }9 u2 s, y3 n
- p, F9 g5 ]1 z1 P0 Q' N' x##对小区面积的处理4 c2 I% O( ^# Y
summary(area)
B. B; p+ @+ d3 ~plot(area,price)
# k5 T+ Q* F# @3 i# rwindows(): z9 d2 y+ X% f Z, ~# y
n = 150000
$ z0 a' b8 P. @2 |boxplot(price~ceiling(area/n)) / ~$ j! t- N# A
table(ceiling(area/n))
/ J( m! l( k5 M& j9 X, D9 B8 Wareagrp=1*(area>n)& H2 {( u' o' a$ }* N) r6 U
table(ceiling(areagrp))
7 ^: _: V9 Y4 ~# h" Lboxplot(price~ceiling(areagrp))4 b* X z9 z2 J% t: X) H
#加入小区面积分组的模型9 s& g8 y3 @4 `% h7 I. N
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)
' T m* k+ T/ G( ranova(lm3) #方差分析
( d3 G/ d) S8 d6 I( \4 B" ~summary(lm3) #模型参数估计等详细结果
" f' ^7 _; H, D& x8 _4 ^2 w; P- Ywindows()8 O( n' }1 J. ]. R# p
par(mfrow=c(2,2))
1 e7 _/ R% k1 W/ E+ Dplot(lm3,which=c(1:4)) #回归诊断# e* ^, N, X2 Q% N" i: W3 T
5 e& `! G; K* H7 O) Y$ A
) s0 y' l$ W5 M0 b$ _##变量选择
. a' u) M% U# D6 \3 f/ k8 \
! ~7 |9 c9 o g3 q' J' p4 C8 I3 ~* Y8 I8 c
##AIC准则下的变量选择
9 t$ m" B! o8 P* o& s q& Olm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
1 R; Q2 e8 A! c! P8 |4 @& r% Tsummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
1 c* u4 e2 W( r# n) ?##BIC准则下的变量选择
2 c3 x8 C# ~0 m5 clm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
% d/ B( }1 ]1 msummary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
% C! Q9 |, U: R) _2 q4 H8 d9 u/ C& j) g2 z$ |6 F3 A" {6 H9 O
( Q, N# j- U, f. G: E#选用AIC准则下的模型进行回归诊断
. T. M9 y' T! m/ }- cwindows()
" U. y# n+ G$ E! h, w. ^8 ?) Jpar(mfrow=c(2,2))
! `2 Q/ ]$ n" fplot(lm4.aic,which=c(1:4))
3 Z7 `$ h) P0 p; S- O; G; }7 K6 Q$ ]1 C- K1 L
. g5 {4 b2 X, M/ M" R
& c* K0 i) ^! j
) |6 f& H0 E# S( r; i##数据变换
1 w" O# V4 ?1 @! J+ [0 \& ^# j4 s5 ?& O" F3 h: ~8 U
7 q! g, x/ a4 N& q#box-cox变换
' p! K9 f d- q8 s( i7 _; u) elibrary(MASS)
* ^' m1 t# e- ^ _" \* zb=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))4 i0 R) W! q. ?* g$ v- R" o
I=which(b$y==max(b$y)) #定位似然函数最大的位置
( |) x7 R& h2 elambda = b$x[I] #精确的λ值
% c f0 q+ M' n) Z4 H; o#λ接近于0,为模型简洁性,可以直接进行对数变换4 r6 b& u4 V) R+ X
logprice <- log(price)
# s C7 g6 o( V& c1 N/ phist(logprice)
w% g' s% k+ H
, S" ]) M' ^2 r9 h1 c$ j
: Q$ H; M; X7 ~! b* t##最终模型与诊断+ e4 [, r) O# O1 A) N8 X+ f% t
$ \0 F- c5 G/ k- `4 I- ], R4 G9 H2 f& [" [% z
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
+ `: I( z& l! S5 Bwindows()( H3 d5 }4 ]2 p5 E% v, Z( c- q: }
par(mfrow=c(2,2))
3 ^: T, ?5 e# }3 Tplot(lm6,which=c(1:4))
% A3 l. t5 X3 ~! v4 panova(lm6)) d ?6 _' C/ C: O3 B% A
summary(lm6)- \! T/ ]% N5 \
% j( U' }6 H& g5 ~0 W$ K& w
8 R9 A1 u0 w2 a5 c* d
请关注数学中国网微博和数学中国公众号,联系QQ 32437105600 ]" }" y1 O5 L& b0 v
8 w U! N% c# G4 V- P
: j2 d! {. {* Q2 z& Y6 m$ F6 E
4 o3 W4 F0 r* A w% {* e% _. p1 ]9 E- d1 ^+ S0 Q2 C4 q, b' u
|
zan
|