- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 39407 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12518
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 1158
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
|
【R语言】回归分析案例:北京市商品房价格影响因素分析8 @: J" O4 x1 E5 F4 }# i0 a
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。5 O- g0 u6 }- N) N" O9 x* L
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题:
# H6 m+ [2 a& `3 _/ g+ T) d行描述性统计分析,各连续型变量之间的相关关系如下:
( N; S2 k! i% m& P& ~- t) }6 z+ N& e' n. ?
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
: i/ a! X( i; B3 }7 x
# V' Q) M) Y4 z. e- J
: @ c* o: d( A; O6 A最终模型残差图:6 d4 B& q2 {. [% L: [
4 L+ r# X, W1 Z8 m0 n7 K. E) @
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:8 E! C* _' C$ ^7 v) d) D
属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
& o/ t/ E! p$ ], l3 J/ g9 ^; V: X属性变量的具体影响在此处分析略去。, X5 h" l& h1 M' |8 I9 Q
连续型变量的影响主要为:
+ w, c6 [& b9 ~% f# }& `; e 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;! m# G; C; M" b. a3 ^7 A
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;3 H* t, P9 O' `& L- h3 d
同时,原本为连续型变量的容积率经过离散化变为属性变量后:# f) x m: o% d' a7 z
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
0 {0 ^3 G: t# F8 g% u 容积率与环线之间存在着交互效应。. o" m% C2 T2 X+ k* y
rm(list=ls()) #清空当前工作空间( m. H: U- p& Q8 f3 l& X
setwd("D:/回归分析")% } Y$ `, ]- p( M
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a2 |6 V& ?2 ~9 i- d
View(a)
% K: w, N9 f a4 F' {5 R+ D ^attach(a)8 u9 k F% Q: w; E [0 u; _
names(a)
4 ]. ^* S @+ i# g( m* u- n0 {, \2 ] F5 v8 p
; P8 m- y* {9 _9 | k. l+ `, G
##描述性统计
. l- ], n3 c1 S. K
8 {3 f8 ]9 d- x$ r+ q9 _# |2 {7 ?7 v9 P* D2 d
#未做处理的响应变量分布情况6 v5 {; T9 [7 L( t. ~
par(mfrow=c(1,1))
/ ]* B9 J4 N* L+ N* t5 n+ D; K+ q9 Ihist(price)* N$ P' z1 _2 B, [; Y+ L7 R
summary(price) #查看响应变量的描述统计量
/ T. M* W2 D* i: U' e#连续型变量描述性统计
$ D8 Q' v1 R" u( T6 k m* Y ]windows()+ i8 ^. m0 |7 l' B& |& Z ^
pairs(a[,c(6:10)]) #所有连续型变量间的散点图1 O: g# X! u& R
par(mfrow=c(2,2)) 5 ]4 T4 @9 C2 M, |: S
plot(rong,price) #每个连续型因变量与响应变量间的散点图
/ R3 t0 t" a+ D3 ]# v7 t- uplot(lv,price)
. i M* B9 P" t5 I/ [plot(area,price); d0 _ `' U. o+ S' Z8 b+ ]; m
plot(ratio,price)
8 H3 W$ S2 e2 }# ]summary(a[,c(6:10)]) #查看连续型变量的描述统计量, c$ J! q" q4 v6 k3 ?
cor(a[,c(6:10)]) #查看连续型变量的相关系数
! r. a# g5 Z, `( F#属性变量描述性统计
' ]6 _: `- @" j2 _* R% i/ mwindows()3 C4 Q7 e/ [1 F* \2 }6 v% |
par(mfrow=c(2,3)) % @& O8 s) q' C* ~
boxplot(price~dis) #每个属性变量关于响应变量的箱型图5 H2 i% I0 w& f% r( H
boxplot(price~wuye)
9 P4 g& t/ Q0 ]4 a, h5 Uboxplot(price~fitment) 3 Y- o# A/ P. S+ @, L' ~7 o
boxplot(price~ring) , }4 d0 D$ d7 F& _
boxplot(price~contype)5 r! U4 ^- O5 V: L( U: o3 ?6 H2 I O
* Q' x; v" x* b {) E7 m
8 A2 f: H N$ S. @, l+ h
0 t4 S# D, S7 E
$ B1 H2 z$ j/ g0 E. l$ w5 Y2 p##模型建立
w! d4 g7 {7 a* ^/ |& ^' h% n! b! v* t* p4 f6 |" x# U% Z
" W' v: [2 M$ N' |
#在方差分析模型基础上加入连续型变量5 B( U3 X: ~: q/ q
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
5 D7 U1 ? Z- l' o) aanova(lm1) #方差分析
; b$ U* z; z2 I$ \summary(lm1) #模型参数估计等详细结果
, e* ]+ @; M6 v0 twindows()
: m8 t& M/ ?5 i; A. qpar(mfrow=c(2,2))
7 Z- _0 U3 u" d9 a, xplot(lm1,which=c(1:4)) #回归诊断做残差图( ~& o; P3 F3 ^7 e) X
' }4 Y0 h0 P9 I" M) x4 I+ }
& }1 v2 V1 t1 e1 n
4 {' ?) C. ~3 g! [2 G, ~5 v% q, X2 J6 i/ a
##变量处理 b5 \) W2 \3 z, S' Y2 _5 [8 w9 V
3 }0 ?$ G1 j# m
r! d3 s' C4 M( p: T& y###对不显著的变量采用分组的方式希望能达到显著的效果
2 A" x4 X4 x- ?( C& V: E/ f# _8 v$ K##对容积率的处理
, O. x$ u2 l C& T8 X3 `% [windows(); G3 s5 Q. G+ s4 p+ g2 f. c
n = 4; F4 X, \ H1 f. x; y2 C
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
- [% i& S Z i, {table(ceiling(rong/n)) #容积率各分组下的样本数
6 O6 \5 K' B( y& G- w8 g# ?ronggrp=1*(rong>n) #进行二分类; Y# b$ ?$ ]. U4 P" t- J
#ronggrp=ceiling(rong/n)
6 V) M2 |# n4 ]+ X. U6 b+ _table(ceiling(ronggrp)) #容积率二分类下的样本数
. n' {* J, c! c' U. @9 \* L3 Lwindows(), s: R$ {- K/ x( H3 Z" c
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图
& B( A0 v$ X1 `4 V# K& qwindows()! s2 w F3 d/ ]; M" w. G; _. g
par(mfrow=c(1,2))
' P. d: @9 I3 Eboxplot(rong~ring) #容积率与环线箱型图' F+ t+ ]/ C4 x, e1 ~. f
boxplot(price~ring) #房价与环线箱型图 ! _0 E8 D! U7 L! b& @5 k
#加入容积率分组和容积率分组*所在环线交互因子的模型
2 ~+ Y/ P. G! X3 \! U/ c5 O* Nlm2=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)
. {' _1 E* E6 `- R2 ~: xanova(lm2) #方差分析
: E1 y9 J e& S1 o4 N. D) \summary(lm2) #模型参数估计等详细结果2 k9 B, Q# {+ B
windows()# D s! t: a* h1 y
par(mfrow=c(2,2))5 z6 n; U4 O5 k2 N( U6 c ]" t( }
plot(lm1,which=c(1:4)) #回归诊断5 ~" j1 C4 {' u- e
2 n# L3 w6 a8 o x# j! J
5 l v y% V% S##对小区面积的处理
; h$ m' \- x/ [* hsummary(area)5 O; R. O: \- `; j
plot(area,price)# n0 h+ w2 o4 S
windows()4 p" E4 M# v; \* i, _# e( R' J
n = 150000# f5 R5 t2 A' l
boxplot(price~ceiling(area/n))
4 W4 t' z$ e" W: h" ptable(ceiling(area/n)) " \% x) @4 s. X2 s8 G
areagrp=1*(area>n)
+ b8 S y5 K4 q8 o, E! o- S: atable(ceiling(areagrp))/ `, i/ N9 D; T# @+ A/ [( W
boxplot(price~ceiling(areagrp))
, N. j. M9 Q2 }2 l+ s7 Y W- E1 R; T( G#加入小区面积分组的模型+ a9 i/ {6 w O7 A+ n. \3 f
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)
6 I+ k2 C4 C9 i" m! \anova(lm3) #方差分析
; I0 d* l. D7 c5 \7 @- Osummary(lm3) #模型参数估计等详细结果
1 {; N: I* r( V8 D, p3 _: B9 e3 g! mwindows(): j4 @' j0 i+ m" B( ]1 M
par(mfrow=c(2,2))
' I. Y) A/ B9 l2 W% ?plot(lm3,which=c(1:4)) #回归诊断) F( ~- ~% L2 T$ ?2 o: R5 j
& o3 l. P3 Q7 H
/ C% B$ L/ j; g( _$ Q. m# u% F##变量选择$ a# y# K5 Z% C: }( d, X
* k- z9 K4 K. x' i- ~6 z. n
2 ~2 n. v! C: y5 a$ f$ j! v##AIC准则下的变量选择 t* `0 K2 J$ E6 S
lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic+ v/ |, s3 e% e9 S' S
summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
3 M! l% h" d2 r7 g, u##BIC准则下的变量选择$ E7 A6 N! i' ?' l
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic3 f" O2 u* A3 k; g3 y" y8 T9 S; ^
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节5 s" @/ a2 w) v/ H+ @9 j7 W' J# D
0 o& S6 `; h" F3 ]+ V" j
/ Z, I9 C: c0 A; n#选用AIC准则下的模型进行回归诊断% y# O9 |/ k1 s- U# L: R
windows()
% I* I: G9 l7 ]+ Q; X* bpar(mfrow=c(2,2))5 l7 z4 d1 B( M+ t
plot(lm4.aic,which=c(1:4))
" d7 c$ i: ^4 X; n2 ?7 D& g7 B+ o5 c/ S- F
3 c2 D- O3 W& G" j! U
% w$ V0 z" n7 `2 |" M/ S7 T
9 C0 A( Q: ~# [, S2 h##数据变换! |' T* P1 v# n* J8 F m- T
; D. @ i' H9 ] ^; `: c! j2 d) V
; I* E/ h' D( j" G8 }#box-cox变换6 V% L! I0 f+ ?
library(MASS)/ |( _5 p& o5 |$ j) m
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)): A" D6 B y! ]# T" Y
I=which(b$y==max(b$y)) #定位似然函数最大的位置
4 L5 A" `7 D0 E! j& M. q, l( |lambda = b$x[I] #精确的λ值
$ K" |/ Q; @2 l#λ接近于0,为模型简洁性,可以直接进行对数变换: O2 O l( ~, b2 a& u; y% }' r
logprice <- log(price)
( G9 W8 A/ r( ?' c- }. \hist(logprice)
1 m; H R l' F; k8 g
& O3 b$ j% ]5 G/ F3 O* M
. f6 H [3 S1 p- B6 {& i##最终模型与诊断$ s G6 }! C) M! f$ Q! Q
; x- {8 m0 S4 H* s1 X; b9 H( L6 u
[" o. `2 c+ ?lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
6 b V8 o8 u) ]: j# H9 ]$ Jwindows()+ H# x s& B! {( F0 A! ]( Z4 H" ?- {
par(mfrow=c(2,2))5 R! B0 C8 m" [
plot(lm6,which=c(1:4))
" R( e- h( ]8 p+ Wanova(lm6)
5 G& n, [! X* R& @- C2 msummary(lm6) ^8 t/ L7 ?3 J! z" K: t, b
, t& e5 W& l! o' j% o
4 U% J3 @2 b' c请关注数学中国网微博和数学中国公众号,联系QQ 32437105603 Z& u% T1 H: x/ J4 m
$ u& r; v3 D9 W7 D: b2 M5 i% x/ \% t. g5 z, Y* h
5 D' [3 j- [1 n4 l
* O' R$ l T w5 o0 T |
zan
|