分析的灵感来源于这篇房价走势文。里面有杨红旭专栏对几个城市从去年3月到今年2月的走势:
http://finance.qq.com/a/20170228/010667.htm
比如南京这张:
看着n多城市的不同曲线,自然而然的想法是,这么多城市,其间的互相影响因素是多大?
首先做出一个excel 表,到R程序中转为矩阵。
然后先考察城市间是否具有关联,运用的是卡方检验 chisq.test
p的数值<0.05,所以说明之间存在共性。也就是说各城市间的房价确实存在关联。
如果要计算多个变量的相关系数矩阵,要用到psych包的corr函数。如果只是两列之间,那么就用cor函数就可以了。
运行后得出关联系数矩阵如下:
为了看清楚一点,小白的我又整理回到excel表来看,黄色的部分是大于0.9的部分。我个人将之定义为影响较大的数值。
从上可以看出,北京与其他城市的重要相关系数最多,我个人解释为北京的房价影响其他城市较多,其余为郑州,廊坊和上海。深圳与其他城市基本上是负相关的关系,苏州和三亚也与其他城市房价关系不大。
为了验证,我在excel原表中将深圳等几个城市的列重新排布,以免有主列(第一列)或者相对位置这种关系影响,得到的系数还是一样的。所以这里不再重复贴。
这个结论和我原先预想的不同,我原来想的是房价影响主要与地域间相关,比如长三角的几个城市之间,但看南京和苏州,无锡之间就没什么很强大的影响力。
为什么会这样呢?我还真没有什么更好的解释,it's an interesting question...
为了把城市画在地图上,继续学习新本领:
R语言中,画地图主要用到地图包,地图包也有很多,这里选了其中两个。
library("maps");library("mapdata")
找到以上城市的经纬度,列成excel表,按列分别为:城市名,经度,纬度。然后导入程序成为矩阵dat,这样dat[,2]就是经度,dat[,3]是纬度。
par(mar=rep(0,4))
map("china", col = "darkgray", ylim = c(18, 54), panel.first = grid())
points(dat[,2], dat[,3], pch = 19, col = "orange”)
text(dat[,2],dat[,3],dat[, 1], cex = 0.9, col = "darkgray", pos = c(2, 4, 4, ......, 2, 4, 4, 2))
axis(1, lwd = 0); axis(2, lwd = 0); axis(3, lwd = 0); axis(4, lwd = 0)
这段程序是我利用网上的谢老大案例《用R画中国地图并标注城市位置》改的。
map("china")画出中国地图,
points指出城市地点,
text在城市地点上标注,
pos=c(2,4,4...)是按照1-4对应上下左右,标出文字相对于地点的关系。不过我调整的不太成功。
得出图形如下:
本来想在几个影响力较强的城市之间拉线的,结果发现要运用到社交网络igraph包。这个还没学习,那就酱吧。虽然也可以拿回ps手绘的....如果有好办法,也请不吝赐教。