「量学堂 专篇」数据可视化简介
之前的量学堂系列,以及昨天的银行轮动量化策略,都或多或少用到了数据可视化展现,我看到一些留言希望能了解一些这方面的内容,其实在国外量化平台Quantopian上是有专篇的,为了大家读起来不至于太过枯燥,本篇将分为上下两集对此进行介绍。
数据可视化展现
数据可视化展现对于了解数据特性、观察数据潜在结构是非常有用的。需要注意的是,人们通常更愿意相信“眼见为实”,数据可视化能够轻松做到这一点。图形化能够帮助人们更好地理解那些基于方程式的理论假说试图阐述些什么,但却无法证明这些理论本身是否正确。
本篇我们将回顾一些常用的展现手法。
取得数据
如果我们要进行数据可视化,前提是我们必须先取得数据。
数据结构
了解数据样本的结构是非常重要的。通常你需要做一大量的数据处理工作,将你的数据进行清洗和规整,最终转化为你需要的形式(我们通常将数据整理成二维数据表格的形式存放在Pandas中的DataFrame对象中)。拿我们刚才获取的数据样本来说,整理后的“数据表格”,列对应的即是股票名称,行对应的即是不同的交易日,它们的“交点”就是在某一个交易日中,对应股票的股价。
下图演示的是我们如何获取苹果、微软公司2017年1至4月的股价数据:
DataFrame中存放的数据结构我们可以在上述构造的二维数据表中使用列索引,得到(返回)指定的某列数据(苹果或是微软),我们把它称为序列。在序列中,同样存在索引(即交易日),再次通过索引,我们能够得到某一天某一只股票具体的股价值。就序列而言,它类似于我们熟悉的数组对象,区别在于数组对象的索引是整数,在这里序列的索引是交易日。
直方图
直方图是将数据样本在各个不同数值上的频率分布进行可视化。将频率分布以柱型条的形式展现,使得我们能够快速洞悉数据样本的分布情况。每一个柱型条的“宽”和“高”,分别代表了在指定区间范围内数据样本出现的次数(频率),你可以把直方图理解为是离散的概率密度函数。
下图给出的是微软公司2014年股价的频率分布,
2017微软股价频率分布收益率直方图
在金融领域,我们鲜为观察股价的分布情况,原因是“股价序列”是“非平稳性”序列(关于平稳的定义,即“分布”不随时间的变化而变化)。取而代之的是,我们会使用每日收益率(涨跌幅)作为数据样本。
2017微软日收益率频率分布上图的例子说明,2017年微软日收益率仅有一天是超过2%(最右侧柱型条)。注意,这并不意味着未来的日收益率具有相同的分布。
累积直方图(基于离散估计累积密度函数)
除了上一篇《「量学堂 专篇」数据可视化简介(上)》中提到的概率密度直方图外,还有一种直方图,其基于累积分布函数的形式展现。
在累积直方图中,柱型条的“高”用以表示观测集中的样本累积出现的次数(频率)。由于数据样本出现的频率永远是非负的(没有出现或出现过XX次),因此图形会以一种递增的趋势呈现。
获取2014年度微软公司股价 股价累积直方图可视化散点图
当你试图展现两个数据集之间的关系时,散点图便是一个好的选择。我们使用具有某种对应关系的两组数据,不妨就拿苹果与微软的股价序列分别作为两组数据集,“各个交易日”就是这个所谓的“某种对应关系”。
获取2014年度微软和苹果公司的股价 两家公司股价散点图可视化散点图中的每个点,都代表了某个交易日对应的苹果股价与微软股价。注意,由于散点图是二维的(维度分别对应的是两股的股价),因此我们没有更多的维度可供标记具体交易日期。
下面我们用日收益率代替股价,来看一下两家公司每日涨跌幅的散点图:
获取2014年度微软和苹果公司的日收益率 两家公司日收益率散点图可视化折线图
折线图用来跟踪当x自变量变化时,应变量y对应的变化趋势。举例来说,当我们绘制股票价格变化趋势时,通过连接各个数据点绘制而成的折线图(而非仅仅只标记出数据点),使我们便于随着时间的推移跟踪股价。需要注意的是,折线图无法绘制出相邻数据点之间的变化细节的,这是由自变量的最小单位决定的,拿下图来说,折线图反应的是苹果与微软股票价格每天的走势,最小单位是每个交易日,而在交易日内每分钟的价格变化走势是无法体现的。
plot函数实现将多个数据集在同一视图中展现 两家公司股票价格折线图可视化再来看一下日收益率的折线图展现:
通过pct change函数获取股价每日涨跌幅数据 微软每日涨跌幅折线图可视化不要奢望条件永久有效
任何时候都不要试图通过数据可视化,来验证模型假设是否正确。比如:因为散点图呈现类似线性相关关系,而认为已构建的预测模型 Y = 2 * X + b 是正确的,这是极其荒谬的(参数值的估计我们后续章节会做进一步介绍);也不要因为数据样本“过去”呈现出的分布形态和趋势,就想当然的认为它未来也仍然适用。验证模型的有效性,通常需要更复杂、仔细的验证过程。图形化的主要用途,在于帮助你在最一开始,决定模型将以何种方式开始运作。
更多量化投资内容,欢迎关注微信公众号“数据夕拾”。