获取到的数据集中存在缺失数据,这种情况在现实问题中非常普遍,这将导致一些不能处理缺失值的函数/方法无法使用。
本篇内容的介绍的金融期权部分将涉及微积分内容。
缺失值处理
当处理缺失值时,本公众号介绍以下几种常见策略的使用情景:
将含有缺失值的案例剔除
根据变量间的相关关系填补缺失值
根据案例之间相似性填补缺失值
使用缺失值处理专用工具
方案一:剔除
剔除含有缺失记录的数据非常容易实现,尤其是当这些记录所占的比例在可用数据集中非常小的时候,这个选择就比较合理。剔除所有包含缺失记录是一种极端方法,注意:航天航空、生物医学等对数据有精密要求的领域不适用剔除的方式,会对结果产生较大的误差。
读入需要分析的数据
含有缺失值的行数为16
与is.na( )和na.rm( ) 命令不同,complete.case( )提供了对一行完整观测值(包含多个变量)的判断。
对于样本缺失太多的数据集,(如包虫病的治愈监控),由于样本缺失值太多,所以数据几乎是无用的样本,如果采用复杂的填补的方法,就会导致较大偏差。可以选择剔除某些观测值。
na.omit( )是一种剔除变量的常见命令,该命令将对含有数据缺失的记录进行全部剔除,会对整体数据产生较大影响,在数据分析中并不常被使用。
需要找出缺失值较多的样本所在的行。
找出数据集中每行数据的缺失个数
apply()函数是R中功能非常强大的一类函数。这类函数又称为元函数,它们可以在某些条件下对数据处理对象应用其他函数。
apply()函数可以将一个函数应用到数据记录每一行的各个维度上去,即高维度数据。
找出缺失值个数大于列数20%的行
剔除缺失超过20%的行
最高频率法
在金融期权的建模中,收集到的数据常常存在缺失值的情况。我们使用Robert Merton的期权模型,(注:Robert Merton美国哈佛大学商学院金融学教授。哈佛大学最高级别“大学教授”。1997年诺贝尔经济学奖获得者。现代金融学开创者之一。)因此我们需要所得到的数据在某一点的左/右极限是连续的(对于期权建模,某一时刻的左极限和右极限反映了函数在某段时间内的图形变化趋势)。
填补含有缺失值记录有许多种方法,不同方法对逼近程度和算法复杂度的权衡不同。
1
中心趋势值
填补缺失数据最简便和快捷的方法是使用一些代表中心趋势的值,代表中心趋势的值反应了变量分布的最常见值。
有多个代表数据中心趋势的指标,(平均值、中位数、众数等),最终选择由变量的分布决定。
对于接近正态分布的数据集,所有的观测值都较好的聚集在平均值周围,均值就是最佳选择。
对于偏态分布、含有离群值的变量,将导致平均值不具有代表性,中位数是更好地代表数据中心趋势的指标。
数据分布近似正态分布
填补行缺失值
使用数据中心趋势方法填补缺失数据虽然简单快速,特别适合于大数据集,但是由于平均值不能代表大多数变量值,因此可能导致较大的数据偏差,影响最终的数据分析结果。
对于使用无偏方法来寻找最佳数据补充的方法相对复杂,不适合大型数据挖掘方案。
变量相关法
通过变量值之间的相关关系,能够发现某变量与目标变量高度相关。从而可以得到缺失值样本的更贴近填补值,比上一种均值法产生的偏差更少。
相关值在1(或-1)周围表示相应的两个变量之间有强正(或负)线性相关关系。
cor( )函数可以产生变量之间的相关值矩阵。
symnum( )输出清晰的线性关系
对于较大的矩阵可以使用这种方式,让表示的相关值更为清晰。
获取线性模型
根据得到的数值得出线性模型公式:
PO4=42.897+1.293*oPO4
可以通过这个公式计算这些变量的缺失值。
对缺失值进行填补
线性关系的研究能够帮助填充一些新的缺失值。
领取专属 10元无门槛券
私享最新 技术干货