第3章统计工程的关键步骤 统计工程的关键步骤即统计工程项目实施的一系列有顺序的研发活动,可分为以下7个步骤: 需求分析、数据获取、数据管理、数据分析、数据可视化、设计统计产品、统计产品的工程化实现。本章将分别介绍上述各步骤。 3.1需求 3.1.1需求来源 统计工作的需求主要来自其他学科和解决实际问题过程中的需要,涉及的领域较为宽泛。例如,如何刻画一个国家当前的经济水平,如何切实反映当前金融市场发展趋势等指标构造问题; 又如,如何安排广告投放以使效益最大化,如何安排道路交通以节约成本、方便出行等优化问题; 再如,如何识别具有高潜力的用户群体,如何归纳用户的购买行为等分类问题。 简而言之,统计学是立足于解决问题的学科。这提示我们要从现实工作、生活中识别需求,思考如何将所学的统计方法应用于实际,促进统计学与其他学科的共同发展,让统计能更好地服务于生活。 3.1.2需求类型和特点 目前,市场上对于统计产品的需求可以分为功能需求与性能需求两个方面。 功能需求指的是将特定输入转化为特定输出的能力,是针对统计产品所能提供的服务内容的要求。例如,输入用户信息,输出对该用户的分类结果; 输入某地的灾情数据,输出对受灾损失的预测结果等。 性能需求指的是便利使用、维护、更新的能力,是对统计产品在除内容外的其他用户体验方面的要求,包括以下3个方面。 (1) 产品的感官体验,即产品的色彩、声音、图像使用是否亲切,在字体、版式和底色的选择上是否能够突出重点。 (2) 产品的交互体验,即在输入、输出过程中使用的方法是否简便,在处理效率上是否满足用户期待。 (3) 产品的信任体验,即能否及时进行更新维护、升级换代以适应新的需求,修补使用过程中暴露的缺陷。 从以往统计工作实践中,可以大致归纳出统计需求具有如下特点。 1. 复杂性 统计要解决的实际问题是复杂的,因此在实际应用统计解决问题时需要考虑多个方面,以及各个方面之间的联系,之后需要选择合适的方式将特征转化为变量并做相应处理,最后再将得出的数学结果结合实际应用做文字解释。其中的每一步都需要围绕需求进行,但如何贴近需求则要由统计工作者自己思考尝试,这个过程通常是复杂的。 2. 多变性 由于受到时间、环境、政治等因素的影响,在实际应用过程中的统计需求是不断变化的。如从最初利用统计描述国情到统计推断,每个时期人们进行统计工作的目标有所不同。除此之外,事件的统计规律也会发生变化,所取得的数据具有一定的时效性,这些都使统计工作的需求呈现多变的性质。 3. 交流和达成共识困难 在具体领域实际应用过程中,统计工作者需要结合相关领域的专业知识,这时往往需要不同领域之间的交流,但由于统计需求的复杂性和多变性,在合作过程中可能面对的困难有很多,例如,双方对于最终产品的预期不统一,对于彼此面对的技术困难不了解,导致难以相互信任等,这些都反映了统计需求交流和达成共识困难的特性。 3.1.3需求建模 在解决实际问题过程中,统计工作者拿到手的问题往往只是对现实情况的笼统描述,需要先将其转化为与数据相关的统计问题,而后才可以用统计的方法进行解决,这个过程就是需求建模。 例如,在对用户消费行为进行分类预测时,首先需要确定的是要将哪些消费特征纳入考量范围,其中可能包括该消费者同时购买的商品的种类、品牌和数量,购买的时间、频率等,在对网购消费数据进行处理时可能还需要考虑该用户获得商品信息的渠道,进而推断其如何做出购买决定等。 由于统计需求具有复杂性、多变性、交流和达成共识困难的特点,在实践过程中,首先需要与客户方建立有效沟通,对需求进行深入细致的调研分析。在了解业务内容的基础上,参考已有的行业经验,综合考虑数据可得性、技术可行性、预算约束等要求,最终确定所需的数据和技术方案,完成需求建模。 3.2数据采集 3.2.1数据产生场景 通常,在解决实际问题的过程中,数据来源主要有以下5种。 1. 人的线上行为状态 人的线上行为状态主要指人与网络世界的交互行为,包括网购、网上社交等,常见的如用户的搜索、点击信息,商品的浏览量、交易成交量等。 2. 人的线下行为状态 人的线下行为状态主要指人与现实世界的交互行为,包括日常出行记录、城市交通信息、实体购物信息等。 3. 人的想法 人的想法主要指人的内心态度和感受,这类数据通常无法直接观测,需要使用行为数据进行推断或通过调查等方式获取,例如工作满意度、选举支持率、心理状况等。 4. 自然与社会状态 自然状态即气象、水文、地质等自然因素,这类数据主要来源于对自然环境的观察和记录,包括气象数据中的温度、湿度、风力、风向、日照时长等,水文数据中的水位、流量、流速、泥沙含量等,地质资料中的矿藏分布数据、土壤元素丰富度等。 社会状态即对某国家或地区经济生活各方面的整体概括,这类数据主要由政府统计得到,需要运用数据建模确定专门的统计指标。具体如反映人口情况的出生、死亡统计; 反映社会生产力的农业、工业产品产量数据; 反映生活水平的地区生产总值、居民消费数据等。 5. 机器行为状态 机器行为状态主要指在机器的使用、维护过程中产生的数据,例如设备的转速、故障频率等。 3.2.2数据采集方法 数据采集方法可以分为直接途径和间接途径。 1. 直接途径 直接途径指的是数据使用者根据自身需求实际调查得到数据,包括以下5种方法。 1) 问卷调查 统计工作者完成需求建模,确定所需数据之后,以问卷调查的形式从调查对象处直接获取数据。通常包括设计问卷、设计抽样方案、设计调查方式、实施问卷调查和问卷数据整理。详情可以参阅李灿的《市场调查问卷的设计艺术》[10]。 问卷调查的主要缺点在于成本高、耗时长、样本量小。但优点在于数据质量高,数据相关性、数据格式等均可控,后期处理较为容易。适用于采集人的线下行为状态、人的想法这类无法通过线上工具直接获取的场景。 2) 注册记录 用户在使用各类门户网站或App时,常需要提供个人信息进行注册,其身份信息(年龄、职业、学历、婚姻状况等)和线上的行为轨迹(浏览记录、消费记录、人际关系等)将会被记录下来。这类数据由于安全性考量,往往只在公司内部使用,能够从多维度、更准确地进行用户画像。 3) 识别技术 识别技术指通过探测器等特殊设备对物体进行识别,适用于采集人的线下行为状态。如人脸识别技术,通过对人脸的抓拍和精准检测,记录目标人群的行动轨迹数据。其优点在于能够实现大量数据的自动记录,获取简便; 缺点是对设备要求高,技术复杂,需要较高的硬件成本。 4) 视、音频记录 视、音频记录指通过录像、录音等方式采集数据,适用于采集人的线下行为状态。如安防监控摄像头,记录着镜头照射范围内的影音信息。其优点是真实度高,数据质量有保障; 缺点是视、音频记录属于非结构化数据,处理复杂且数据价值密度低。 5) 系统日志 系统日志记录的是在人机交互操作和机器运行过程中产生的数据。其优点是能够即时记录; 缺点是数据规模大,且增长速度快,数据价值密度低。 2. 间接途径 间接途径指的是通过技术或资金由第三方获取数据,当由于各种因素无法直接采集数据时,可以尝试使用以下3种间接途径获取数据。 1) 购买 近年来,数据服务行业兴起,可提供大量收集、整合和对外销售数据的服务,如百度数据众包平台可提供可定制的数据服务,由专业团队负责数据收集的整个过程。这类服务通常成本较高,但数据质量也较高,适用于数据具有垄断性,或者自行采集成本更高的场景。 另外,除了专业定制数据之外,其他一些平台,如阿里云,可提供大量API数据服务,只要掌握基本的API使用方法,即可享受一些价格较为亲民且内容贴近生活的数据服务,如天气预报、人脸识别等。 2) 通信截流 通信截流即HTTP截流,指的是分析用户通过加密信道浏览网页时产生的通信流信息,重构网页的HTML文件大小、内嵌对象文件大小等信息,并以此构造出“指纹”,进而搜索目标站点的指纹模型,以识别用户所浏览的网页。 3) 爬虫 爬虫技术通过给定的规则,自动从互联网上抓取信息的程序或者脚本。通常,用户使用浏览器打开网页,向服务器发送请求之后,服务器会返回解析的结果。使用爬虫技术可将返回的代码过滤,筛选其中需要的部分并适当整理,获取有价值的数据。 3.2.3数据采集工具 除了对已有数据进行处理外,统计工作者常常需要自己动手找数据,这时就需要借助一些采集工具。常用的数据采集工具包括以下5类。 1. 问卷 问卷是统计研究中用来收集数据的常用工具。 按照填写方式可分为自填式问卷和访问式问卷两类。自填式问卷由受访者自行填写,因此以同样规模投放时所需成本较低,但在实际使用过程中可能出现较多废卷; 访问式问卷投放成本相对较高,但常常能保证较高的完整度和问卷质量。 按照填写工具可分为纸质问卷和电子问卷两类。纸质问卷在印刷、投放过程中的成本相对较高,且后期数据录入、清洗工作较繁杂,限制了投放的规模; 电子问卷免去了数据在录入整理过程中的工作,适合大面积投放。 统计工作者在使用时需根据实际情况选择合适的问卷投放方式和填写方式。 在具体的问卷设计过程中,需要做到以下几点: 首先,在标题上对研究主题进行概括,保证被调查者能够一眼明确问卷涉及的内容。其次,在问卷的开头应做简要说明,帮助被调查者了解调查目的、消除顾虑。再次,在问卷内容上,应保证完成问卷用时在15~30min; 避免使用含糊不清的形容词和副词; 最好进行量化描述,避免出现诱导性倾向。最后,在问题设置的顺序上,先易后难; 先一般性问题,后敏感性问题; 先封闭性问题,后开放性问题。 2. 传感器 传感器能够感受到被测量的信息,并按一定规律将其存储为电信号或其他形式,实现数据的采集、传输、存储。常见的传感器包括光敏传感器、声敏传感器、压敏传感器等,已广泛应用于工业领域,负责监测、记录机械的运行数据,目前也被越来越多地应用在智能产品上,如监测睡眠质量数据等。 3. 录音、录像设备 常见的录音设备包括数字中继录音设备、数字话机录音设备、VoIP录音设备等。视频数据往往通过摄像机进行采集,常见的视频监控录像设备包括DVR,NVR,IP SAN等。 4. 数据采集软件 这里的数据采集主要指的是网络上的日志数据,例如用户的访问页面、点击的服务等。通常使用日志收集系统收集这类数据,如Apache Flume,Kafka,淘宝的Time Tunnel等,这里简单介绍前面两种。 Apache Flume的运行核心是Agent,它包括3个组件: Source,Sink和Channel,具体的工作流程是: 首先,通过Source收集数据并传递给Channel,不同种类的Source可收集不同的数据格式。例如使用目录池数据源可以监测制定文件夹中文件的变化情况,记录产生的新文件。其次,通过Sink将Channel中的数据输送给外部源或其他Source,例如将数据写入HDFS,Hbase中。直到数据进入下一个Channel或者到达终端时,前一个Channel中的数据才会被删除。 Kafka的工作原理可以看作生产者向主题写入数据、消费者从主题读取数据的过程。其特性在于支持分布式事务处理,具有可扩展性、延迟低,能够同时处理大量消费者的需求。虽然Kafka在许多功能上和Flume有重叠,但二者仍有所区别。首先,Kafka是通用型系统,可以由许多生产者和消费者分享不同的主题,但Flume主要针对HDFS和HBase。因此,如果数据需要被多个应用程序使用,建议使用Kafka。其次,Flume拥有许多配置好的Source和Sink,如果数据来源已经确定,则不需要额外编码,使用Flume较为便利; 如果需要自己准备生产者和消费者,则使用Kafka利于编码。最后,Kafka与Flume可以同时使用,将Kafka作为一个Flume的Source,这样就不需要自己开发消费者了。 5. 爬虫 爬虫是一个自动提取网页内容的程序,传统的运作方式是从一个或若干个初始网页开始,获得初始网页的地址后不断从当前页面上抽取新的URL放入队列,直到满足系统的停止条件。在这个过程中,通常还需要借助网络分析算法过滤与主题无关的链接,保留有用的链接放入等待队列中,再借助搜索策略从等待队列中选择下一步提取的网页。 在收集数据的过程中,统计工作者有时需要自己动手从网上爬取数据。常用的方式有两种: 一种是借助各种已有的爬虫软件; 另一种是自己编写爬虫代码。前者的优势在于操作简便,易于上手,但由于其对所爬取的数据有格式要求(在页面上需要按一定规律摆放),在有的网站上无法使用。后者所能爬取的数据范围更广、效率更高,但需要一定的技术手段。有时需要用到正则表达式,对刚刚开始实际数据分析的统计工作者来说,程序实现较难。 目前,最常用的爬虫软件是八爪鱼采集器,使用者可以在软件上通过可视化操作制订自己的爬取规则,即给定一个页面并指出其中需要收集的数据,软件会自动按照事先给定的规则打开网页并爬取相同格式的数据,最后将所得数据统一汇总到Excel中。这类免费的爬虫软件很适合所需数据量不大、爬取规则较为容易的数据采集问题,只需要几分钟的教程就能快速上手,较为便利。 如果需要爬取更多种类的数据,或者想要爬取一些爬虫软件并不适用的复杂页面,常用的方法是借助Java或Python等工具,尝试自己编写简单的代码对网页进行爬取,Python提供了一些爬虫的包,例如: urllib,urllib2,BS4,Scrapy,Selenium等。其中,urllib可以向指定网页发送请求,使用的前提是要爬取的数据网页地址具有一定规则,而BS4可以将请求得到的HTML转化成树形结构,方便之后根据标签或正则表达式进行提取; Selenium则是通过启动浏览器、模拟人工操作过程来提取网页数据,可以处理诸如点击特定按钮及实现网页拖动等单纯通过网址操作无法实现的爬取过程。与此同时,还可以借助一些开源项目,目前在GitHub上有很多好的Java爬虫项目可供使用者借鉴,如Nutch,Heritrix,crawler4j等。 目前,网络上关于爬虫技术的教程也有很多,有需要的读者可以自行搜索一下,相信掌握爬虫技术并不是一件很困难的事情。 3.3数据管理 除去数据采集,对数据的良好管理也是挖掘数据价值的前提。而且由于在实际应用当中,数据获取过程可能比较自然,而数据积累的量会随着时间推移逐渐变大,问题可能更多来自数据管理过程。 数据管理指对数据的存储与备份、共享与安全和数据的质量进行监控。首先,数据采集之后需要性能良好的存储介质对其妥善保管,以便后续的访问与分析,并及时备份,以保障数据的完整可用。其次,统计工作常常需要跨部门完成,共享数据并通过权限设置等方式保障数据安全非常必要。此外,用户对数据的操作会改变数据内容、现实的演变会影响数据的时效性等,因此有必要对数据的质量进行监控。在统计工程中,这一步依赖于数据管理制度,设置准确的数据访问、录入、修改和审批权限,有效利用先进的数据管理工具,有助于获取高质量的长期数据。 3.3.1数据存储与备份 1. 数据存储 数据的存储方式按存储的集中程度可分为分布式存储和集中式存储。集中式存储指的是建立一个庞大的数据库,各种功能模块围绕数据库的周围进行录入、修改、删除等操作。集中式存储的优势在于保证了每个终端的数据统一,且所有数据统一存储之后备份较为方便,同时服务器作为唯一需要保护的系统被重点突出。例如,银行系统应使用集中式存储。但集中式存储对服务器的要求很高,成本较高,不能满足大规模存储应用的需要。分布式存储指的是将数据分散存储在多台独立的设备上,利用多台存储服务器分担存储负荷,并利用定位服务器定位存储信息。使用分布式存储数据可以提高存储效率,降低对于服务器的要求,在一定程度上分散安全性的焦点,使系统不易出现大规模瘫痪。但分布式存储同样存在易受病毒影响、各部分数据存在差异等缺点,因此在使用时需根据需求选择合适的存储方式。 数据的存储方式按路径可分为云存储和本地存储,最简单的判断方式是是否需要使用互联网。本地存储是指数据使用者将数据存储在个人计算机或移动硬盘上,而云存储是将数据上传至相互连接的远程云服务器上。由于云存储能够缩减设备开支、随时随地共享数据,具有高度灵活性和可扩展性,如今将数据存储在云端的方式越来越流行。 数据的存储方式按数据存储结构可分为4种: 顺序存储、链接存储、索引存储和散列存储。顺序存储使用一组地址连续的存储单元,依次存储线性表的数据元素。链接存储使用一组任意的存储单元存储线性表的数据元素。索引存储指通过建立附加的索引表来标识结点的地址,而索引存储按照节点与索引项的对应关系,又可分为稠密索引和稀疏索引。散列存储由结点的关键码值决定结点的存储地址。 2. 数据备份 数据备份是为了防止由系统故障、操作失误等意外原因导致数据丢失,而将全部数据或关键数据复制到其他存储介质上的过程。 备份策略主要有3种: ①完全备份。即每天都对需要进行备份的数据进行全备份。完全备份可靠性高,但会造成大量的数据冗余,且备份耗时长。②差分备份。即每次备份的数据只是相对上一次完全备份之后发生变化的数据。③增量备份。即每次备份的数据只是相对于上一次完全备份或增量备份后改变的数据。其优点在于没有数据冗余; 缺点是恢复数据时很复杂,且可靠性较低。 目前,最主要的备份方式是数据库备份,主流的数据库产品如Oracle,SQL Sever,My SQL都支持不同策略的数据备份机制。另外,也有一些专门的备份软件,如IBM公司的Tivoli Storage Manager(TSM),能够提供集中的数据备份管理,为大型的企事业单位提供服务,是业界最主要的备份软件之一,其他类似的还有NetBackup(NBU)和Comm Vault(CV)等。 3.3.2数据共享与安全 数据共享指的是通过建立统一的数据库,或将数据上传至公共存储空间,如各类公共盘、云平台等,让不同地区、使用不同计算机和不同软件的用户,能够操作、计算和分析存储在其他系统中的数据。常见的数据共享模式包括中间件数据共享系统、数据仓库和P2P集成共享方法等。 数据安全主要指采用一定技术对数据进行主动保护,如防火墙、数据保密、口令认证等。数据安全的关键在于数据加密,即通过加密算法将明文转化成密文,是一种防止秘密数据被外部破译、对计算机信息进行保护的方法。常用的数据加密算法包括DES,AES,RSA,Base64,MD5,SHA1等。 数据加密通常包括4个部分: 数据传输加密、数据存储加密、数据完整性鉴别和密钥管理。 数据传输加密指的是对传输过程中的数据流进行加密,包括线路加密和端端加密两类。其中,前者是对被保护信息通过的各个线路采用不同的加密密钥提供保护; 后者是在信息的发送端对数据进行自动加密,由TCP/IP进行数据封装,作为不可识别与阅读的数据传输。 数据存储加密技术分为密文存储和存取控制两类。密文存储一般通过加密算法转换、附加密码、加密模块等方法实现。存取控制分为自主存取控制和强制存取控制两类。其中,自主存取控制即拥有某权限的用户可将相应的权限转授给其他用户; 强制存取指的是将每一个数据库对象标为一个密级,授予每位用户一定级别的许可证,只有拥有合法许可证的用户有资格访问数据库。 数据完整性鉴别指的是对介入信息传送、存取和处理的人的身份和相关数据内容进行验证,一般包括口令、密钥、身份、数据等项的鉴别。系统通过对比验证对象输入的特征值是否符合预先设定的参数,实现对数据的安全保护。 密钥管理包括密钥的产生、分配、保存、更换和销毁等各环节上的保密措施。 3.3.3数据质量控制 1. 数据质量 衡量数据质量的标准包括相关性、完整性、准确性、及时性、一致性。 数据的相关性指的是所收集数据与所探究问题的关系的紧密程度,例如,在进行种植作物产量预测时,实际化肥施用指标在相关性上通常优于化肥市场价格指标。 数据的完整性一方面体现在所收集数据是否覆盖全面; 另一方面体现在每一类型具体数据的数据量是否足够。例如,同样在产量预测上,既需要考虑类似日照时长、降水量这些指标设置是否合理,也需要考虑其中每个变量的数据是否存在缺失,缺失情况如何处理的问题。 数据的准确性指的是所选用的数据是否真实可靠,在进行统计工作时,统计工作者要对自己即将采用的数据真实性有充分的把握,因此通常选择权威的数据来源,并在工作中予以注明。 数据的及时性体现在所选用数据的时间区间与探究问题的时间区间是否匹配,对于当下问题的探究往往需要尽量使用最新的数据(这里可能还存在数据量和