- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40325 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12809
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析3 }) h6 h \& N% P: S# a- |; |- ?
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。1 }: {4 S& ~6 w( j
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
6 O/ ]9 j( L" B0 B- N行描述性统计分析,各连续型变量之间的相关关系如下:
- {' r% }6 X* F; U7 m% v* L" I![]()
% b5 K5 G; d! H% n3 }6 |名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 # P, w* g( e3 J
_8 ^5 }; p* k% V
![]()
# w1 l s9 d2 r7 Q, T1 z/ _最终模型残差图:
2 h; t& a1 k( }: l6 |/ [+ g" g ; h7 T+ t- Y. B* L0 I! s
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
% j+ ~8 h( |4 } } s* c属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
. X% C/ H/ a$ @3 z2 f3 A2 _- m$ n属性变量的具体影响在此处分析略去。1 }( o/ a- \3 w- |5 a/ q
连续型变量的影响主要为:% i, p5 ?. A1 r1 q m% c
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;3 p. ]5 u" I; v5 w1 I
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
0 a3 Q2 K# v% G, Y" z7 d同时,原本为连续型变量的容积率经过离散化变为属性变量后:8 h( F, ~- S4 W& n' p3 e
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
+ l, i2 t+ D- r$ N: R, g3 V 容积率与环线之间存在着交互效应。
+ ~# Q7 Y+ s0 Nrm(list=ls()) #清空当前工作空间( ~. F2 v0 l) s5 w5 k
setwd("D:/回归分析")4 D1 V" }5 J3 ~
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a& f6 U5 I0 X' ^$ ?6 d
View(a)
" c( w+ U3 D$ R: E9 c* w: ^attach(a)
9 M5 m, p" ^, ~/ f; Fnames(a); h, f& [7 y9 n) \
% p/ h. k: \% I" L
! R; h* k4 k/ d* y" N
##描述性统计
& e* f- J8 R0 _# m* j6 u
: i: [& b" p' h, _* y, d: n2 p$ D0 s4 c; x9 A: l; V7 Y
#未做处理的响应变量分布情况
- x" j6 m' T0 W* A; dpar(mfrow=c(1,1))
! |1 \0 f+ F+ E C1 h& Rhist(price)
# u* _( p0 d2 w. q! Tsummary(price) #查看响应变量的描述统计量( C) z7 A' M/ b3 ?% b8 t6 o6 w2 G
#连续型变量描述性统计- e$ R8 r9 ]( |. l+ w
windows()3 T. w H4 v, O5 {
pairs(a[,c(6:10)]) #所有连续型变量间的散点图0 I9 `$ i" y9 V) X8 X* R5 d
par(mfrow=c(2,2))
% l; y* v+ ~) y) ~7 |( }plot(rong,price) #每个连续型因变量与响应变量间的散点图' `& B4 o7 z8 e# y7 p5 ]
plot(lv,price) p( D# p0 u2 z$ F
plot(area,price)
% A B0 @, r( S4 Rplot(ratio,price)
6 F$ r$ x! M9 U* K. s c& ^( `7 Ksummary(a[,c(6:10)]) #查看连续型变量的描述统计量
3 B6 o. G; L7 X4 g+ Lcor(a[,c(6:10)]) #查看连续型变量的相关系数
2 A$ m" J5 ^7 p7 o. a/ v#属性变量描述性统计
1 b! x {: T; ywindows()7 @6 T: \6 {1 u: P m
par(mfrow=c(2,3))
: b) P( o1 E y- j6 z+ Hboxplot(price~dis) #每个属性变量关于响应变量的箱型图! w1 e" C: x5 R' M( R
boxplot(price~wuye) $ Q4 |+ ~/ ~! R; m' ~
boxplot(price~fitment) ) m; W! Y8 D. K; |, r
boxplot(price~ring) 4 M9 F) _! y' I, X m" r9 W0 k
boxplot(price~contype)
d, }. f7 Y. d1 \1 T( H) V. B# {0 h* V+ u0 k
3 J3 T: f% U8 `% b: u% f4 Y# F
7 r& {2 s; Q2 B& K) \
8 }# J0 W+ u+ E U
##模型建立
' f h& x j( [7 K
; r# Z2 ^) j# |6 l0 l4 b6 n. n) H( J5 t/ V y7 T) u
#在方差分析模型基础上加入连续型变量
; w9 k; ]0 k* hlm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
3 a/ G5 y" X9 z! R/ c( wanova(lm1) #方差分析
- K' q; t J# Y7 m" bsummary(lm1) #模型参数估计等详细结果
1 @! L( ^* D- O/ a+ ], d, V& G+ ~windows()
- L! q0 J. a9 b2 }! Y. W/ Xpar(mfrow=c(2,2))
7 l) c8 v: g- |3 H6 O0 lplot(lm1,which=c(1:4)) #回归诊断做残差图8 |% i S: | l- J6 M1 @) [
2 R( U, b4 R1 T* n
) K0 p: Q! e$ t
+ Y F: a% x3 }* t0 i' R; P/ x3 k
##变量处理
3 V# B. H8 R6 c2 \! G" r9 d
5 l4 E6 `; j: p: D2 h! }
3 N% a! X2 p& x. f2 O###对不显著的变量采用分组的方式希望能达到显著的效果2 ]+ f" m- [1 t, a4 U' c
##对容积率的处理
9 v: s1 ?6 {/ K' W. |4 T. E9 R- J5 qwindows()
8 n& q) a7 M- \9 f" Gn = 45 U0 S* j+ X3 w8 P" w! l" P5 h
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 " ^6 Q( H* F# i
table(ceiling(rong/n)) #容积率各分组下的样本数
: e9 o; j: Y' e3 Nronggrp=1*(rong>n) #进行二分类
* O$ _5 {: A: Y( V, L, U#ronggrp=ceiling(rong/n) 6 `+ `9 a5 X0 f7 d7 e, u T
table(ceiling(ronggrp)) #容积率二分类下的样本数
: W. _/ m r! T" O9 Zwindows()
+ B# F5 \6 A# v5 Z* P; Gboxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图' X6 E' |7 |: G: D6 P; d
windows()# B. Y: T8 a( F
par(mfrow=c(1,2))5 g; ] T5 e' v/ `3 G) K; X% r
boxplot(rong~ring) #容积率与环线箱型图: `3 d; i5 |: f5 _
boxplot(price~ring) #房价与环线箱型图
1 ~9 |* D8 j. O. Q, F- ]#加入容积率分组和容积率分组*所在环线交互因子的模型
0 @' w- X0 a$ n" w+ B' t4 Qlm2=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)( X5 Y1 i+ a4 m3 w# A' D% ?, H- i
anova(lm2) #方差分析
4 T. | G% e4 W1 r& C" {# b; msummary(lm2) #模型参数估计等详细结果1 q" E8 u- V- K" t
windows()
a' T2 e" r/ e- Z& [7 r m) ]par(mfrow=c(2,2)) O8 e+ u$ X, V, p/ H* S c5 _
plot(lm1,which=c(1:4)) #回归诊断
- `2 M, z l0 x5 x
6 Z9 b0 u Q+ F- [. d& q# t2 ~4 W0 ]& d" v- _: e9 ~5 e8 e6 D
##对小区面积的处理! S: I d* d2 C6 n7 [- O
summary(area)3 S; n5 Q6 N: S$ F" C. F5 }' m
plot(area,price), J& \( ^% k, X
windows()4 h4 W7 O' T' v, x% z
n = 150000
& p/ ~- [+ \3 H2 Aboxplot(price~ceiling(area/n)) : s( x, K+ [2 B3 e3 u' ~
table(ceiling(area/n))
! G7 h& _5 G6 k& `areagrp=1*(area>n)6 M0 z# u5 Q# \' d6 j
table(ceiling(areagrp))
& B' `& u. B/ p' J& A, yboxplot(price~ceiling(areagrp))
5 p" f8 p) ~5 m3 [$ ~#加入小区面积分组的模型
) j9 {7 U( L8 flm3=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)! B/ B: B$ ?1 q/ r
anova(lm3) #方差分析
* I2 u9 l4 o+ W( Xsummary(lm3) #模型参数估计等详细结果
: X" D+ T4 h6 Y$ rwindows()
$ g+ \: i" n& w4 K6 l0 ]par(mfrow=c(2,2))
. u, Y& C/ o5 f+ |5 pplot(lm3,which=c(1:4)) #回归诊断2 p; b+ i4 h2 C9 l" H3 M( |# d
$ B; r% S- s" {+ j, p
5 O. h5 w* S/ g
##变量选择: C8 [+ i/ X- u
# U F& Z+ Q: r% z: r: M
- r& B9 |7 u: D##AIC准则下的变量选择
- I' x" W' s+ P1 @9 E* Tlm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic2 y$ J/ W% P* ^/ P1 ?3 L
summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节3 G T- M4 X8 t- T b8 T' B
##BIC准则下的变量选择! a0 W0 h$ H3 W5 _$ v" l
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
/ T# s0 f/ @+ T }& x6 Qsummary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
1 ]$ O+ M& a) r& k1 z2 A6 i$ R9 L4 A
1 G7 m# o5 G7 J$ @6 c6 a9 Q h) l C$ _7 W& F
#选用AIC准则下的模型进行回归诊断% u! o) [/ I0 ~( j% \% }( z
windows()
, H" D/ B6 ~# w5 h" _9 x8 Rpar(mfrow=c(2,2))
6 P7 T, }, v- Cplot(lm4.aic,which=c(1:4)) * k3 p6 g0 C% W) F& a' s, g) K
- f/ z" o* e8 d: q h
- m8 q- F' |3 p( O# e& f r2 i B; X
3 C9 v f2 c& l+ V! h6 k5 J6 Z
##数据变换( ?1 O ]* }4 e/ A
9 ]/ @- e& l5 p6 `9 W0 |9 m' Y
( }* |$ V& j6 B#box-cox变换" \' j( k: t9 R7 F
library(MASS)6 e% q! k4 y- W- X; K* C3 Q
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))
, w8 M8 ?& n1 w$ }2 K- n/ X0 h( N, YI=which(b$y==max(b$y)) #定位似然函数最大的位置3 n$ c& \1 F; H7 i9 R9 \
lambda = b$x[I] #精确的λ值) O, ~; T$ J9 F) u$ P
#λ接近于0,为模型简洁性,可以直接进行对数变换5 r+ `7 M& g+ N
logprice <- log(price)
' M3 f, D* `) C3 E" Mhist(logprice)
% s3 g; |) ?' }% F4 d H& S3 L& U! s# ?$ H6 j/ D' E
8 F/ a3 ^4 Z; b5 [
##最终模型与诊断8 s- d( o& C, l' x4 j2 ~4 k
$ t/ \$ ]3 p d+ A t
v1 F7 \$ r0 G0 Y. z6 C W
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
2 W2 y! o2 V* c& M ^% Y+ D4 ^windows(): ^- n2 Q% U3 }% O5 M3 N' u; U
par(mfrow=c(2,2))# |; g* }3 p5 C- x& ]
plot(lm6,which=c(1:4))" z c& k: C( g- H9 n% v* t) \
anova(lm6)
! _+ P" f+ |- t) B5 _summary(lm6)
7 T5 w$ R5 R; b
, T$ X; ~. p, l: t' [" J
; T& V% A# x9 C) u请关注数学中国网微博和数学中国公众号,联系QQ 3243710560
L# \ _& e8 t/ @4 _) ^( l4 ^5 _: ?( v
% g' V' _4 W) S
7 |& y; m! X( p& C2 K( F$ T p$ W2 p
|
zan
|