- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40203 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12772
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析
: P2 W7 b2 h3 n* @) e8 q6 M这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。* D% Q! j' P" r
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
* U5 i3 ~0 R6 F行描述性统计分析,各连续型变量之间的相关关系如下:$ m6 z( [( f; h$ \/ _
& W7 H, s6 G, B/ M
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
" b+ \2 _4 D1 a( @/ i! }![]()
R$ G d. T0 H0 P7 h![]()
. z5 @, t+ Y! J( d7 h; ?2 W, y最终模型残差图: x' W) b0 }/ i( M* H
, ^. E" t- n I+ r: M
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
t, o3 Q4 Y$ N+ N% p/ K+ e属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比; Z! Y) C0 d( S2 m) l$ S1 g
属性变量的具体影响在此处分析略去。# \/ k+ W' B8 q$ ?( R- M/ c
连续型变量的影响主要为:
f5 [* @1 U) h% Q# u 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;
8 e5 r1 u5 O A 停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
' {- C0 L: S" l% R9 A- J同时,原本为连续型变量的容积率经过离散化变为属性变量后:
! j/ h# }0 `: f) s/ L8 v( ]5 L 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
2 a5 Q6 G$ V" G2 \8 @; O2 t* P3 | 容积率与环线之间存在着交互效应。" n- F7 C u* m& e& E
rm(list=ls()) #清空当前工作空间3 S6 W( Y4 |* c) d B( o( X8 ?6 a! q
setwd("D:/回归分析")% n& W% _, Z, E
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a
; N. O. X6 D" R8 N; O7 VView(a)5 u1 J# d; }4 `* e* q
attach(a)
. J5 e4 l9 O t' {, j0 wnames(a)
7 n* [2 A6 Y5 ~# V7 w l6 P
. F4 J% D2 u. d% ~" ?+ ]' Q# r' i! v3 p& d7 j* ?2 [8 S4 k
##描述性统计
! _0 z, F" S' w3 ?! G2 |8 B6 c7 P4 _$ U/ ]6 q& o1 {2 e
3 E/ m- d! d* w8 g
#未做处理的响应变量分布情况$ k- | x4 E/ D3 F0 I2 ]' i
par(mfrow=c(1,1)); m! j* G% W) R
hist(price)8 c8 }. l; A. B% N, \
summary(price) #查看响应变量的描述统计量# ^9 g+ m4 S! U6 e: `
#连续型变量描述性统计; [9 X9 N# }: ^7 X; o
windows()
) h I0 \! m7 K- b2 H! o* B9 Hpairs(a[,c(6:10)]) #所有连续型变量间的散点图
o6 k) A! z v) U! X2 ~" g! f- X2 a+ ppar(mfrow=c(2,2)) 4 k# ]. M: l4 X
plot(rong,price) #每个连续型因变量与响应变量间的散点图' B6 v$ z. A+ a. X% z
plot(lv,price)9 l3 S$ D1 G. t0 ?+ w+ E
plot(area,price)
; t9 e) Y5 \+ f. R' Jplot(ratio,price)# f6 a$ _" p2 k* Q% L
summary(a[,c(6:10)]) #查看连续型变量的描述统计量, ^) P0 A( `- K% s0 n
cor(a[,c(6:10)]) #查看连续型变量的相关系数8 t* r. q, c* @* e! c p0 Y; b' W
#属性变量描述性统计$ }4 d' S& G9 E: V
windows()8 ^! C& A6 `, z! w: m
par(mfrow=c(2,3))
" `7 X: |0 r' Y7 x8 m# e7 Gboxplot(price~dis) #每个属性变量关于响应变量的箱型图8 _0 [) O( h+ p1 y
boxplot(price~wuye) 8 @4 s: d5 Y1 T6 F% r& Q# ]1 D
boxplot(price~fitment) $ v, Q% {9 \; ^& Z( H, e
boxplot(price~ring) ' @! M# c* v! u+ i: p3 W/ C( k% i2 o7 o
boxplot(price~contype)5 ^; I: i( X% @7 W ^
2 D- h6 `7 E- w" ?/ i4 E7 Z
# { O: p v# i
0 r# Q! V m$ `$ q; u) n
2 E7 G6 P8 j* D; [8 M##模型建立* Z* ~. r' @! N$ B5 W
6 x# |" h4 A/ g, ?7 i
3 h& i3 b2 t9 r1 d- U' L/ S#在方差分析模型基础上加入连续型变量: t8 f- Y0 K! W
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)2 |! i) @2 a( U' i0 M2 {3 O
anova(lm1) #方差分析. z+ c: X3 l$ t' q
summary(lm1) #模型参数估计等详细结果
# _& c, [9 k3 O' t1 ~7 jwindows(), d" }& I: ?4 A( h& b0 U" X+ A- r6 ^
par(mfrow=c(2,2))
# O5 T$ t& T: Q) rplot(lm1,which=c(1:4)) #回归诊断做残差图# s8 o4 H0 Y# A' D5 A3 r
( V1 [3 J1 ]6 E- ?4 C b
3 x( m7 J3 |' j% v* w, l
- ], [0 r, i5 K/ Q
7 ]% M( S6 l5 w/ m0 Y: Y7 V9 z" G
##变量处理
- t9 f1 P. p+ C
) D* `+ k: w. G& U$ y$ _' T0 C; _( Z" p) |2 f$ k" X
###对不显著的变量采用分组的方式希望能达到显著的效果' F- f# M& Z1 z6 [
##对容积率的处理; k- c% _- H; q- {6 w! N8 f( j6 X
windows()3 [% E9 D5 V; K% N3 T0 `6 w- ^
n = 4$ y# X1 m8 _' w" x
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 2 w9 u1 v6 I3 \ s
table(ceiling(rong/n)) #容积率各分组下的样本数. k9 l: C# @5 j B
ronggrp=1*(rong>n) #进行二分类
0 }5 g$ E' Y7 h& h3 _0 i( C#ronggrp=ceiling(rong/n)
* k1 P2 J3 U# d0 ?( o! D5 k3 atable(ceiling(ronggrp)) #容积率二分类下的样本数! X4 b1 j1 S4 h% W6 R7 S
windows()# _; U. L1 Z d
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图2 a5 N2 m1 N" N" P8 O6 n
windows(), C) f' K q6 a' C9 N3 m5 b
par(mfrow=c(1,2))
0 J5 K! d5 r# j/ t0 w' u+ Mboxplot(rong~ring) #容积率与环线箱型图
5 U1 G6 d# I2 ^5 b, F5 T. Mboxplot(price~ring) #房价与环线箱型图 ; v8 C! x- _8 d9 n
#加入容积率分组和容积率分组*所在环线交互因子的模型
7 A5 X' i% ]8 x: @# 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)
0 P) e: f6 Y. [$ c3 v$ h6 \0 R; Ianova(lm2) #方差分析' c+ y* e) E; X [
summary(lm2) #模型参数估计等详细结果; G& S# o2 K4 t- m6 Q# I! l
windows()
8 C4 o2 e m5 V o% r/ F' y6 m& Dpar(mfrow=c(2,2))4 h+ V: K5 g' Q6 e+ e1 P
plot(lm1,which=c(1:4)) #回归诊断
+ A0 _% Y8 |9 k4 ]" R, p& N4 b: h4 K$ f
$ f7 l9 m- s# X1 ?
##对小区面积的处理5 C8 K8 w. P( `4 D+ H1 a& c
summary(area) K `/ T; w6 U7 W; y- k4 {# \
plot(area,price)
1 p+ {2 C. f1 X1 lwindows()1 w- L% M* V3 ]4 l! r; t' j
n = 150000
0 c( ?6 G$ w+ c- H4 n. @9 g+ dboxplot(price~ceiling(area/n)) & i- V' R7 F% @
table(ceiling(area/n)) 4 L" I! I: p$ X% N
areagrp=1*(area>n), s% M$ t0 @" b. q% v0 W9 b
table(ceiling(areagrp))
2 y+ O- q% G" @boxplot(price~ceiling(areagrp))
1 K4 r. j# {5 d# V& Q& [#加入小区面积分组的模型
. F+ a. ?; W b4 D7 qlm3=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)6 H. X! Y: P& z4 s& x5 B
anova(lm3) #方差分析# H" l5 o* H5 m" U: u
summary(lm3) #模型参数估计等详细结果0 a7 P0 J0 [4 C, v
windows()8 W0 b! G1 a5 ?% G# G/ U
par(mfrow=c(2,2))
* b) A# z7 ]' g9 X4 x2 Y: Splot(lm3,which=c(1:4)) #回归诊断) Y5 d% @0 t7 i( }# z4 U" H
" ?+ I$ K2 O5 w+ E
0 m) K" B \$ S+ D$ k$ @. ]##变量选择- k0 b6 ^( v2 v$ |
) R2 v& y- h; c+ o
& |& u9 H% U+ X2 \4 x8 D##AIC准则下的变量选择2 L7 J/ f3 R: S
lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
, h9 ^1 Q. e4 s- y5 t8 Csummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
/ o, p2 f- e: Y0 C; E2 [% e" B##BIC准则下的变量选择1 r9 v1 T0 [3 t, X+ s$ _" Y/ h
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic9 z5 C9 M5 [( D8 l# U% m* }! \" \5 R
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节# g0 l# |1 X% b
2 [8 i+ A- {4 s6 ]
Q0 ^; Y. [' k
#选用AIC准则下的模型进行回归诊断
) d+ h/ C2 a/ H! T, ^windows()
3 @: I9 i H6 l8 o3 B# |par(mfrow=c(2,2))% ?( I( P; |) ]' U* Q
plot(lm4.aic,which=c(1:4)) / ]- c% W1 b* d$ t0 G
) K3 M7 d; o0 o* | T! t% E
' e/ V8 Q0 ]2 g1 D
2 s0 X8 p! C% f' a7 f2 b% I; X( K! D$ e- d4 c; y1 l
##数据变换7 H% m0 q5 q8 t. N/ i8 [
) H& D! ^1 H p' i( P, M/ m; V
7 l9 Z7 r" w/ L' s( x u, P5 ` X
#box-cox变换, c7 g/ T8 e. S: m, K( T# L; r
library(MASS)& w! f) r7 y: L: G9 T% Z% b7 q' j- |7 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))
R2 K# f# h/ R4 ^' AI=which(b$y==max(b$y)) #定位似然函数最大的位置
5 \; K. y K% N/ a$ Ylambda = b$x[I] #精确的λ值# V7 B5 y. c" J; Q3 z! m% h0 V1 _$ B
#λ接近于0,为模型简洁性,可以直接进行对数变换
# ~8 \- ?+ K2 u, B4 wlogprice <- log(price)
7 [+ `3 n( Z7 \: O6 l- chist(logprice)
7 S) j8 U. P! W; S; p( \0 c+ R3 l8 x# o5 z: X0 t8 @7 c% d
) v0 m% Q J' E ]* O/ L4 G* A
##最终模型与诊断9 o0 U Y* B, l! d- R1 o
& {$ p3 r+ R- D# E7 r! _% P3 c8 W) l! v: @
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)! i, c& z6 J* O. S+ D% }) V! h' o
windows()7 h6 @3 K2 J, Q3 t% \! t2 G
par(mfrow=c(2,2))1 Q8 I# t0 s4 {8 `. i
plot(lm6,which=c(1:4))
* U# i% t8 M5 x* z* Canova(lm6)
# ^ Z; c$ d7 P; U6 Ysummary(lm6)
+ }: u5 K4 }6 v0 _& x6 L/ j! z8 Y' j: k/ f8 u' g
* Y3 u/ Z. _2 |' q$ ~, S- d请关注数学中国网微博和数学中国公众号,联系QQ 3243710560
- y. d# U w V R6 _2 K( `
. V! |# F; ?% d5 }
$ d& s; O N0 _, W' T5 E+ q, T
1 `" o6 _5 r1 h# e/ p& p
! t7 [1 ~; H1 S: I/ i# S; Y# o |
zan
|