打字猴:1.70050964e+09
1700509640 数据科学家养成手册 [:1700503634]
1700509641 数据科学家养成手册 14.1 此“统计”恐非彼“统计”
1700509642
1700509643 说到“统计”,很容易让我们想到在学校里学习的“统计学”课程内容,只是因为统计任务已经被规约成任务单一的指标计算或同比和环比计算,所以我们在日常运营工作中用到的统计知识相对比较简单。而且,在全样本统计成本越来越低的情况下,通常不会用到太多高级统计学中有关从抽样误差反推到全样本误差的知识。不过,这仍然是统计,所以我们在统计学中需要注意的问题,在这里也一样需要注意。
1700509644
1700509645 既然数据统计的意义主要在于用数据为认知对象画像,那么数量统计、数值加和、数值平均、方差、同比、环比等就成了绝大多数单位在运营过程中所需的基本数据资源。在这样的情况下,我们就把这种一般性的“操作”当成“统计”来介绍,把“高级技巧”放在后面作为分析的内容来讲解。
1700509646
1700509647 据我所知,现在很多人都有这样的误解:在数据库里使用AVG、SUM、COUNT这样的语句进行统计是一件档次很低的事情,因为操作太简单,有一点SQL语言基础的人都能做到。但我并不这么看。统计通常用于把认知对象的维度从低变高,从高变低,从简易变得复合,从复合变得简易。这种认知维度升降中的变化,可以帮助认知对象在观测过程中处于复杂度适中的状态,从而为人们进行认知与归纳总结提供便利。
1700509648
1700509649 我们先说降维认知。当数据处于高维状态的时候,我们一般喜欢把它们降维到适当的状态来认知。数据挖掘领域使用的“数据立方体”(Data Cube,如图14-1所示)就是一种降维认知手段。在描述一个维度极为丰富的高维数据记录组(例如销售记录)的时候,这种记录可能会包含销售时间、销售地点、销售类目、销售金额、销售数量、折扣率、售货人员等各种维度的信息,而且会有数以百万计的数据记录量。假设有m个维度和n条销售记录,那么这些数据会形成一个m×n的巨型矩阵。但是,销售额是一个对加和值敏感的数据种类,在使用
1700509650
1700509651
1700509652
1700509653
1700509654 图14-1 数据立方体
1700509655
1700509656 SELECT SUM(XXX)GROUP BY XXX
1700509657
1700509658 之后,就会忽略一些我们不那么关心的维度数据,并将一个确定的加和值返回,从而代替数以万计的具体销售记录。这种就是典型的降维认知——只关注最为关键的数据维度,只关注一个统计值而非单个个体值。
1700509659
1700509660 除了降维认知以外,升维认知(如图14-2所示)的使用也很广泛。
1700509661
1700509662
1700509663
1700509664
1700509665 图14-2 升维认知
1700509666
1700509667 在表示股价或期货价格的K线图(如图14-3所示)中,横坐标是时间,K线图上的每一个柱形都表示4个价格信息,分别是开盘价、高价、低价、收盘价。这种数据蕴含的信息看上去很贫乏,因为只有时间和价格,对市场多空情绪的反映有些不直观。所以,股票分析家们又发明了很多技术指标,这些指标无一例外,都是用K线图上的数据进行计算所得到的升维指标数据,MA(Moving Average,移动平均线)的计算就是其中之一。
1700509668
1700509669
1700509670
1700509671
1700509672 图14-3 股票价格K线图
1700509673
1700509674 在一个MySQL数据表Price中有字段CLOSE作为收盘价的字段(如表14-1所示)。
1700509675
1700509676 表14-1 Price表信息
1700509677
1700509678   TIME     CLOSE     2016/10/3     104.15     2016/10/4     102.33     2016/10/5     102.25     2016/10/6     101.54     2016/10/7     101.86     2016/10/10     102.43     2016/10/11     102.90     ……     ……   计算收盘价MA,应该使用下面的步骤。
1700509679
1700509680
1700509681
1700509682
1700509683 以3天移动平均线指标为例,先建立一个以ROW_NUM为升序伪列的表。
1700509684
1700509685 SET @ROWNUM=1;    CREATE TABLE TEMP ASSELECT @ROWNUM:=@ROWNUM+1 AS ROW_NUM,TIME,CLOSEFROM PRICEORDER BY TIME;
1700509686
1700509687 建立一个指标表放置MA数据。
1700509688
1700509689 CREATE TABLE EMA ASSELECT  R3.ROW_NUM, R3.TIME,(R1.CLOSE+R2.CLOSE+R3.CLOSE)/3 AS MAFROM(  SELECT ROW_NUM, TIME, CLOSE  FROM  TEMP)AS R1LEFT JOIN(  SELECT ROW_NUM, TIME, CLOSE  FROM  TEMP)AS R2ON R1.ROW_NUM=R2.ROW_NUM-1LEFT JOIN(  SELECT ROW_NUM, TIME, CLOSE  FROM  TEMP)AS R3ON R2.ROW_NUM=R3.ROW_NUM-1;
[ 上一页 ]  [ :1.70050964e+09 ]  [ 下一页 ]