- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40293 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12799
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
【R语言】回归分析案例:北京市商品房价格影响因素分析. Y5 |* f P8 T7 c
这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。& d, s& @) v7 h6 e+ V' V
这里将连续型变量也加进来,进行协方差分析,建立完整的模型。 首先对房价进行对数变换,解决异方差问题: ![]()
4 j) S3 s3 R) U& w: I7 M8 K行描述性统计分析,各连续型变量之间的相关关系如下:7 U+ i9 F. V3 b. V) e
0 R& I! _0 d$ F1 G) M5 p" \
名义变量的EDA一般做箱型图。 模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。 8 P0 T c6 w; ~$ m, ?
, s7 i1 Q3 [, x
3 W- K) D( c: i0 X1 W0 L3 K
最终模型残差图:
3 m7 k& K5 {" O 9 D1 M" J6 X4 s9 A$ Y3 L7 x; i( D2 Q
通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有: h+ F9 x! w$ M% J
属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
4 u4 Q/ K& B, o6 e属性变量的具体影响在此处分析略去。+ Z( k. Q" k8 M
连续型变量的影响主要为:5 {5 [" J/ M( {/ G1 t9 N1 {$ @ [1 ~
绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;
* V5 f9 H2 Y) O+ t; X6 B9 G, T9 d 停车位住户比:有较显著的影响,停车位住户比越高,价格越高;
* L1 v5 O { k同时,原本为连续型变量的容积率经过离散化变为属性变量后:
2 G1 h+ I2 j$ v5 R 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;
* H2 i1 Y0 p6 C7 E `) ? 容积率与环线之间存在着交互效应。5 K3 c. e) |1 d) v) S9 Y
rm(list=ls()) #清空当前工作空间- ~4 k, L, R& z* G3 O6 ^2 ?
setwd("D:/回归分析")3 h, @8 ?8 D; ^/ ? _* g0 M- e1 k
a=read.csv("real.csv",header=T) #读入csv格式的数据,赋值为a
8 f4 u( g b+ fView(a)" I L6 c4 Y0 S5 e
attach(a)' U- ~ D: g3 N3 j
names(a)
% h* K+ d3 ^) B5 r2 _) M6 e" a) S/ i+ y+ f3 T) I0 [
, I4 \- h5 m4 h5 M* Y" V! j##描述性统计
2 ]+ e$ h" L9 a% R" F! T- u* T/ m/ P* A1 O% t
) S) u: W; A- C/ Y% ~% Q#未做处理的响应变量分布情况
- R1 B8 e/ U5 ]) k+ d) Q3 cpar(mfrow=c(1,1)), Q A& _% ~; \2 v: J! }
hist(price)$ L. C5 N" L% [
summary(price) #查看响应变量的描述统计量- H+ G5 D B6 `1 B
#连续型变量描述性统计) }) A- {9 s+ ?' A# v2 p# L
windows()
9 O2 v, t# a5 Y7 p. Zpairs(a[,c(6:10)]) #所有连续型变量间的散点图; M9 v* I+ `5 I/ [, D
par(mfrow=c(2,2)) 4 V$ D1 b: B+ a3 g/ `2 y9 x
plot(rong,price) #每个连续型因变量与响应变量间的散点图3 j: F, @, }/ W: P; W o
plot(lv,price)+ I0 C* V# J ^0 Q6 G
plot(area,price)" i z: {- e5 D1 W
plot(ratio,price)2 R @ v# o! ]: Y$ f, V- Z+ p
summary(a[,c(6:10)]) #查看连续型变量的描述统计量2 `/ f- J2 h$ A& C. L" w
cor(a[,c(6:10)]) #查看连续型变量的相关系数
T+ t! b4 e# k#属性变量描述性统计
2 V+ K+ v7 T( G3 q" j) p% Owindows()* T8 ?9 ~ ]% l! Z/ y
par(mfrow=c(2,3)) 9 a) H' _( u5 N% j( u1 S
boxplot(price~dis) #每个属性变量关于响应变量的箱型图
2 r: |0 ^. c$ y% d( oboxplot(price~wuye)
/ K- a$ f7 `- aboxplot(price~fitment) ' m- @ u% j) ~" @) e3 B! B. u
boxplot(price~ring)
5 C4 ]9 Y4 l( l8 G U8 J9 O% iboxplot(price~contype)
. [, w4 {( {2 p' h+ Y: b9 `1 [* E. Z* T$ u6 n
6 I( a0 H P6 n9 o1 g2 x
* t9 v3 _4 V! c/ n' o
" M: R# {- [6 E4 ]$ |" B
##模型建立
. ^+ O h w0 F9 o+ X& y% N+ d% M9 Z% S% L
! _% M8 o/ N- p( V/ a5 O& @0 v
#在方差分析模型基础上加入连续型变量9 [) V/ Q" a5 I; V1 d A
lm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
+ \/ {2 N. Y2 O' G& manova(lm1) #方差分析
' y6 }, i9 E4 W" B8 K; _summary(lm1) #模型参数估计等详细结果
* S+ q J' {0 ]$ C2 J/ Lwindows()
; ?2 _) x- X$ ]par(mfrow=c(2,2))& t7 u" q! c* ?% z( v1 `
plot(lm1,which=c(1:4)) #回归诊断做残差图
4 C- u( j2 l8 W& n$ W7 {
- H* N" e) @& Y% E6 J* D7 T# r" K" v" q, V! G8 J( p
8 H9 K# ~5 k/ h! d0 D9 P( }5 L5 K5 g/ v
##变量处理/ o4 H% C# [! |( p
) [7 B( ~, e1 Y' P
5 c# k1 R* F9 |) R* V G j8 [###对不显著的变量采用分组的方式希望能达到显著的效果
' |3 g t/ k, Q! \7 u5 x, k- r, X' V##对容积率的处理' l# v0 o: B# r1 Q: S& }
windows(); [3 e% q# m! L
n = 40 i8 d% s* @3 j. m1 v" A% i$ {
boxplot(price~ceiling(rong/n)) #容积率多分组下的箱型图 ( Y$ E* {9 K! I& S1 X
table(ceiling(rong/n)) #容积率各分组下的样本数
- p! g0 r$ E8 ~( g& hronggrp=1*(rong>n) #进行二分类" U, r L+ \0 I( z& Y! p+ ~1 N
#ronggrp=ceiling(rong/n)
$ u3 E) y- x* S& T& }, w0 G+ htable(ceiling(ronggrp)) #容积率二分类下的样本数
) }7 O7 `; |4 c% Rwindows()
9 d0 t! N ~" k& m3 Oboxplot(price~ceiling(ronggrp)) #容积率二分类下的房价箱型图
+ N- \0 H0 v- w( p$ q3 }windows()
4 a& b% B3 F& }& }9 F8 U! w/ Ppar(mfrow=c(1,2))
8 ^7 n2 {7 R# q8 v- |$ [( m- R' w( Wboxplot(rong~ring) #容积率与环线箱型图" w! b1 R; v5 a; l1 L5 ~
boxplot(price~ring) #房价与环线箱型图
7 Y: N" X8 d$ S/ Z#加入容积率分组和容积率分组*所在环线交互因子的模型
1 @1 i: v v' B% Hlm2=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)" n" n8 b6 l# ]" T+ [4 m
anova(lm2) #方差分析
; T; J+ c: F0 ^summary(lm2) #模型参数估计等详细结果
. o1 K9 a: {. A& N$ ?windows()" Q5 r- q! }4 d$ R6 A( _
par(mfrow=c(2,2))& y) D4 B( o$ ?2 t) x
plot(lm1,which=c(1:4)) #回归诊断
9 k* F) n6 M* y; k% D0 o! e2 ?$ b
7 R6 W& e- T) i, g M
##对小区面积的处理, b8 g) f1 w2 Z: \, V$ ]! W9 U# [
summary(area)* W) I3 V' f6 v& ?8 x' _
plot(area,price)1 b6 C2 [! J4 d: P/ B
windows()
" z* ]6 }# _4 O5 `9 zn = 150000
: F( N4 p t% F) B7 u5 O3 Q$ Hboxplot(price~ceiling(area/n))
; L, c; O9 e- \" R9 ^table(ceiling(area/n))
/ l; r9 C$ a* }, qareagrp=1*(area>n)
. @' |2 T) k7 F I; ntable(ceiling(areagrp))
. ~, `1 n0 s0 y0 z3 mboxplot(price~ceiling(areagrp))
' N* r- M" x. b% N- V- ?#加入小区面积分组的模型5 u# U% K! O; ^; R5 `% l
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)& U6 x; g! C) p+ s& Z1 N
anova(lm3) #方差分析
7 `0 ?3 I! Y* O' Lsummary(lm3) #模型参数估计等详细结果
* Y5 O$ R/ ?& X; U! B7 I- r) Gwindows()
3 V4 S U" Z, `5 A/ {; epar(mfrow=c(2,2))& \9 `5 C& w3 D- F
plot(lm3,which=c(1:4)) #回归诊断
! ^6 w" `* `! Q6 H) N7 m; c# M1 Z0 D9 _4 h6 |9 I
3 V, }, U* C, O##变量选择
) e/ D& v/ \ Y* f
) @. w7 O) X# ?0 L/ j& R0 g, L% K2 N2 H
##AIC准则下的变量选择
8 ?$ r. }: x c# x0 x! xlm4.aic=step(lm3,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
: u$ w) B: c/ h2 b9 P- tsummary(lm4.aic) #给出模型lm.aic中系数估计值、P值等细节: M- Y9 B! D; s0 w' i: p
##BIC准则下的变量选择. q/ k1 b3 o! J$ `: I) x
lm5.bic=step(lm3,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic6 l. p0 F! L; p- J
summary(lm5.bic) #给出模型lm.bic中系数估计值、P值等细节
( K; m: |/ z0 `2 E( E5 i* w
) A/ y2 P0 ]" c8 X* k1 m. ^1 i5 O6 p: D! o8 Z. N2 [
#选用AIC准则下的模型进行回归诊断+ h3 E3 U: X, }) @
windows()
. l( Y9 m( G! hpar(mfrow=c(2,2))
3 ~ {( i U) u, w: v; T2 lplot(lm4.aic,which=c(1:4)) 5 j: u+ b0 U/ n6 R7 ?
3 [: |6 `& a3 r" s/ l0 j! q
* d: M6 T3 ^& [/ B" w
+ S) `$ t- l" W! S1 A+ d5 H, \; ^/ r( a! L ~9 ^
##数据变换. j# V7 f! n& U: K$ R7 T' X
- j$ x; v. F% ?3 o( ], T7 [8 a
& X# Z; J" j7 y5 c- h$ b#box-cox变换
' J. B7 W, k4 N& ] i# l$ ^library(MASS)
7 ?" m' X( F0 I9 Jb=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))
% g1 h5 K P. |) Q! T3 `5 W1 sI=which(b$y==max(b$y)) #定位似然函数最大的位置
* F3 A( f3 ]9 V7 ?lambda = b$x[I] #精确的λ值- ~) g+ _, |$ m: c* L4 A5 b* F
#λ接近于0,为模型简洁性,可以直接进行对数变换
' [* j4 D) }5 F& T/ l/ g! ?logprice <- log(price)
0 g& C/ I0 x) m" W" Yhist(logprice)4 Q" S o$ h3 _4 M3 `7 g
* O8 L7 E9 z+ v1 n
; P. W+ a+ V. q" b##最终模型与诊断" c, g; W7 S, d# q
& {% X: m; w% @ f; m2 J
- j' k& o- T+ {9 c3 {# I4 v- W5 mlm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio), B8 X) u7 F8 S5 h! H3 Z; D5 {
windows()
1 q# R/ u, U! R. Y3 \- n6 I8 Spar(mfrow=c(2,2))6 f+ d; f4 n/ i: y$ S
plot(lm6,which=c(1:4))7 e$ ]6 a0 e! u) r/ J9 ]
anova(lm6)9 o3 `& P# i% E8 N
summary(lm6)6 Z1 Z% G2 _* }, d- R1 V( r
) U. h+ q. p" G+ m7 ~' u) O2 C
/ l+ l; ~' T6 z9 ?请关注数学中国网微博和数学中国公众号,联系QQ 3243710560
1 ]6 `9 a8 O/ Y( X0 y" j: ?9 o# a4 t8 X1 S4 e
6 S: t& t* r2 i) G
4 N, P! i+ d) [
% `& F! {# d2 c ]8 O
|
zan
|