- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40222 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12778
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析
( L7 Q! K5 l6 i$ @9 o: } k这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。
; }# b" q1 b7 J( V8 ?4 v) r这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
& O2 z! T' x# y行描述性统计分析,各连续型变量之间的相关关系如下:; v9 c M% ^/ z& s! E
7 ?+ p9 \ U! m( x1 f. {: u
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
9 Y+ B. k+ N- N. j , W( S2 ]9 s, W6 x8 g: M$ n# ~3 m( V
) V/ o9 E- C X8 {
最终模型残差图:
' W( r/ F6 r1 l3 ~3 q @1 C4 n 4 M, ~7 m) p: d
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:3 r: k, L% w" [- E
属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
9 b$ \$ X4 E0 t2 u2 b属性变量的具体影响在此处分析略去。3 t( s% j; O2 V" x: @
连续型变量的影响主要为:2 Y8 B! A# V& V/ z0 M+ {$ K; Y
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高; d* p6 L( ~ ~8 A7 U( z! G1 F: E
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
9 T( _8 L" Z/ F1 ~9 a: c. ]/ o; s9 B同时,原本为连续型变量的容积率经过离散化变为属性变量后:7 U5 P3 |+ o8 P$ u3 `, H
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;/ B" z" F, l8 G) @( W
容积率与环线之间存在着交互效应。( g% V1 B% C8 j( O9 ]$ h8 ^
rm(list=ls()) #清空当前工作空间6 F9 Y% Z- ^) x) w4 y' J1 @2 M
setwd("D:/回归分析")& G2 S8 g9 { O8 K; ?/ a: f
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a& u0 l% S. u3 {$ ^
View(a)/ @+ w" U7 U9 t/ E. y
attach(a)" j( z7 Z; E- p2 Z u/ [
names(a)
# ~# ?: Q" m$ e- c2 ]% e8 I" i9 V$ O5 l) \7 h3 I/ k' x6 P
& |7 z4 [+ y# @3 \7 ~* P##描述性统计
: H- K; f6 ^0 }& G8 g4 L
" N+ c& E6 |) |' w% v4 w* E' Z$ q* A! s$ T9 r$ @& |
#未做处理的响应变量分布情况
. A0 D. ~2 I* @" w! s" mpar(mfrow=c(1,1)) Z" i1 T% O- S4 C
hist(price)9 h: U9 x' b# e
summary(price) #查看响应变量的描述统计量, \# B) U& h4 C8 T& b
#连续型变量描述性统计* h) I0 i( I! F* [% z
windows()
2 e- V, W$ a, b2 a) d! hpairs(a[,c(6:10)]) #所有连续型变量间的散点图9 q( J( _' s: R! F g- ~- |* L4 F
par(mfrow=c(2,2)) - \3 W/ j. J! M7 [0 J. D1 _/ ~
plot(rong,price) #每个连续型因变量与响应变量间的散点图. ~9 o9 N Q% P' k. H0 v6 K5 k
plot(lv,price)
4 P4 V d2 y! }/ X4 V! Iplot(area,price)
. g. ~6 F3 H+ y' |2 l8 Q5 {; b; Vplot(ratio,price) n3 t; U# Z1 z F( O* U
summary(a[,c(6:10)]) #查看连续型变量的描述统计量# c' f1 G0 r, \0 V: g' \! D
cor(a[,c(6:10)]) #查看连续型变量的相关系数' e$ ^- D* L+ M+ V
#属性变量描述性统计 e% b7 r8 S; C8 B* J- m
windows()
% m, G1 w# ^+ {2 a+ Xpar(mfrow=c(2,3))
, b& a# [7 K+ Z# E. ~boxplot(price~dis) #每个属性变量关于响应变量的箱型图0 s, D$ s9 A1 j( _- n) {4 |1 T
boxplot(price~wuye) 5 P* }3 _; @" v3 x5 s5 i2 p, I$ Z
boxplot(price~fitment)
2 j) d$ n" x9 ]+ \2 v( @boxplot(price~ring)
, ^* [# c4 }& d# _9 \boxplot(price~contype)3 A, B1 I' `( n0 G# |
- g0 D5 A6 X- d$ ~' g+ h2 a3 e% L! }) r j; s
" Q h0 V" g( b) n8 j# S/ K
7 Q5 ~( M1 d4 c2 S; E##模型建立
. N/ A; j8 r! g1 g: C; _* Q& s& P( T1 H7 l
0 s& T! x. C* k; f8 P& s
#在方差分析模型基础上加入连续型变量. |1 ~7 @9 ^$ e$ v( m
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)4 o$ ]! T" }0 C" ^9 i
anova(lm1) #方差分析$ X q! l% N$ B8 Z, q7 d5 f
summary(lm1) #模型参数估计等详细结果
/ y% A l+ G. Z+ O' W0 M6 R' qwindows()
4 s+ S" B1 b2 ]: spar(mfrow=c(2,2))
) o) ?9 t' C! d d) M Q- ~5 v* Eplot(lm1,which=c(1:4)) #回归诊断做残差图
2 r% l$ G* q% L6 m/ B2 T
! k; t2 `- }3 u4 f# A" t' m9 u8 K9 T, K- K7 \7 J/ H: q' ^
# b% {/ s. v( ~1 _ E! D% Z0 `% w3 o
}( \, c9 U) F7 `; {##变量处理' X4 [) ^: O$ K, X
8 c) b, s: D' m$ i- g# x
/ Z# O0 n9 u8 s
###对不显著的变量采用分组的方式希望能达到显著的效果
8 a2 F6 u# r, ]6 n( K, ]; B##对容积率的处理
3 E( b4 r/ q9 T9 p y( owindows()3 Q, n9 R/ C0 c* U
n = 45 Z! N4 p5 G& K' ^
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 7 U# v# v8 u. R6 T6 m8 G- u! Z
table(ceiling(rong/n)) #容积率各分组下的样本数
3 S0 \+ i* k* }& o ` lronggrp=1*(rong>n) #进行二分类
, e. ]+ g; D2 t C#ronggrp=ceiling(rong/n) . p- E* E S' k
table(ceiling(ronggrp)) #容积率二分类下的样本数( ?7 p2 Y3 D$ D$ C7 E0 P7 m3 F
windows()5 n7 ]$ T c# V% g9 y- M
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图" v0 W$ f! ~5 W& N3 S. t8 V2 ]+ r
windows()6 z7 R5 P. T+ W& k: q V# j
par(mfrow=c(1,2))8 n# w* f: K$ n
boxplot(rong~ring) #容积率与环线箱型图* V1 _6 z/ U o' U% f" h% I9 }, @/ d
boxplot(price~ring) #房价与环线箱型图
7 g4 \+ S& Y0 n) ~5 K' N' E#加入容积率分组和容积率分组*所在环线交互因子的模型% c7 d& Z Y1 [ |$ q) X0 E
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)2 @2 u9 R, o. F0 A+ N3 I( z/ l! x D' T
anova(lm2) #方差分析
2 @6 [" H3 M( b, B" n1 {summary(lm2) #模型参数估计等详细结果) x- O& G9 L; D7 m
windows()
! A6 m4 |) |/ Y! q& _par(mfrow=c(2,2))
0 G) E% l# `" ~3 T. z7 g# bplot(lm1,which=c(1:4)) #回归诊断
) d- @) Y1 ? x. O
! M( c7 ?2 x- M( H
8 M7 c% y' j8 ?/ T4 R; U g8 K##对小区面积的处理8 Z, v$ |5 e( \8 s
summary(area)
3 Q* r, w2 Z4 T2 \! Aplot(area,price)
|4 n d( }" @& |/ S' ?windows()# L9 K r; \8 e- o
n = 150000
# X- O2 a4 |( [, M" ~# y0 R k! `& sboxplot(price~ceiling(area/n)) 2 J6 X* f. J+ f! v$ [$ r
table(ceiling(area/n)) % j B0 Z, U8 f/ M
areagrp=1*(area>n)9 w8 h: I5 f% m6 D' \* l
table(ceiling(areagrp))
3 u3 r7 |# q/ x' d) E) pboxplot(price~ceiling(areagrp))% y% x1 b/ U) U' R
#加入小区面积分组的模型
! ?6 h& K3 O, B5 ?9 P' {8 a- 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)
- f: j2 r1 H! @1 E$ W% w7 R' j- yanova(lm3) #方差分析3 E) Q$ @4 `+ N0 B( ] r2 J
summary(lm3) #模型参数估计等详细结果
, K; E1 K0 [ d* B% {1 |) Kwindows()
3 _8 l3 L; q. d8 L% P$ r/ Ppar(mfrow=c(2,2))
. f( ]4 G8 H4 F" m+ jplot(lm3,which=c(1:4)) #回归诊断
( X8 l2 F* X' k5 h& _$ O4 A* Z# j6 {. \, [& c& I ?7 s& J& F. b
6 ~2 J0 ~9 d& a5 v##变量选择7 J3 q5 w; H, j2 Z" b$ f
" H/ k; _8 [3 U& D, N. ] N) x1 S+ B
& o- o8 Q; y8 E; E: D1 k$ N" ~' U3 C##AIC准则下的变量选择
4 X; W, `0 n/ s! glm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic' m3 c' y+ m! v$ y: x& C& C
summary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节+ g3 `& F m( L
##BIC准则下的变量选择, z# d# p5 b0 p2 i* z! P" Z \! ~0 I
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
" E5 w @8 O; @; Isummary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节: U! B. \$ v. E1 R# T1 J
7 n0 I. L, a3 I. z
5 K" d4 O' K$ p8 ~#选用AIC准则下的模型进行回归诊断( j& W( s$ u. F X/ ^
windows()
, u$ _& j9 T { Y7 N6 R' H+ I* V J1 ppar(mfrow=c(2,2))+ w3 a- d' {% q6 L" M! R/ Z
plot(lm4.aic,which=c(1:4)) 8 j/ q0 \8 |# w' ~/ `, ?- q
' _* _' O3 V7 g3 u" G4 c9 @
7 H' t7 c+ z; x4 Z8 n' ~/ V" z- v9 M
8 |7 T k K v3 R##数据变换
% A B& Y$ {) J
4 Q. f, V6 ~, I& x \. B- L9 [
) }: w! O+ o0 W! u#box-cox变换
4 o! w( u: Y! W: }3 s) ?+ Clibrary(MASS)
% }8 M5 s% L+ `5 n4 ~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))" g" b; b/ }. g
I=which(b$y==max(b$y)) #定位似然函数最大的位置
* l( k+ s9 \7 E3 K( C/ zlambda = b$x[I] #精确的λ值. m3 S- O0 ?$ r# L5 O' s
#λ接近于0,为模型简洁性,可以直接进行对数变换 d1 J. F0 Q% T5 S7 X- M' C
logprice <- log(price)
2 S* T0 V, X ^+ u9 _ jhist(logprice)8 x3 Q, Z0 r+ M) q) I R/ ]
" {- a) }) D7 o1 s: r# f) F8 e, Q
, E; K& l1 q H##最终模型与诊断
* b2 Z. e. D% ?- g4 P4 s. u. E" d0 w( h3 y1 Q; c7 ^; p2 o& _
, r5 E5 c+ L b. }
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)& ^; R" E( G9 w+ @. v+ u" u+ Z
windows()
, d) q* H+ B& @- w/ K0 ~; _par(mfrow=c(2,2))2 t' f, F+ ~; i& l6 a' r( @/ @
plot(lm6,which=c(1:4))+ [6 o" d+ l% L! r: X1 m
anova(lm6)
. j3 S) n& U& x* osummary(lm6)# d- X' |! w) C
0 t' K) N5 k; b* `4 F
/ r# i l. Q9 u# @/ o" h% D
请关注数学中国网微博和数学中国公众号,联系QQ 3243710560
9 K6 S5 L2 A# T& f) d; F
1 P- j# r; s% M5 M3 Z+ {
9 D4 e6 B( l d* T3 h2 b+ _. G" {/ n% y" n. g9 o4 ~3 H- i( v
9 ]" I! h6 D0 w5 l/ y, E
|
zan
|