- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 39392 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12513
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 1158
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
|
【R语言】回归分析案例:北京市商品房价格影响因素分析
& \9 M7 R8 {7 Y这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。
+ p) |; B+ F+ S. d2 t3 _( Q这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: * E7 q4 n4 C' R
行描述性统计分析,各连续型变量之间的相关关系如下:
0 f& W% J, [) s% D3 z7 @
* F# n4 C8 g( T7 j T. B0 z" m名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。
; o4 ^: e) ]. h5 T8 Y; s1 w1 \
# u/ E& @6 v H+ x6 q5 L. C
! K0 o7 M/ z0 Q3 @最终模型残差图:
h+ C- S" b. X# y! K+ Y1 Q# ~, q8 B3 ?; D) e0 s/ x
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
" q, m2 M- q4 G3 \属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比0 X1 N* Q- Z/ R% Q: l
属性变量的具体影响在此处分析略去。$ f4 Q1 T5 V9 @
连续型变量的影响主要为:
7 S, g/ l* V, \1 p) U 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;8 u6 }0 V0 k$ t2 K$ h( U- H! L6 E# G
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;' A+ R4 n' u) i, l0 a0 Z" b" t) e
同时,原本为连续型变量的容积率经过离散化变为属性变量后:7 s5 K- S2 W1 q. S+ v
容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
y4 y @. y( a4 ]! b3 }# y 容积率与环线之间存在着交互效应。
( e3 K7 }& H+ o$ srm(list=ls()) #清空当前工作空间
: R- q; O* k' g1 osetwd("D:/回归分析")
- c2 X) j# v# N! i2 z* v/ {! o) Wa=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a4 \1 x# C& J$ d3 s6 i
View(a)- a1 Z& b$ o9 M6 i2 T
attach(a)
( @7 e9 {0 p' R: @ Enames(a)
9 p1 q6 H& B0 S# I* \7 [1 t$ e
9 K" \# y" i# w7 G- _6 C) Y
+ W) b( @3 T* Z9 Q- O5 K##描述性统计: }0 {' ^1 G. S; O/ z4 [( u
% p9 G0 c9 r" l# N
~3 j" G: C) h. z9 F8 `1 l
#未做处理的响应变量分布情况
9 x3 b7 F) f( Q* G- k0 C2 z2 opar(mfrow=c(1,1))7 j# \3 [3 H1 I' I* y9 k
hist(price)
, T/ L Z8 s* r4 ~: L. Gsummary(price) #查看响应变量的描述统计量
9 T* k! s8 X9 N' E#连续型变量描述性统计8 o9 J9 T2 V, o9 k `9 |
windows()) C% C, V) ^9 @; m ~0 D" M5 }- }
pairs(a[,c(6:10)]) #所有连续型变量间的散点图
- Z! v" t, c6 Y( M! @par(mfrow=c(2,2))
# \; I; o+ Y: O8 E4 ^- q$ }4 p8 dplot(rong,price) #每个连续型因变量与响应变量间的散点图; A$ w. t( z, i2 Z9 N% W
plot(lv,price)
2 P8 O. Q! W/ x2 ?1 \1 y) W; e- ?8 Cplot(area,price)2 P6 I f2 B7 w# i* ]( n, {9 _& P
plot(ratio,price)( u# z- ], C" Q1 t. n
summary(a[,c(6:10)]) #查看连续型变量的描述统计量
1 t# x, Y$ Z1 V/ a/ fcor(a[,c(6:10)]) #查看连续型变量的相关系数
+ |4 _: A# @* z7 Q( j7 B3 p; ?8 {, G#属性变量描述性统计
* t: r1 e( q4 ^' F8 O+ D/ ^windows()
7 J* X% j- p e* o3 Xpar(mfrow=c(2,3)) ( M5 _: u4 B& Q' N" t
boxplot(price~dis) #每个属性变量关于响应变量的箱型图9 m5 ]) x! G* W8 Y
boxplot(price~wuye)
5 _5 U# |& q* s1 B& f+ iboxplot(price~fitment)
: M4 [. `" E4 U9 rboxplot(price~ring) : S. b1 e( V' X0 X9 H! L K9 n M# L q
boxplot(price~contype)3 K2 } U" m1 w6 e3 U! i
+ x! @6 M) M8 l. f3 U8 L
2 b3 } m* O) ?2 ~6 Z: Q$ ]
: [8 J; h6 g6 ?7 B5 w; k. x" y7 J7 V# T4 ^0 b) Q
##模型建立3 |$ d7 R, ?$ M1 I, z
: g' z$ w$ m. T' b; W
' P% e, Y6 w: I- k# n% f#在方差分析模型基础上加入连续型变量/ b. X0 V2 ]7 _7 G* V( Z
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)8 ?, I" f$ T5 W2 A1 m _
anova(lm1) #方差分析, u. J5 l- H5 `. |
summary(lm1) #模型参数估计等详细结果9 G2 @6 ]/ e5 C' ]4 ]$ G
windows()
7 U4 h4 W& d0 v0 d* I5 ipar(mfrow=c(2,2))0 [9 y: v3 E5 Y* g7 b( j
plot(lm1,which=c(1:4)) #回归诊断做残差图4 l$ q/ u4 O( o8 W6 ^" t
7 c4 E. d( I# _2 Q( `$ M3 d" c, M N
* y& G7 {: S6 Z% e- a1 H8 f3 p+ X! |4 v' f5 A. E) a
! n0 O; O9 @8 M7 P1 _- Z% y2 Y! d4 E##变量处理
: M- M( a3 l F4 H+ J* n4 z& {! H7 v, A/ S `7 I) M
) A3 h& A0 {0 C$ W n" l###对不显著的变量采用分组的方式希望能达到显著的效果
$ J, I- R6 v: W D. m3 h##对容积率的处理# A0 {8 k# V/ d$ y0 ~& r9 Q( z9 ~
windows()
, s1 r( ]& Z* An = 4$ i! X, w9 o' Q% w t8 U8 a. I
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 7 R2 l+ P' d& D
table(ceiling(rong/n)) #容积率各分组下的样本数/ m( w2 s( ~ n4 P" \
ronggrp=1*(rong>n) #进行二分类
$ B* X. n! `6 }1 W" o% R#ronggrp=ceiling(rong/n)
. H& [1 a5 M0 M4 c( p0 Y, B7 C; Rtable(ceiling(ronggrp)) #容积率二分类下的样本数" P; y) h5 y3 Y% P9 r
windows()
) T0 e$ `4 ], b- l% u1 M: F) aboxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图7 l' G9 c, A6 \9 G4 o4 E) w7 W
windows()
( } Y8 f' I& S0 u3 B4 @8 opar(mfrow=c(1,2))
( Y' q% [2 h+ x9 `0 k+ Hboxplot(rong~ring) #容积率与环线箱型图
1 }9 G! R* |( A$ b" G' Mboxplot(price~ring) #房价与环线箱型图
0 X( ?- A2 o$ T" T8 a: E. y }+ J#加入容积率分组和容积率分组*所在环线交互因子的模型
4 x6 E& ~4 n7 p9 A2 ?1 flm2=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)
; W" S' T8 K: i+ c4 u0 k# Manova(lm2) #方差分析
% g! b* J/ A3 V9 wsummary(lm2) #模型参数估计等详细结果
1 J9 D0 `0 v. a) C8 M( zwindows(); p+ i' I* q7 D, y) c g
par(mfrow=c(2,2))( j# }+ W( w+ d: t+ G( p! b! y: L
plot(lm1,which=c(1:4)) #回归诊断4 s, @1 K4 V% i' a7 g* I
3 M/ Y$ H) A/ p& e6 M
' [) O5 ~) c5 N( Y. B' l##对小区面积的处理
2 I- m; a, }" L' j6 [) Y# C6 c$ T+ esummary(area)6 z8 O* D- d" X7 a
plot(area,price)9 [# p1 N! z+ s; A6 V
windows()
( C5 R; W6 c( k. N# sn = 150000+ k9 v3 p8 B8 O/ Y9 {" i4 K7 ?; J* K
boxplot(price~ceiling(area/n)) a8 n; x1 Y% _( c% w+ f' n
table(ceiling(area/n))
9 o% H# _: k# e) V6 i: B& H7 oareagrp=1*(area>n)
( d5 d6 j! u- }1 M2 B: B0 C& [table(ceiling(areagrp))
, w: @1 w4 K. j* Dboxplot(price~ceiling(areagrp)) X! `$ Y; c% K
#加入小区面积分组的模型7 d- I. ^3 Y" [1 H
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)
# [3 d* A4 R3 E9 K5 T% xanova(lm3) #方差分析
. ]7 Q+ Q( f7 M; I: Z4 xsummary(lm3) #模型参数估计等详细结果
* P* D1 n2 i rwindows()2 h' _7 m& `$ s& u& U
par(mfrow=c(2,2))
1 C1 F6 Z# q- _ w) z; l: bplot(lm3,which=c(1:4)) #回归诊断
9 r+ j& h) \! F k3 |. B4 E T2 Q. ]" Z0 [
7 Z- u) V' F- X##变量选择
- p( C- [/ U. L |" c2 x6 W" S
' v, v0 Y: Q# Y' H+ _- e" V3 _2 `$ H1 B8 F
##AIC准则下的变量选择& F4 v+ }" u5 A+ Z2 Q, I4 X$ c/ ]& D
lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
3 g/ A6 z) Q% ?4 gsummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
{6 P; t/ S5 M/ w% b##BIC准则下的变量选择- h4 j# d$ B$ _
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic% |0 r, e6 o8 L; ^
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节) t- X q0 E: Y, I$ ^* _ C# S
8 ?! b! n/ O5 J* x
- t$ g! l) I# S. e& \#选用AIC准则下的模型进行回归诊断
6 f; ~/ X: C, Q1 {windows()
! w7 ]: v! x2 E% p- @2 Q% Bpar(mfrow=c(2,2))
4 M. L" {4 D0 i' B4 B0 W- Wplot(lm4.aic,which=c(1:4)) : ?3 {, R9 H! {
4 c) ^, x' l; \! w* w" g
, p; X, Y m5 {( ]5 W) f3 n. z, c$ E1 z8 t& G' Z
/ g9 f, x, {& B0 Q##数据变换% q, X- A# U2 N3 W! L0 f1 `
8 o1 }/ S4 ?, g- ^0 N% l
9 N% [2 T5 @/ X5 x: _
#box-cox变换; d( n, f! U' t' L& g1 b
library(MASS)
* @/ L! ?# |, h: q1 gb=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 ?& T$ v) V# E8 e
I=which(b$y==max(b$y)) #定位似然函数最大的位置
, }3 @# B2 _5 i# b; m t0 slambda = b$x[I] #精确的λ值" G& \+ x1 J2 g8 f
#λ接近于0,为模型简洁性,可以直接进行对数变换
2 k6 j7 u$ ^ A/ J# H+ @* rlogprice <- log(price)3 Y5 P' C3 y8 y
hist(logprice)0 M; d, } Y& k, H2 {
P2 `( H# B. b `( l- I5 r
0 a; h9 W# P' |4 l0 e' i##最终模型与诊断! S: L6 w8 L8 v M: b
. A9 d" S& ^6 A' \1 v) U5 ^* ~! l7 h( j6 N% C: T- P
lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)- q% E$ x" h8 V s) p0 d) i1 Q b( W
windows()
3 d! i" E8 P$ h4 N) ^- Epar(mfrow=c(2,2))& Y! @0 q; L( ^9 c2 \/ L0 D" Y
plot(lm6,which=c(1:4))
$ M7 R: h2 X5 z4 d/ m5 S' U# V! yanova(lm6)
( r* Y z( F9 E, ~# T) psummary(lm6)4 @0 v9 _6 _/ j1 Y
( C4 F* [# B0 @, c. _& f
& G! v4 X6 c" G& ]7 N! J& m6 C5 H8 a& Z
请关注数学中国网微博和数学中国公众号,联系QQ 3243710560# k/ J9 E2 s: Y# I, E$ {
1 ^$ O; @& b) L! R
6 \( x/ S* m# ?' l6 n/ d
. w; y7 y" q5 g$ q7 P
- c0 p' u& j$ j: x |
zan
|