请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5298|回复: 5

【R语言】回归分析案例:北京市商品房价格影响因素分析

[复制链接]
字体大小: 正常 放大

1178

主题

15

听众

1万

积分

  • TA的每日心情
    开心
    2023-7-31 10:17
  • 签到天数: 198 天

    [LV.7]常住居民III

    自我介绍
    数学中国浅夏
    发表于 2021-10-27 14:50 |显示全部楼层
    |招呼Ta 关注Ta
    【R语言】回归分析案例:北京市商品房价格影响因素分析; ?+ R, n' q# d" I: @

    这一案例是王汉生老师《应用商务统计分析》方差分析章节的案例,主要对离散型变量进行了处理。: }% J8 O, t4 ?% Z* m/ g
    这里将连续型变量也加进来,进行协方差分析,建立完整的模型。

    首先对房价进行对数变换,解决异方差问题:


    % Y6 r5 Q" z& _行描述性统计分析,各连续型变量之间的相关关系如下:
    3 V7 ~7 {3 w, H
    : O! @; d- n* v$ i

    名义变量的EDA一般做箱型图。

    模型按照全模型-变量处理(分箱等)-变量选择-回归诊断等步骤建立。


    % ^& K- i; i) J3 M$ s- j
      H, B8 A8 R, h( Y+ Y( ]: v+ F+ y1 X9 I% H
    最终模型残差图:, `+ k- ^% U5 G+ k/ }

    / I! K# C) G) ?* v6 L, N+ x6 e
    通过模型分析结果可知,影响北京市商品房平均销售价格的主要因素有:
    ! r1 P& k& b5 i# `$ X属性变量:所在辖区、所在环线、物业类别、装修状况、容积率大小(新引入);连续变量:绿化率、停车位住户比
    1 x/ v( r' v6 P2 @' k属性变量的具体影响在此处分析略去。6 w2 ]* V6 W: k% \( u
    连续型变量的影响主要为:
    # q# D1 W! [: `% d) {$ b 绿化率:绿化率的影响十分显著,由系数估计值为正,说明对房价有正向影响,绿化率越高的楼盘房价越高;
    " q' B% P/ f' z6 V$ v8 o- D/ ` 停车位住户比:有较显著的影响,停车位住户比越高,价格越高;. K" ?. N/ k6 `+ u7 i
    同时,原本为连续型变量的容积率经过离散化变为属性变量后:
    + F3 W9 G7 \) I/ i4 B! v) p. a7 a' i 容积率大小:容积率分组有较显著的影响,高容积率的小区商品房价格更贵;' {* }9 \. J8 J
     容积率与环线之间存在着交互效应。* @4 v8 X4 L" ~- A1 p
    rm(list=ls())                                                                                #清空当前工作空间% l  G/ L' V$ h. R: ~3 k. `
    setwd("D:/回归分析")
    ) |! ], O5 S+ @9 W) r: ua=read.csv("real.csv",header=T)                #读入csv格式的数据,赋值为a3 ^9 x, L$ V' |9 I  e; ?
    View(a)
    : ]" C. H* r( {% U5 B: Sattach(a)" Q6 _) w& T" E; h1 Y) N
    names(a)
    " s& ~5 }4 c2 [5 z$ C* K, V# a# n3 g$ I0 ^: j, j4 q* y: j
    : Y5 T4 x# L" u. Q$ ]# z8 u
    ##描述性统计
    7 e, {: F& P0 ?: @1 L6 r2 l/ E! \' ^# K4 ?. u
    ( a4 h) _) S& |/ Q
    #未做处理的响应变量分布情况
    $ y! I# n" m6 K5 O" }7 H5 Mpar(mfrow=c(1,1))
    " y8 F. O" u# ]5 g* Y8 mhist(price)8 _$ G, u" H9 V0 b
    summary(price)        #查看响应变量的描述统计量( F% a( }8 s3 ~8 Y
    #连续型变量描述性统计  a& r% P. n; A' d' Q' `
    windows()7 ^; O8 H4 i3 t$ J# z, C
    pairs(a[,c(6:10)])    #所有连续型变量间的散点图/ c# Q3 E' C& ~8 m
    par(mfrow=c(2,2))       
    ; q" f; o% a0 h  u) Bplot(rong,price)      #每个连续型因变量与响应变量间的散点图
    # a  }2 y* K, d  x6 Y) Bplot(lv,price)- r" @: ]/ g4 f8 g7 d4 R$ C7 _8 A! ?
    plot(area,price)( U, o$ t4 T' o) A5 h$ J
    plot(ratio,price)$ x  k. |- N  ?5 a7 o: s
    summary(a[,c(6:10)])  #查看连续型变量的描述统计量$ p% |* z- m; }* W) P
    cor(a[,c(6:10)])      #查看连续型变量的相关系数; {/ u! K9 G! D; J1 S+ v+ M
    #属性变量描述性统计
    + Z& Y2 J, m9 @4 kwindows()6 J6 ]8 t3 v* k6 ]2 }& d
    par(mfrow=c(2,3))                        7 G% ^( N( k. k' b  S1 B  v
    boxplot(price~dis)          #每个属性变量关于响应变量的箱型图5 C. f- I5 i9 w% v3 ~
    boxplot(price~wuye)                                                                        . a! }% c1 x/ f3 l6 Y/ Q
    boxplot(price~fitment)        0 y- \/ {; n: s* J" B" C5 q' {. r" O
    boxplot(price~ring)        % Z% G, Z. p+ p/ y! C8 ^' k
    boxplot(price~contype)8 C$ f0 q9 U6 x7 H2 }
    7 o: ~, B4 G' u& y4 v" t) Z8 C

    0 m$ f% B. H4 D0 \" G) S0 w6 W; N
    , o- _- V1 q+ B" l( n- E
    % |$ V# {+ E  ~5 ]/ x- ]0 u
    ##模型建立
    ( f. A; t; D' X1 j& U: v& P" c& {1 V! Q3 O; |& e$ X
    ( Q! ]9 x+ k& M* e+ h- {+ n6 f2 G+ |
    #在方差分析模型基础上加入连续型变量
    # D$ ^8 r  l6 B0 mlm1=lm(price~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(contype)+rong+lv+area+ratio)
    + J2 C3 M2 e+ o. M5 B1 Ianova(lm1)                #方差分析
    8 {' U) T3 K- ^) Msummary(lm1)              #模型参数估计等详细结果: e) F  m' }/ t6 K
    windows()  W3 W7 L# j( X# D) Y* _& W
    par(mfrow=c(2,2))
    + u3 [  K( f1 }! Q- n; fplot(lm1,which=c(1:4))    #回归诊断做残差图' V5 w- l7 Z! c3 q( x0 t
    1 P% b9 d' E( k0 V6 i

    . p7 J" }" k) |# h- J) F* q2 D1 F
    3 h) B* s2 Z& i% `$ y- A
    4 s4 F' k4 W4 I
    ##变量处理
    " G- n, t. b! p. G$ o5 z. w- A& t/ A

    0 i  B- I( i* i3 A9 u###对不显著的变量采用分组的方式希望能达到显著的效果
    " z% H, V. R$ ^##对容积率的处理  F: F( P7 }9 b  @
    windows()2 e* m# m& K0 N8 z$ i! R
    n = 48 h& U' _5 B; I! R1 Q
    boxplot(price~ceiling(rong/n))                #容积率多分组下的箱型图                                        8 q. E/ z! x4 x# f$ T  i
    table(ceiling(rong/n))                                                #容积率各分组下的样本数
    ; X8 v3 i2 I# Fronggrp=1*(rong>n)                #进行二分类
    : Z/ v0 C$ W  M6 M6 Z4 M0 S* \6 f#ronggrp=ceiling(rong/n)        ( j& R. }5 ?' v' N; D
    table(ceiling(ronggrp))           #容积率二分类下的样本数
    ( b' ?3 ?  N2 ^- Wwindows()0 e& @) g# S6 _# p% D7 v+ E4 {
    boxplot(price~ceiling(ronggrp))   #容积率二分类下的房价箱型图
    ! c1 R) w7 A) R7 }+ f% x+ iwindows()
    ) `" W1 J' v! x9 P& K: Wpar(mfrow=c(1,2))
    3 _- g. O( h+ t5 s+ h+ O9 r. bboxplot(rong~ring)                #容积率与环线箱型图! q6 k+ o" H/ a6 N
    boxplot(price~ring)               #房价与环线箱型图
    9 E' K1 |4 N5 D5 E+ H" P' i' `' y#加入容积率分组和容积率分组*所在环线交互因子的模型8 @  j* k7 i# U% `0 G3 \( n
    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); G, R" J& a! U3 [
    anova(lm2)                #方差分析
    2 Q6 N* F: ~1 B; G; ?summary(lm2)              #模型参数估计等详细结果
    ! j2 E5 ~( Z- \% A/ g2 Z  ]windows()
    5 q& ^5 `3 Y3 `. p: g5 O8 kpar(mfrow=c(2,2))
    5 j, O# I4 Z) S; b# [# pplot(lm1,which=c(1:4))    #回归诊断  P# q4 }' u# X( T9 D  j- b# |4 a3 B

    - r9 }, C/ b+ M+ g- f
    % ?3 `" A- R5 k  _: m% X
    ##对小区面积的处理
    4 U$ c) M1 j! G, ?2 V$ z3 xsummary(area)
    & D) b% D) ^% ]% A* y8 D$ iplot(area,price)
    ' a" b5 t/ X6 B1 _; Jwindows()% H6 V1 i- M+ p
    n = 1500004 F0 {4 Q4 O# B, \8 g
    boxplot(price~ceiling(area/n))                                                       
    8 [, U9 K7 B5 v- X& O, utable(ceiling(area/n))                                                                - o9 j3 u" h8 ?! _/ I
    areagrp=1*(area>n)# ], t! U0 M. `
    table(ceiling(areagrp))
    : K: M3 d$ o4 K" sboxplot(price~ceiling(areagrp))
    - [+ V7 R8 m0 Z; f1 L0 ~1 ~! ?5 j) J#加入小区面积分组的模型
    9 w  Y2 S" w% u4 b3 s, E/ klm3=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)) U; H3 h2 [' ?% Z( X
    anova(lm3)                #方差分析
    ; h- e  L9 C& o, C- Csummary(lm3)              #模型参数估计等详细结果
    + n1 f5 n4 J- _* i: uwindows()1 S( ?/ m" [) w/ b* u& |
    par(mfrow=c(2,2))
    ) A9 x) Z% y! O. h7 L5 |plot(lm3,which=c(1:4))    #回归诊断) \! B# |6 e4 _9 _+ `
    * @# Z# K. J8 j& N  Y& B

    ( V8 g- N/ U' j##变量选择. S. ~( p$ N9 T! P

    1 x$ {! C1 G  _- F6 p6 ]

    . F. E6 b, d! V1 a* S* N##AIC准则下的变量选择" @" G! a7 Q& ?1 S
    lm4.aic=step(lm3,trace=F)       #根据AIC准则选出最优模型,并赋值给lm.aic
    7 g  Z; l- @/ }' p+ Csummary(lm4.aic)                #给出模型lm.aic中系数估计值、P值等细节
    7 ^9 |$ }! I. Z1 p% L##BIC准则下的变量选择8 D# z% ~! R2 V$ g
    lm5.bic=step(lm3,k=log(length(a[,1])),trace=F)     #根据BIC准则选出最优模型,并赋值给lm.bic2 S7 {3 i8 A8 F+ J2 t
    summary(lm5.bic)         #给出模型lm.bic中系数估计值、P值等细节0 |3 v) y: A2 _: g

    # W; [) [6 G7 z3 r/ x1 J9 Z% g
    . u" Z" W: r3 u) }5 ]6 Y8 I
    #选用AIC准则下的模型进行回归诊断. V! |# Q% y: j: R: E  r4 x
    windows()7 j$ F  f+ g6 a$ ^, z6 a
    par(mfrow=c(2,2))
    1 \6 \* [3 s. f3 c1 Vplot(lm4.aic,which=c(1:4))  
    2 Z1 O; `6 ^  m! a1 m$ {0 F8 G) f9 |1 T' E/ _* `

    1 W$ i( L& q- L* E0 f  T7 s; F
    ) X7 T( g, j& R5 q4 l. z' y
    ##数据变换& J/ n3 \8 F% x5 h1 f8 f

    2 `5 ]7 r$ o2 X9 f, L
    ) _) e" r# k# q3 g% O2 G
    #box-cox变换
    1 ]7 D% a& u- D1 n6 t7 Y( \7 mlibrary(MASS)" U7 B- a" l5 ^( 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))
    2 `4 U# g# v4 ]- e: XI=which(b$y==max(b$y))  #定位似然函数最大的位置8 F# ^' A. q" X" |5 Q% h  M
    lambda = b$x[I] #精确的λ值" f6 t* ?8 N, ^+ N4 R8 |# e! A- y6 B
    #λ接近于0,为模型简洁性,可以直接进行对数变换
    : s+ E6 R% ~1 E: q( t5 f; t" Mlogprice <- log(price)
    $ {7 K9 a2 [+ r9 v6 x- ahist(logprice)
    0 q- O/ P$ O! s( m' O% ^2 s, I5 O! a" u
    9 T9 @& Z! \" R# {; K2 l5 T
    # |8 ]5 s3 A/ L
    ##最终模型与诊断
    ; h5 l  L8 x1 |
    + X- q" @9 E7 R' [4 x% \: |8 j; Q
    1 [! [! \* d8 S6 O  |) u8 |0 U
    lm6=lm(logprice ~as.factor(dis)*as.factor(ring)+as.factor(wuye)+as.factor(fitment)+as.factor(ring)*as.factor(ronggrp)+lv+ratio)
    : s" I8 @9 F$ t, u' {1 gwindows()
    2 P9 T, r2 }' M1 Wpar(mfrow=c(2,2))
    0 i* V4 }$ r$ R% Mplot(lm6,which=c(1:4))( \  a& Q8 n" `  z, Q& k; u
    anova(lm6)
    7 K, Z- U, f# qsummary(lm6)
    " a2 M1 |! l9 J) ~5 |0 E" {& K4 G+ S; u" P5 p
    6 s9 W* {  Y7 O" j1 f
    请关注数学中国网微博和数学中国公众号,联系QQ 3243710560- O6 g. j1 m: b6 |

    7 i9 n, c6 J8 H' y* Y* @6 `; f* p- ]* i: g

    * x8 D) ]! U; R" |2 D5 ?, S6 N" ?3 r; G$ m! E  h. h
    zan

    9

    主题

    14

    听众

    685

    积分

    升级  21.25%

  • TA的每日心情
    无聊
    2025-8-2 10:45
  • 签到天数: 696 天

    [LV.9]以坛为家II

    新人进步奖

    群组数学建模

    群组2014年网络挑战赛交流

    群组学术交流D

    群组数学建摸协会

    群组第四届cumcm国赛实训

    一定会认真的看看,发现这是R的,有python的分析没有2 T" D8 P' e0 v  h

    - n' P/ Z; R4 w5 S% K! [6 e

    点评

    1047521767  有啊  详情 回复 发表于 2021-10-28 11:01
    回复

    使用道具 举报

    sjlxdn        

    1

    主题

    2

    听众

    155

    积分

    升级  27.5%

  • TA的每日心情
    无聊
    2022-2-19 17:40
  • 签到天数: 30 天

    [LV.5]常住居民I

    国际赛参赛者

    回复

    使用道具 举报

    9

    主题

    14

    听众

    685

    积分

    升级  21.25%

  • TA的每日心情
    无聊
    2025-8-2 10:45
  • 签到天数: 696 天

    [LV.9]以坛为家II

    新人进步奖

    群组数学建模

    群组2014年网络挑战赛交流

    群组学术交流D

    群组数学建摸协会

    群组第四届cumcm国赛实训

    太好了,又认真的看了一次,发现自已差太多了- r/ I( l) h9 d# E" y/ V+ n2 z

    % e& V+ e! Q/ C: ]( b# O  P

    点评

    1047521767  我每天会发一些好资源的  详情 回复 发表于 2021-10-28 11:01
    回复

    使用道具 举报

    1178

    主题

    15

    听众

    1万

    积分

  • TA的每日心情
    开心
    2023-7-31 10:17
  • 签到天数: 198 天

    [LV.7]常住居民III

    自我介绍
    数学中国浅夏
    fgfroom214 发表于 2021-10-27 23:18
    , n) d+ a7 m% R太好了,又认真的看了一次,发现自已差太多了

    - J% C; e: T" E1 L2 w  B8 t- ]我每天会发一些好资源的
    . g' {" A+ d( f* X1 i' ]
    回复

    使用道具 举报

    1178

    主题

    15

    听众

    1万

    积分

  • TA的每日心情
    开心
    2023-7-31 10:17
  • 签到天数: 198 天

    [LV.7]常住居民III

    自我介绍
    数学中国浅夏
    fgfroom214 发表于 2021-10-27 16:32 ( d, b+ G5 }  A- }$ M- Q
    一定会认真的看看,发现这是R的,有python的分析没有
    " I) D* K* s/ L* I2 @  y
    有啊
    2 `# U- P% s7 B3 u; y/ }
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-11-16 08:56 , Processed in 2.736839 second(s), 79 queries .

    回顶部