- 在线时间
- 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语言】回归分析案例:北京市商品房价格影响因素分析5 s# W6 u( w, {% Q4 Q' e/ B
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。3 ]! a) N( _, `* G; Y! z H
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: 9 y( C6 G! B! S* k" }5 e
行描述性统计分析,各连续型变量之间的相关关系如下:
' p+ G$ q* z% [1 O% F0 @
/ z0 M2 E! C3 ^, _名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 " W9 R* z5 G' }6 |
# U/ _( t2 P( J/ b* b- y3 o
! D' y7 g1 Q ?/ J最终模型残差图:: _2 n: l3 R W# C: Q
$ t; L% @: l$ t/ q
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:4 u5 E" R& ^5 Y: M
属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
- E5 \2 i M; x) ]属性变量的具体影响在此处分析略去。' R. P! f# [& p$ ]1 |
连续型变量的影响主要为:
; t4 c. z2 A$ b0 x) \ 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;. f# H7 n3 u- \. n P) O
停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
0 |7 `- e2 N3 I9 x/ o' W0 b, ]同时,原本为连续型变量的容积率经过离散化变为属性变量后:
5 d" \3 H8 p# ^- E9 c- G8 i 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
6 \ S7 U# s0 }2 `5 @ 容积率与环线之间存在着交互效应。 Z0 G1 c5 r( Q# ^4 f4 P; k _6 N. }
rm(list=ls()) #清空当前工作空间- `) @) @ L6 G7 _# Q' o
setwd("D:/回归分析")
: O# C$ r& \0 P# i/ E0 ]. M& B8 ?a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a
& Z; v. w; X7 `6 a( B! f5 k9 ]View(a)
. u1 J5 T; a1 x. aattach(a)5 U8 n, v0 \3 C; |& w* [
names(a)4 g2 D' }; E! t
Q; Y2 U5 u1 |. f, f6 m7 V! l e4 l3 R! {
##描述性统计& h, O+ @) _% w2 l
1 z- t5 B, J% O6 ~4 ~- o8 W
; P) O% u" M( x" y8 [" i$ \6 b
#未做处理的响应变量分布情况
. P: Z% F- b# \1 k9 K R+ J* dpar(mfrow=c(1,1))
, i3 g; J% R) \' ~hist(price)
6 E; V- W' F8 n$ Y/ Psummary(price) #查看响应变量的描述统计量. Z3 O$ {# d" d2 _. m! L
#连续型变量描述性统计
, V/ B; _. r' i7 q% nwindows()! D9 Z- w" r9 [8 p- P6 @
pairs(a[,c(6:10)]) #所有连续型变量间的散点图# j; e' L+ R! ?( @
par(mfrow=c(2,2)) $ |' a5 N, W F) A" L5 V1 n
plot(rong,price) #每个连续型因变量与响应变量间的散点图" `$ _/ @- q0 R) z: G
plot(lv,price)
4 I0 L+ c- N; K- s4 d* n) u: nplot(area,price)
8 l5 p) b' u; `! aplot(ratio,price)
% s2 r! t" o' Q9 ?5 c$ Msummary(a[,c(6:10)]) #查看连续型变量的描述统计量- M. P, b: Q* R/ C
cor(a[,c(6:10)]) #查看连续型变量的相关系数1 U. n3 ~3 e/ |" B# Z+ k7 c6 @5 Y
#属性变量描述性统计/ ?1 k, z% L c
windows()$ i) O; S: }+ W4 |. S! M4 i1 ?6 W n
par(mfrow=c(2,3))
+ X5 O- K( X% [* A: hboxplot(price~dis) #每个属性变量关于响应变量的箱型图
8 e! \1 O0 \2 b8 r5 [boxplot(price~wuye)
: A' u( g4 R8 a1 ^ Bboxplot(price~fitment)
. I w8 I3 o5 d t' @boxplot(price~ring) 0 x# F: }. A) h* n+ F) y2 E! S/ o
boxplot(price~contype)0 @, x5 ?' J: x% b; F0 J4 b
( l/ ^+ q6 s+ ]' r; G% h. v
8 A- L9 w; v1 w$ L) P9 r P- H2 ~ ?! q9 d% s. ^6 m: B# I
6 D- |! Z2 [% g7 q; S, U1 h! U
##模型建立7 N0 U. q8 o D0 a+ C8 w
, R) f" G( ~: G% {( C
* x- V$ Z, y( [. Y, O4 l
#在方差分析模型基础上加入连续型变量
9 P. M9 c) a" T- ]lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
' ^# ]8 ^: H6 S/ }9 e6 O# danova(lm1) #方差分析
% g) d( R% z9 v; t6 F+ Msummary(lm1) #模型参数估计等详细结果4 B8 {7 ^* A: C* G8 u
windows()
6 h8 m$ k& m( L3 V: R& l2 Opar(mfrow=c(2,2))& h* ~: D2 V! O) E; e# a
plot(lm1,which=c(1:4)) #回归诊断做残差图2 x$ G. i! n- Y" V" O/ A# v2 n% @
# M+ U3 d2 Q& [. S! E) {( i! P# [! E; j
9 s- I+ w9 h1 P3 e3 E" `2 b& v
##变量处理
/ l- o4 Z3 ]0 z1 d) [' ^8 I6 ~- M- V/ j
& H( q8 s0 [: G" t3 W" c0 W. @ E###对不显著的变量采用分组的方式希望能达到显著的效果+ e% V% l' U- A# p
##对容积率的处理
# f3 ^, @' U) e. G. G& D0 `! Xwindows()
' F. N, l$ P) D; r4 E6 Gn = 4
y7 S- l6 b; S" z+ m3 H6 ~( Pboxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图
9 u( d9 ]% q3 [0 ~table(ceiling(rong/n)) #容积率各分组下的样本数
' W& W5 m: E. T1 O+ _0 c% |. R( Jronggrp=1*(rong>n) #进行二分类
6 b e: ~, r! a#ronggrp=ceiling(rong/n) + s3 A) s* X0 ^
table(ceiling(ronggrp)) #容积率二分类下的样本数
. V, g: d+ p6 a9 kwindows()9 b- D: f8 Z* |/ g- D* v8 I
boxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图
& R1 K1 L9 m. W" B% Rwindows()
|, m% q% d- Y: t# I; npar(mfrow=c(1,2))
( x6 t; z$ W8 @. M7 T& a0 N: }; nboxplot(rong~ring) #容积率与环线箱型图) [+ ~. c. W3 |1 R; b% k# w
boxplot(price~ring) #房价与环线箱型图 : G: @; J4 L" @$ X. f# k- G/ g+ c
#加入容积率分组和容积率分组*所在环线交互因子的模型
8 a7 \, j/ i5 Dlm2=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)
; s' O. H4 l( y( T' b, M! ?anova(lm2) #方差分析
# Z4 I. ^/ c( L# {4 U" msummary(lm2) #模型参数估计等详细结果
- R1 {1 S# L4 h# w( A6 Rwindows()
% N) q! [. @% |3 J2 d$ C" ppar(mfrow=c(2,2))
T2 Q. Z' A# v; nplot(lm1,which=c(1:4)) #回归诊断
5 u' I# n: ^4 [8 g( P: T$ X0 R4 k
) A5 B% {2 G: Z' n8 Q# f- |$ l# i6 \" ~2 F* h6 h; p7 a2 B$ T
##对小区面积的处理
# K3 `0 u: s* Qsummary(area)* f7 ~$ u# h6 k
plot(area,price)
9 h1 n; n/ E0 d% jwindows()5 x$ p- s/ \, L5 X- |$ Y! S. ^
n = 150000
( z$ ~' p. U- g9 N7 o+ gboxplot(price~ceiling(area/n))
# H/ b, n( R- k% l7 ~; {' k) ktable(ceiling(area/n)) A" Q5 l6 {! w8 H
areagrp=1*(area>n)
3 S3 h* F+ k+ w* Y6 a! y; itable(ceiling(areagrp))& r: @9 i1 L5 C6 w8 G, r
boxplot(price~ceiling(areagrp))
: X- y3 o. ?1 u/ x#加入小区面积分组的模型
$ _( c6 d" ~" @, G1 xlm3=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) E% a* a8 ?- `% i8 E" t
anova(lm3) #方差分析
& [# M; f+ u- b0 J6 E) ysummary(lm3) #模型参数估计等详细结果. R) ~4 w8 t( x. r- I2 J
windows()6 D1 I Q1 X* C' f; g
par(mfrow=c(2,2)), B, t0 _9 y5 c/ ~' N
plot(lm3,which=c(1:4)) #回归诊断
$ ?5 q& J: |( F% ]$ g
?+ l- |: h1 C- e! j! z2 q# M% N O3 W7 ?# g4 ?& J; {1 ~8 V* h1 U y
##变量选择' y2 D" B% t- Y x3 a
7 I3 n: q2 O& Z$ u( `; v( L5 L _
6 ?0 ^% n8 l1 B: b+ M##AIC准则下的变量选择
4 D5 C7 M. i, D& ~. G. ^lm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
: i7 X: e* q# B vsummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节
1 G. E" Q+ F/ G2 |* m* W+ ]/ ]##BIC准则下的变量选择9 L0 E0 Z' v& |! F
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic |4 O/ B' b$ J$ U1 P, ~5 o
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
/ Y5 _- u& r' m* E# o- w8 q! p7 s* W$ L+ `4 g0 ^+ A9 @
2 _. J9 I" x( b. {- q2 O. d) B2 J#选用AIC准则下的模型进行回归诊断/ @) y9 h6 h. d& c2 k+ D
windows()
( }/ E# F. k& N5 L8 h9 ^par(mfrow=c(2,2))( u' u: n8 q7 F' N
plot(lm4.aic,which=c(1:4)) % N$ R' {1 l' J; y7 y
1 {7 |+ H$ {, [3 c. q' Y, A
& f& S3 A; ~, a7 _. q" J; b9 l
" H2 b+ X6 k! ]2 L7 |3 d2 q- O) o" U/ a V" R
##数据变换0 c0 E2 I/ g( i
* H- \+ ?. \" _
) b$ k W) p7 `5 ~7 O! U1 U
#box-cox变换# U% ]0 y5 ]+ k) l
library(MASS)
( K- ]- y! q( [! 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))
8 k' I+ o x. z _. B: II=which(b$y==max(b$y)) #定位似然函数最大的位置$ G# |1 h7 W Y. G _
lambda = b$x[I] #精确的λ值 i, n. [2 a- q9 F
#λ接近于0,为模型简洁性,可以直接进行对数变换
5 n) m- r( M4 T- [5 L+ ?, _9 C4 s3 ?logprice <- log(price)
8 r& V& Y# p8 {4 lhist(logprice)
* k- m8 H# j- w! U
* e; L4 M6 q1 a3 _ E$ |' L( t# u2 y' _8 V$ K
##最终模型与诊断
% D' c1 P8 ~0 z! K2 `% Y6 s \
3 \0 Z' ?% V4 d! c
5 O3 a7 l6 K o/ ~! P; jlm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
& F- m5 I1 f0 awindows()
/ s3 i, P: }4 o* gpar(mfrow=c(2,2))* O1 L- c: }: e( ~ K/ f* q
plot(lm6,which=c(1:4))
% x8 z; T2 E- b7 g- L' eanova(lm6)
1 ]" y( p2 R C. h8 ~" }summary(lm6)
L7 l$ \$ @+ s4 k
9 c! T( C2 C4 f% e/ {8 A3 n; h9 E0 D1 G/ D* [
请关注数学中国网微博和数学中国公众号,联系QQ 32437105609 c. z, ^5 g2 y- O
1 @- z( ?' `6 ~) c. Q" u
7 e7 N& N/ i) U1 y
. \1 ]# }4 K4 d5 u! v b* f) @$ }; |0 @! I4 Y
|
zan
|