- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40226 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12779
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析4 K' A, O/ H2 w0 }5 o' Y$ _
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。- b& _2 ~9 j+ s% j! F4 Z
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
6 ?0 f' G( J8 S" k X行描述性统计分析,各连续型变量之间的相关关系如下:
- e8 ]3 M$ i" ~9 m2 K) ^ / f/ c4 J! ^( U4 y [
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 * ~/ `3 x$ g- [9 f
( b! |- x$ d4 X
4 R% N& n( M3 ]% _& f( X/ v
最终模型残差图:
- Z3 ~7 a1 A/ q5 x7 S0 |7 L- G5 a2 ^ x: s1 p$ s8 D
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
& h \- o( n8 y% F q& s属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比* K$ _& C) p. i2 n
属性变量的具体影响在此处分析略去。8 _( W) E, ^2 O/ |+ b7 l' d" q* z& j
连续型变量的影响主要为:6 Z; N8 k2 _) ^" P- ]; Y: N
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;3 |' N/ i& }( K( I$ F
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
7 O( j3 v1 y Y% u e同时,原本为连续型变量的容积率经过离散化变为属性变量后:
+ ~* a2 D; X! Y6 v7 y5 x1 s5 v3 B 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
2 @) I! H& g- t9 o0 i9 P' \ 容积率与环线之间存在着交互效应。
* q$ k& B8 d g5 Yrm(list=ls()) #清空当前工作空间8 @. Y1 E& h) d, M [
setwd("D:/回归分析")+ ?$ z6 q8 u3 o* ~! R8 _% g
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a
8 t; B, I0 r2 `4 r( RView(a)% W& D+ i; i$ r, j) M5 e
attach(a)
* z& H& q7 l2 Q, Anames(a)9 ]1 B; P4 C: V- |: L# @7 E d. H" f7 F
- B/ A# h/ Y: B. G* \% }
' `4 F, K" ^7 N0 |. X
##描述性统计% F# _+ {, e$ x' O( \
1 E2 z. O5 m# {2 R) C
; B0 b9 C6 O2 U- W& d#未做处理的响应变量分布情况4 V( @1 C, ?/ T% |3 d
par(mfrow=c(1,1))
& u5 V, k; ?1 n, x8 n6 jhist(price)
' ~& n# S) W* l8 x* ?/ X! Vsummary(price) #查看响应变量的描述统计量7 K5 V- t/ v4 Q2 s3 B& F
#连续型变量描述性统计
" }4 {* T3 V' |7 vwindows()9 K% s7 H, ?. x' m
pairs(a[,c(6:10)]) #所有连续型变量间的散点图) V5 M' X" K C6 t4 ~. R* D
par(mfrow=c(2,2))
/ O" |; j! E1 v# \' @- i* y( Gplot(rong,price) #每个连续型因变量与响应变量间的散点图1 X7 d3 {9 m) @( R3 j: [* P9 e0 X
plot(lv,price)
2 s# n+ w' l4 f- Jplot(area,price)0 ?# `3 d8 \% k$ O! V: A5 n9 T
plot(ratio,price)+ L' k3 [6 r( c4 ~# x, A( d9 t
summary(a[,c(6:10)]) #查看连续型变量的描述统计量8 N6 n! e! |: R
cor(a[,c(6:10)]) #查看连续型变量的相关系数
2 a* `- e, T J: I* x#属性变量描述性统计7 d: M- y0 ^4 R' D% n$ y* T
windows()% J, Q. A5 E3 E/ {
par(mfrow=c(2,3))
8 Q9 h& \7 S0 g Z# uboxplot(price~dis) #每个属性变量关于响应变量的箱型图
" S" I# T* }2 N4 B1 I' Lboxplot(price~wuye) - M4 o3 i4 ?# P+ e( b
boxplot(price~fitment) . O4 C; u( j D0 P/ J' n" O
boxplot(price~ring) 4 p% i7 x6 x+ q" x: {2 S+ A
boxplot(price~contype)
$ g4 Z- i% q+ E% h% g- V+ u6 Q2 @& ~) \5 g
, d7 \& W9 j! [# P9 I5 W6 ^0 {
' M, T& B7 f* c8 c
& b! t& N6 N( b! v9 d6 L##模型建立0 t! M1 [) g# p+ d! e
3 ?& W7 Q- i) l7 v
- }# o$ F. w. e+ i#在方差分析模型基础上加入连续型变量
- Q/ R @" ]6 e, S- v8 O# ~lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
9 L: Y u0 U. V' C0 Vanova(lm1) #方差分析- [- x2 N( d" Q. s
summary(lm1) #模型参数估计等详细结果2 c* \0 ]6 \0 B. R' @ j1 e8 W
windows()
7 J$ {3 a) W9 r; H/ spar(mfrow=c(2,2))4 x6 x' D) K! L- ]
plot(lm1,which=c(1:4)) #回归诊断做残差图! p7 [* q3 {: Q2 I* F& ]
' u& [0 n* n; b* ?1 v; [
5 f* U# C4 D4 m3 @* V. Z
. I, O: U3 q9 l/ B# Y7 O/ w4 A( Y
##变量处理5 p" n4 J. x2 c p
0 |# {' _- Z3 N2 N7 L5 d1 `( k2 K; W
###对不显著的变量采用分组的方式希望能达到显著的效果+ `. N. o7 l/ m3 D1 a) l. i4 L% ?
##对容积率的处理
. O3 n& F! I0 i t" qwindows()5 L) [: p7 x+ S: ]0 y) v# z% u/ s
n = 41 r; W! y& q! w( [8 D+ O# P6 R3 P& f
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 $ W. }2 X: l: ]$ ~6 ?3 e
table(ceiling(rong/n)) #容积率各分组下的样本数8 X4 K& t( x& ~
ronggrp=1*(rong>n) #进行二分类. J, @' J: K7 i- B
#ronggrp=ceiling(rong/n)
0 g. W8 ~& k6 {1 H2 \5 S: R# P9 Ftable(ceiling(ronggrp)) #容积率二分类下的样本数$ U; ^5 o# ^8 ?
windows(). X- \, g+ u$ D' D+ t @
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图! T5 C5 \0 `, p& |- Z% I
windows()
9 `/ ?9 c8 z8 ], g6 Z& e9 Hpar(mfrow=c(1,2))
- _( D" E% Z% \. @boxplot(rong~ring) #容积率与环线箱型图
, U, @" l- k" V: E: q5 e& ~boxplot(price~ring) #房价与环线箱型图
% t3 e1 p/ A" H2 P! l7 H* m9 Z#加入容积率分组和容积率分组*所在环线交互因子的模型+ f7 a" _! [' G4 r7 Y- f
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)/ b! Q* J K+ E& w5 z1 G, V8 E
anova(lm2) #方差分析
; K; Q F% \9 h) Tsummary(lm2) #模型参数估计等详细结果2 \4 J* Q0 g' H% o" f0 l
windows()
# E0 Z3 `' Q1 A; D# y5 E4 Npar(mfrow=c(2,2))$ s( [; c0 w, \' v1 W: z# r
plot(lm1,which=c(1:4)) #回归诊断
6 k+ N* P W+ g4 g2 R( N7 R/ U
- w& K: F$ c# _- O. {" W, n' C( I& S
$ b }$ ~9 [% a s##对小区面积的处理
. P4 S4 w6 B' `5 G) b/ D0 msummary(area)4 r3 r s j- c, S3 m$ M R
plot(area,price)
, i) w/ p0 V: H. G) z: B3 [ twindows()
E3 H8 D/ x8 o) qn = 150000, ^% D/ W# K& A* e& a* N* C
boxplot(price~ceiling(area/n))
, @( K; f; e( v" b" N, b8 jtable(ceiling(area/n)) 8 u' @+ o7 ?, g# x/ I
areagrp=1*(area>n)# n1 z8 x0 G; I- Y. K6 S" w7 C% T
table(ceiling(areagrp))
. L y9 Q+ g8 {; Q- Cboxplot(price~ceiling(areagrp))
0 k% b4 S3 X$ k( e#加入小区面积分组的模型
. W8 P% ? o& h! Klm3=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)
( S8 j* A% S2 V( ^/ P. a5 Danova(lm3) #方差分析* `$ b8 a+ J$ ?6 ]
summary(lm3) #模型参数估计等详细结果
2 q' w& O* H6 O, @4 L. mwindows()
/ F( G. X- W( H! Ppar(mfrow=c(2,2))
4 {2 H8 F. o( z" Q; Xplot(lm3,which=c(1:4)) #回归诊断
2 I9 r' y/ m4 I: M+ W
0 F% `* o5 i' X& Y1 h
: o0 e) z$ Y0 L. ]! x% L5 _8 [# u##变量选择' d: n5 I7 Y4 V1 u
0 R" B& w% o* u. e1 `# g' p. [" p$ Y" r! K- d/ V+ \$ T0 [2 q0 Q
##AIC准则下的变量选择
# g; e( f, V% d; D" Clm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic7 a! y, J+ ]4 h9 Y1 l6 n: h/ w
summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节5 P. z/ [0 Q( U9 z8 O h" G& C
##BIC准则下的变量选择
9 N, ^ g& S' H& u0 z* p, olm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic6 n& a, ^4 y6 {$ Y5 w
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节6 F9 j( i+ E$ w
0 e& _% q- K7 ]: ^7 h1 v9 O
+ a. Y! R! k3 Z) u, _* q0 f#选用AIC准则下的模型进行回归诊断7 W8 e* g+ N( s, t% e9 S$ O
windows()1 d" P- u \" K1 Y3 W! Q
par(mfrow=c(2,2))
* S' O! n. u7 A, J: Iplot(lm4.aic,which=c(1:4))
- p1 E! y! V% N. M( G" h u; b& X5 |2 k. j* e: z! P8 O! s
V! }" p& Y; e! Y8 C: x
, X5 u" w* h2 W v2 ~3 ]* ~7 ^6 i: O8 [0 N$ u' q @8 D/ v% g
##数据变换- A- |$ J$ |5 D7 e [& _& e, A
' ` X$ ?6 g, K/ l* f3 q
3 s: K/ H3 n! q" L#box-cox变换
+ B" w! I6 ~& O- Q! {$ w3 |library(MASS)/ X i& O3 t2 D4 @$ n
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))6 c+ p" ^5 y6 Q! ]* L; |, ]; C
I=which(b$y==max(b$y)) #定位似然函数最大的位置! Z; n N) l3 U. N
lambda = b$x[I] #精确的λ值
3 J: }& P4 Y; ^5 k6 C#λ接近于0,为模型简洁性,可以直接进行对数变换
& i4 s! t) {6 Z9 A6 [+ vlogprice <- log(price)
0 v; q' p+ M: W& I9 bhist(logprice)
/ S- l# g# E' t* e2 F. a& b' P* F$ g- y
! O0 R/ K9 s% _' A+ o3 C+ P##最终模型与诊断% @! `/ s; l5 L) z9 d) y) G. J
" k, c9 M% I9 Q! o
6 F4 a/ \4 g7 i/ Clm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
7 U0 Q) T3 ~7 m9 [windows()
: Y- y6 S; n8 b7 M0 ~' Cpar(mfrow=c(2,2))
3 p( j2 |3 R) ?4 Z0 V+ z+ mplot(lm6,which=c(1:4))
/ b! {( |! ^4 M5 h+ Nanova(lm6)
5 k5 Z V& ?; F' ]summary(lm6)' h! A% @+ ?5 o v; Y
7 Z7 G( \( \7 W! ]( F/ q
# I5 p5 P" w) z# E7 G1 h
请关注数学中国网微博和数学中国公众号,联系QQ 32437105607 p' l& G! G$ J9 Q" Z; q/ m7 J
. N2 j/ ]! \9 i* [6 j
; `$ D% _* H: _
' `& d' ^/ `/ K$ p) Y* J, w
7 l% p* c. E7 d+ |8 X, ?3 l3 E& y |
zan
|