- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40024 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12718
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析% }3 {7 S- g9 K3 h3 @
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。
3 f2 }/ l$ e0 k+ q$ l7 U) f这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
8 e" R3 {: m5 t0 T9 ?5 n) m0 t/ k行描述性统计分析,各连续型变量之间的相关关系如下:' O9 B" ?+ i; i& g+ b7 W1 L
![]()
. D# `- c0 @- b名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
f. }" e; o* c! @! u![]()
' {% S6 _4 c- ?! d* N![]()
& x" ]+ ?0 S' `. X( ]* g' }9 w, m- G最终模型残差图:0 R5 X! H' m1 v2 y2 M2 T: O* b
5 x- H' _/ O4 _1 e5 `& d# [* G
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
6 g# F8 r% J4 K4 z1 Z8 |& B属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比" Z/ N! L1 {: N- A$ s: f# X! o: t
属性变量的具体影响在此处分析略去。8 i: U- C$ e3 d b
连续型变量的影响主要为:. E* ?4 o4 D5 _2 ^1 m
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;
" L3 t2 b2 b$ H% M# k4 n1 v 停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
5 K* N: ~$ Y1 U- Z# Q同时,原本为连续型变量的容积率经过离散化变为属性变量后:
. @( O( c2 z! n4 F( `* |2 p$ n 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
+ W# y2 F0 O) V$ V. M4 v1 g7 B 容积率与环线之间存在着交互效应。
( l, ?) p* r1 M$ k5 nrm(list=ls()) #清空当前工作空间
! o3 [- J3 W+ \0 B" Ysetwd("D:/回归分析")3 b& b0 z2 w* D! b! U
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a8 Y/ N6 n* {3 o1 k
View(a)- ^$ R4 B" w1 {( H7 q6 ]
attach(a)) e2 b: n# D3 k8 @ p
names(a)/ l7 h' U+ v. p5 q# G6 I
/ L0 l# Y* C3 F. z5 h8 h* U" B. t: Z) P$ D/ U! n1 ]
##描述性统计
g7 ~4 A7 S5 Q1 }: T- h/ e! u- q \6 O: O! E8 c
! L2 i$ j, [( I, T#未做处理的响应变量分布情况
- P! v% M# i3 F) gpar(mfrow=c(1,1))
) H1 q0 f3 C; g+ Z; j, q4 \/ fhist(price)
8 T1 k4 q8 q! ^) Z; g& g7 U5 }summary(price) #查看响应变量的描述统计量
: Y1 J0 } ]; O& U0 j2 r# O5 n. ?#连续型变量描述性统计# L/ v: [4 M+ k* ~: _
windows()
; A: Y# W% E# O8 h: E6 x0 F6 P" |pairs(a[,c(6:10)]) #所有连续型变量间的散点图
, \! G5 j8 U7 Q' `4 r+ O8 @par(mfrow=c(2,2))
4 T7 h, o" g: }& d4 A2 E' q6 G/ Bplot(rong,price) #每个连续型因变量与响应变量间的散点图
' q" @9 c' |2 s2 T3 p Hplot(lv,price)
4 L9 F$ E" J) l& |6 N. Jplot(area,price)
- r2 W% P2 b+ i# Lplot(ratio,price)
+ I4 r6 f9 J* l2 Hsummary(a[,c(6:10)]) #查看连续型变量的描述统计量
$ {% d' c9 z0 z3 N4 \# J& B1 ecor(a[,c(6:10)]) #查看连续型变量的相关系数) [* _% Q' ~) l3 \& g
#属性变量描述性统计* ^$ q/ A. l1 z6 V! R
windows() D% |0 V1 U' e3 f
par(mfrow=c(2,3)) V7 x4 O' u6 x) \" l) q
boxplot(price~dis) #每个属性变量关于响应变量的箱型图
% H+ J# T: U5 ?2 m( h' _boxplot(price~wuye) 2 k2 X7 x2 A& d% s' s
boxplot(price~fitment)
' m2 P% {( u! k# u, s5 _7 uboxplot(price~ring) 1 ~. R4 o( m6 W. |
boxplot(price~contype)6 E7 ]5 d9 n( t9 H; l S8 O
+ P* Y2 x. B& m* Y( K$ K2 Y9 Q* `9 ^8 E) {+ \/ D! U
3 A$ b# I0 c) Z4 e5 j
& R! s+ `5 s% r- q
##模型建立
$ [( P6 X# W/ G' |# ?) ?& C: Q! P$ c8 Z" ]8 p7 i$ X9 }. \ H
0 ~% s }! ~5 W/ E#在方差分析模型基础上加入连续型变量" R. o+ S: G+ U# Z: T; Q& x
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
+ h# G' s; |; m1 `/ A7 ranova(lm1) #方差分析
4 Z4 w& u" p0 {& O- ~& csummary(lm1) #模型参数估计等详细结果& z& M( J) U- B
windows()( Z8 i7 J/ M6 e" F, J6 q
par(mfrow=c(2,2))
e/ A$ W2 u. T$ m3 mplot(lm1,which=c(1:4)) #回归诊断做残差图
& S2 [* N2 @. {* k6 d! U- m/ E" z& c A' v
8 U2 U7 \: I0 ~6 O5 b: E2 I; G1 Z" {4 V- } F" O! l0 z( `- j5 m
; D+ ?/ h- h& r" ~* x##变量处理
( E' z* d* W) s7 e4 D) b! a4 X- h+ V2 m! S5 E- o
+ e' V, R7 W( E. T" |7 q1 M( Z- M" \
###对不显著的变量采用分组的方式希望能达到显著的效果4 o" @! }) y4 |8 _" Y; V
##对容积率的处理! e u. g; J: F9 A+ W
windows()
7 S/ v4 C6 ^$ X ]; [n = 4
. K. V7 y0 D; E2 A9 e, uboxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
, }- u4 G `: B* n2 V! ptable(ceiling(rong/n)) #容积率各分组下的样本数
Z2 X( I/ Y3 g H, n% x- Tronggrp=1*(rong>n) #进行二分类
$ f; ?+ i8 p2 i6 m- o% ]1 c R; z#ronggrp=ceiling(rong/n) 0 W& r8 B# Y7 P4 ]3 R* h
table(ceiling(ronggrp)) #容积率二分类下的样本数
$ N7 Y& L( K! B0 T& O3 V7 m# Twindows()
* r2 q1 @4 b( H8 ?! Cboxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图
1 f2 K* P- G" i+ b5 o% i7 r* E6 ~windows()# }" m9 t+ Z# K; z
par(mfrow=c(1,2))
& x5 \6 j0 c. V8 y: o% j) }boxplot(rong~ring) #容积率与环线箱型图
2 ` N6 p5 l2 m1 ~! ^2 b! a6 V" o3 lboxplot(price~ring) #房价与环线箱型图
1 u! z" ~! s$ g: T& j3 s#加入容积率分组和容积率分组*所在环线交互因子的模型# X/ ?+ z1 ^6 p' D* z' h# T9 p
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)6 X( _3 m& l4 r& h
anova(lm2) #方差分析, L: b# W' j# n( z3 [% p# w) Z
summary(lm2) #模型参数估计等详细结果/ {: d6 y8 g0 y+ d( a
windows()/ ?* Z4 p3 b5 z {6 H5 P9 u
par(mfrow=c(2,2))) m5 y+ w1 c+ N" M/ t& v# T
plot(lm1,which=c(1:4)) #回归诊断
9 t. J) B1 {4 U2 n5 t# ~
1 H; }' Z. |! d) ^" O
) F! N e) w* y0 c4 L) N1 v##对小区面积的处理
, |7 ~( a2 R: a4 {3 |! n* g! W/ jsummary(area)
: V" A3 Q& N( Iplot(area,price)# \$ ~. `" H( C/ H) e
windows()
7 K9 |6 ` t9 l, Pn = 150000
8 \+ N/ p! t1 }* G$ D% f9 d( Lboxplot(price~ceiling(area/n))
# M: `) o+ G1 ` T. @' ^table(ceiling(area/n)) 8 T$ w8 f3 N9 Y4 q4 B3 Q$ n
areagrp=1*(area>n)
* O* ?8 I+ ~, z: |: W1 y1 Mtable(ceiling(areagrp))
- x: `2 g W( O& o) R' w; R; U7 ]boxplot(price~ceiling(areagrp))( e {# C$ S9 Q; w2 {! R
#加入小区面积分组的模型, _( Q% o, ^) k8 w! ~1 b3 n2 R
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)" _$ Q* B9 c0 Y" I( h
anova(lm3) #方差分析/ \$ G7 \& o* d
summary(lm3) #模型参数估计等详细结果: s; q5 H' q9 ^+ a
windows(), K9 F& z7 O H+ A9 }
par(mfrow=c(2,2)): O* T9 j1 Q1 N& h" H& I
plot(lm3,which=c(1:4)) #回归诊断 e/ _. d- Q- J u/ T
1 N5 I; j, k6 S+ |! z& s/ u
+ R5 T& [1 _4 l$ i
##变量选择% D" e# X, T8 I
: g6 Z$ T3 `! k J4 t
6 Y, j$ `5 L% {6 B% E( R* S' z* z
##AIC准则下的变量选择
/ r5 a% e1 ?! B* Z' qlm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
1 N: \; U5 A+ r( E: L/ asummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节$ A: x: H5 A/ l$ l6 `6 G" v
##BIC准则下的变量选择
9 u8 u7 A4 j- Q- u( S* P, @lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic: f* Y0 C0 f9 |, E6 a# N
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
& W+ ~1 g9 |9 ?. Z( y. T9 ]5 C$ u9 M3 A4 P! f( b
: [8 k8 j! L- m4 Q; `
#选用AIC准则下的模型进行回归诊断
/ Q" X4 @) ]! o4 Y; q. r. Wwindows()
8 c/ u! R3 U& jpar(mfrow=c(2,2))( A) r' A" f* l5 J: n
plot(lm4.aic,which=c(1:4)) 5 G4 u6 n* q5 s3 m$ \7 b- `
0 \: S" ~# T+ P; j' V8 S7 }. t
( I6 b1 n5 f! ]/ w3 k
* S; ?5 H; g+ p- G' f. W
9 }" d2 F+ v H4 ~& [##数据变换
. Q) Z! `$ {6 N! t, E- m8 A
4 Z& Q+ J) C% Z7 A: v8 J( _% N; r% k& d- X; U* Z- M9 Q: u
#box-cox变换
) a. E! K+ }8 j8 klibrary(MASS)
) ^, I m1 o5 o2 Ab=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))7 t6 B5 x0 t; N& |
I=which(b$y==max(b$y)) #定位似然函数最大的位置+ _. ~7 J! z+ i+ d" L
lambda = b$x[I] #精确的λ值0 y& N# X6 w8 b1 m0 s
#λ接近于0,为模型简洁性,可以直接进行对数变换
" R, P+ _5 @0 t: o: @( n' Nlogprice <- log(price)
. K+ l5 k% C/ w2 Thist(logprice)! f% [4 u7 O3 |8 D$ S
2 T, J: \$ c. U+ [- P% a4 y( d! L5 D1 h! G2 S! f+ m
##最终模型与诊断
6 n4 l5 x0 g7 Y) J" _% \
0 w" G- ~2 S9 j+ a" e+ [& X8 Q
% g% \* I& }: ` v$ D+ q9 ilm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
/ U6 q0 g8 n' A/ _0 C2 iwindows()
$ }9 G( p5 p b1 opar(mfrow=c(2,2))" w! r9 q, u4 u& [$ E
plot(lm6,which=c(1:4))& E$ ?2 D+ Y' T0 e2 _/ u0 s
anova(lm6)9 ^) S/ z5 `, I
summary(lm6)% v' J2 C: W. {# Q4 P4 M+ d6 P
7 `9 N9 \& j D& _: _5 u
- Y( |+ V" i' Y Y' K
请关注数学中国网微博和数学中国公众号,联系QQ 32437105605 Q8 V1 S7 C0 e- c3 g$ l
; x3 F6 `+ V. G3 T" K
1 A8 E6 x/ h" X6 J
1 S! @% y4 b/ |" h) f) F% H
$ p5 i) w/ q" w1 H2 W# b |
zan
|