精华内容
下载资源
问答
  • 对数据进行统计是从定量角度去探索数据,是最基本数据探索方式,其主要目的是了解数据从统计学上反映特征,以便我们更好地认识这些将要被挖掘数据。 我们先要清楚两个关于统计学基本概念:总体和样本...

            对数据进行统计是从定量的角度去探索数据,是最基本的数据探索方式,其主要目的是了解数据从统计学上反映的量的特征,以便我们更好地认识这些将要被挖掘的数据。

            我们先要清楚两个关于统计学的基本概念:总体和样本。统计的总体是人们研究对象的全体,又称母体,如工厂一天生产的全部产品。总体中的每一个基本单位,如一件产品称为个体,个体的特征用一个变量,如x来表示。从总体中随机产生的若干个体的集合称为样本,如n件产品。样本实际上就是从总体中随机取得的一批数据,记作n称为样本容量。从统计学的角度,简单说统计的任务是由样本推断总体;从数据探索的角度,我们就要关注更具体的内容,通常是由样本推断总体的数据特征。

            MADlib提供了描述性统计、概率统计、推论统计三类数据统计模块,本篇介绍描述性统计的相关函数及用法。所谓描述性统计分析,就是对一组数据的各种特征进行分析,以便于描述测量样本的各种特征及其所代表的总体的特征。描述性统计分析的度量值很多,常用的如平均数、标准差、协方差、中位数、频数分布、正态或偏态程度等等。这些统计是进行复杂数据分析的基础。MADlib 1.10.0提供皮尔逊森相关和汇总统计两种描述性统计方法。


    一、皮尔森相关

    1.  皮尔森相关简介

            两个具有二元变量或连续变量的数据对象之间的相关性是对象属性之间线性联系的度量。更准确地描述是,两个数据对象x和y之间的皮尔森相关(Pearson's correlation)系数由下式定义:

     

            这里我们使用标准的统计学记号和定义:


    其中分别表示x与y的均值。分别表示x与y的标准差(standard deviation)。表示x与y的协方差(covariance)。

            标准差是各个数据与均值偏离程度的度量,这种偏离有时也称为变异。均值可能被离群点扭曲,并且由于标准差用均值计算,因此它也对离群点敏感。两个变量的协方差是度量两个随机变量相关程度的指标,如果一个变量跟随着另一个变量同时变大或者变小,那么这两个变量的协方差就是正值,反之为负值。协方差的值越接近0,表明两个变量越不具有线性关系。

            虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度。为了更好的度量两个随机变量的相关程度,引入了皮尔森相关系数。由公式可知,皮尔森相关系数(相关度)是在协方差的基础上除以了两个随机变量的标准差得到的。

            相关度总是在-1到1之间取值。当两个变量的线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关的,相关系数大于0;如果一个变量增大,另一个变量却减小,表明它们之间是负相关的,相关系数小于0;特别地,如果相关系数等于1,表示完全相关,-1表示完全负相关,即,其中ab是常数。


            下面两个x和y的值集分别给出相关度为-1和+1的情况。为简单起见,第一组中取x和y的均值为0。

            x=(-3,6,0,3,6)

            y=(1,-2,0,-1,2)

            x=(3,6,0,3,6)

            y=(1,2,0,1,2)


            如果相关度为0,表明两个随机变量之间不存在线性相关关系。然而,仍然可能存在非线性关系。在下面的例子中,数据对象的属性之间存在非线性关系,但是它们的相关度为0。

            x=(-3,-2,-1,0,1,2,3)

            y=(9,4,1,0,1,4,9)


            由于两个变量的相关系数直接指出了两个变量线性相关的程度,对于数据探索,皮尔森相关系数比协方差更可取。


    2.  MADlib的皮尔森相关函数

            MADlib的皮尔森相关函数为输入源表中的所有数字列生成一个互相关矩阵。如源表中有M个变量(M个数字列),则函数输出是一个Mx M的方形对称矩阵,其中的第(i,j)个元素值就是第i个变量与第j个变量的皮尔森相关系数。输出矩阵对角线上的元素,即变量与自身的相关性总是1.0。

     

    (1)语法

            MADlib的皮尔森相关性有两个函数,一个输出相关系数,另一个输出协方差。两个函数的语法只有函数名不同,参数完全一样。

            相关系数函数

    correlation( source_table,  
                 output_table,  
                 target_cols,  
                 verbose  
               )  

            协方差函数语法如下,该函数用于计算变量间的协方差。

    covariance( source_table,  
                output_table,  
                target_cols,  
                verbose  
               )

    (2)参数

    参数名称

    数据类型

    描述

    source_table

    VARCHAR

    包含输入数据的源表名。

    output_table

    VARCHAR

    保存相关矩阵的输出表名。输出表有N行,N+2列,N为目标列数。除输出表外,函数同时还会创建一个名为<output_table>_summary的概要表。输出表和概要表中各字段的含义分别由表2、表3给出。

    target_cols(可选)

    VARCHAR

    缺省值为‘*’。需要计算相关性的列组成的逗号分隔字符串。如果为NULL或‘*’,结果产生源表中所有数字列相关系数或协方差。

    verbose(可选)

    BOOLEAN

    缺省值为FALSE。如果设置为TRUE,将在控制台打印出详细信息。

    表1 correlation及covariance函数参数说明

     

    列名

    数据类型

    含义

    column_position

    INTEGER

    指示‘output_table’中变量位置序列号。

    variable

    VARCHAR

    包含相关变量的列名。

    <...>

     

    表剩下的部分是‘source_table’表中数字列的N x N的相关系数矩阵。

    表2 correlation及covariance输出表列说明


            注意,输出表作为下三角矩阵排列,上三角形设为空,对角线元素值为1.0。

     

    列名

    数据类型

    含义

    method

    VARCHAR

    值为‘Correlation’或‘Covariance’。

    source_table

    VARCHAR

    源表名。

    output_table

    VARCHAR

    输出表名。

    column_names

    VARCHAR[]

    计算相关性的列名组成的逗号分隔字符串。

    mean_vector

    FLOAT8[]

    各列均值构成的向量。

    total_rows_processed

    BIGINT

    处理的总行数。

    total_rows_skipped

    BIGINT

    因为缺失值而跳过计算的行数。

    表3 概要表列说明


    (3)  示例

    • 查看联机帮助

    -- 相关系数函数  
    select madlib.correlation();  
    -- 用法  
    select madlib.correlation('usage');  
    -- 示例  
    select madlib.correlation('example');  
      
    -- 协方差函数  
    select madlib.covariance();  
    -- 用法  
    select madlib.covariance('usage');  
    -- 示例  
    select madlib.covariance('example'); 

    • 创建输入数据集,共有6列,其中id、temperature和humidity三列是数字类型。

    drop table if exists example_data;  
    create table example_data(  
        id serial, outlook text,  
        temperature float8, humidity float8,  
        windy text, class text);  
    insert into example_data values  
    (1, 'sunny', 85, 85, 'false', 'dont play'),  
    (2, 'sunny', 80, 90, 'true', 'dont play'),  
    (3, 'overcast', 83, 78, 'false', 'play'),  
    (4, 'rain', 70, 96, 'false', 'play'),  
    (5, 'rain', 68, 80, 'false', 'play'),  
    (6, 'rain', 65, 70, 'true', 'dont play'),  
    (7, 'overcast', 64, 65, 'true', 'play'),  
    (8, 'sunny', 72, 95, 'false', 'dont play'),  
    (9, 'sunny', 69, 70, 'false', 'play'),  
    (10, 'rain', 75, 80, 'false', 'play'),  
    (11, 'sunny', 75, 70, 'true', 'play'),  
    (12, 'overcast', 72, 90, 'true', 'play'),  
    (13, 'overcast', 81, 75, 'false', 'play'),  
    (14, 'rain', 71, 80, 'true', 'dont play'),  
    (15, null, 100, 100, 'true', null),  
    (16, null, 110, 100, 'true', null);

    • 在数据集上运行correlation()函数

    -- 计算所有数字列的相关系数  
    drop table if exists example_data_output, example_data_output_summary;   
    select madlib.correlation( 'example_data',  
                               'example_data_output'  
                             );  
      
    -- target_cols设置为NULL或‘*’同样也是计算所有数字列的相关系数  
    drop table if exists example_data_output, example_data_output_summary;  
    select madlib.correlation( 'example_data',  
                               'example_data_output',  
                               '*'  
                             );  
      
    -- 只计算temperature和humidity两列的相关系数  
    drop table if exists example_data_output, example_data_output_summary;  
    select madlib.correlation( 'example_data',  
                               'example_data_output',  
                               'temperature, humidity'  
                             ); 

            函数执行时缺省在控制台打印类似如下的信息:

                                 correlation                                
    ----------------------------------------------------------------------  
     Summary for 'correlation' function                                     
     Output table = example_data_output                                     
     Non-numeric columns ignored: ['outlook', 'windy', 'class']             
     Producing correlation for columns: ['id', 'temperature', 'humidity']   
     Total run time = ('example_data_output', 3, 2.883681058883667)  
    (1 row) 

    • 查看相关矩阵

    select * from example_data_output order by column_position;

            结果:

     column_position |  variable   |    temperature    | humidity   
    -----------------+-------------+-------------------+----------  
                   1 | temperature |                 1 |           
                   2 | humidity    | 0.616876934548786 |        1  
    (2 rows) 

            根据皮尔森相关系数计算公式,执行下面的查询验证函数执行结果:

    select t1.cov /t2.std pearson_correlation  
      from (select s / c cov  
              from (select sum((temperature-avgt) * (humidity-avgh)) s  
                      from example_data,  
                           (select avg(temperature) avgt ,avg(humidity) avgh from example_data) t1) t1,  
                   (select count(*) - 1 c from example_data) t2) t1,  
           (select madlib.array_stddev(array_agg(temperature))*madlib.array_stddev(array_agg(humidity)) std  
              from example_data) t2;

            结果:

     pearson_correlation 
    ---------------------
       0.616876934548786
    (1 row)

            可以看到,按公式得出的humidity与temperature的相关系数与函数的输出结果相同。

    • 计算数据集特征的协方差

    drop table if exists cov_output, cov_output_summary;  
    select madlib.covariance( 'example_data',  
                              'cov_output'  
                             );  

            函数执行时缺省在控制台打印如下信息:

                                  covariance                                
    ----------------------------------------------------------------------  
     Summary for 'correlation' function                                     
     Output table = cov_output                                              
     Non-numeric columns ignored: ['outlook', 'windy', 'class']             
     Producing correlation for columns: ['id', 'temperature', 'humidity']   
     Total run time = ('cov_output', 3, 1.0324928760528564)  
    (1 row)

    • 查看协方差矩阵

    select * from cov_output order by column_position;

            结果:

     column_position |  variable   |   id    | temperature | humidity 
    -----------------+-------------+---------+-------------+----------
                   1 | id          |   21.25 |             |         
                   2 | temperature | 22.1875 |      146.25 |         
                   3 | humidity    |  8.6875 |      82.125 | 121.1875
    (3 rows)

            注意,函数输出中humidity与temperature的协方差是82.125,分母用n代替了n-1,若出于无偏估计的要求,应该被(n-1)除:

    dm=# select s/c cov1, s/(c-1) cov2
    dm-#   from (select sum((temperature-avgt) * (humidity-avgh)) s  
    dm(#           from example_data,  
    dm(#                (select avg(temperature) avgt ,avg(humidity) avgh from example_data) t1) t1,  
    dm-#        (select count(*) c from example_data) t2; 
      cov1  | cov2 
    --------+------
     82.125 | 87.6
    (1 row)

            当前实现在计算列的相关系数时,会忽略列中包含的空值,这意味着NULL对最终相关性结果没有任何影响。

            相关系数的一个常见应用是特征选择与降维。相关系数的绝对值大小表示两个变量之间的线性相关强度,正负号表示相关的方向。一般来说,若观测数据的个数越多,计算出来的相关系数越能真实地反映客观事物的本来面目。

            设相关系数为r,当0.7≤|r|<1时,称为高度相关;当0.4≤|r|<0.7时,称为中等相关;当0.2≤|r|<0.4时,称为低度相关;当|r|<0.2时,称为极低相关。如果变量x与y是高度相关的,说明它们传递了相似的信息,可能只需要保留x、y之一,而抛弃掉另一个。

            由于事务之间的复杂性,在实际研究中,要结合具体变量的特点和专业知识,解释通过统计方法确定的皮尔森相关系数。两个高度相关的变量,它们之间可能具有明显的因果关系,也可能只具有部分因果关系,还可能没有直接因果关系,其数量上的相互关联,只是它们共同受到其它第三个变量所支配的结果。除此之外,相关系数r接近0,只是表示这两个变量不存在明显的线性相关模式,但不能肯定地说这两个变量之间就没有规律性的联系。如前面所示的,两个变量之间存在明显的某种曲线性相关,但计算线性相关系数时,其r值往往接近零。

     

    二、汇总统计

    1.  汇总统计简介

            汇总统计(summary statistics)是量化的,用单个数或数的小集合捕获可能很大的值集的各种特征。对于大多数应用,汇总统计是最常见的统计形式。统计量是加工出来的、反映样本数量特征的函数,它不含任何未知量。

    (1)基本统计量

            非严格定义情况下,一个数据集合的基本统计量包括总记录数、不同值的个数及各自占比、缺失值的记录数及占比、空白值的记录数及占比等值。从数据库表的角度看,这些统计量简单而直观,对目标属性列使用基本的count(*)、count(distinct)函数,以及类似 is null 这样的过滤条件执行数据库查询即可得到诸如此类的统计量。


    (2)频率和众数

            给定一个无序的、分类在上取值的数据集合,设集合中有m个数据对象,则值的频率定义为:

    分类属性的众数(mode)是具有最高频率的值。

            分类属性常常(但并非总是)具有少量值,因此这些值的众数和频率可能是令人感兴趣的和有用的。而对于连续数据,按此定义的众数通常没有意义,因为单个值的出现不超过一次。然而,在某些情况下,众数可能提供关于值的性质或关于出现遗漏值的重要信息。例如,以毫米为单位测量,20个人的身高通常不会重复,但是如果以分米为单位测量,则某些人可能具有相同的身高。此外,如果使用唯一的值表示遗漏值,则该值常常表现为众数。


    (3)百分位数

            对于有序数据,考虑值集的百分位数(percentile)更有意义。具体地说,给定一个有序的或连续的属性x和0与100之间的数p,第p个百分位数是一个x值,使得xp%的观测值小于。例如,从1到10的整数的百分位数依次为:1,2,3,4,5,6,7,8,9,10。按照惯例,,而


    (4)位置度量:均值和中位数

            对于连续数据,两个使用最广泛的汇总统计是均值(mean)和中位数(median),它们是值集位置的度量。考虑m个对象的集合和属性x,设是这m个对象的x属性值,设代表以非递减序排序后的x值。这样,,而,于是均值和中位数定义如下:

            概括地说,如果有奇数个值,则中位数是中间值;如果有偶数个值,则中位数是中间两个值的平均值。这样,对于7个值,中位数是,而对于10个值,中位数是

            尽管有时将均值解释为值集的中间,但是这仅当值以对称方式分布时才是对的。如果值的分布是倾斜的,则中位数是中间的一个更好的指示符。此外,均值对于离群值很敏感,对于包含离群值的数据,中位数也可以提供一个中间值的良好估计。

            为了克服传统均值定义的问题,有时使用截断均值(trimmed mean)概念。指定0和100之间的百分位数p,丢弃高端和低端(p/2)%的数据,然后用常规的方法计算均值,所得的结果即是截断均值。中位数是p=100%时的截断均值,而标准均值是对应于p=0%时的截断均值。


    (5)散布度量:极差和方差

            连续数据的另一组常用的汇总统计是值集的散布度量。这种度量表明属性值是否散布很宽,或者是否相对集中在单个点(如均值)附近。

            最简单的散布度量是极差(range)。给定属性x,它具有m个值x的极差定义为:

            尽管极差标识最大分布,但是如果大部分值都集中在一个较窄的范围内,并且更极端的值的个数相对较少,则可能会引起误解。因此,作为散布的度量,方差(variance)更可取。通常,属性x的观测值的方差记作,定义如下:

    标准差是方差的平方根,记作,它与x具有相同的单位。


            方差对离群值特别敏感,因为它使用均值与其它值的差的平方。这就常常需要使用比值集散布更稳健的估计。下面是三种这样的度量的定义:绝对平均偏差(absolute average deviation,AAD)、中位数绝对偏差(median absolute deviation,MAD)和四分位数极差(interquartile range,IQR)。


    (6)分布度量:偏度和峰度

            值集的偏度(skewness)反映分布的对称性,偏度大于零称为右偏态,此时数据位于均值右边的比位于左边的多;偏度小于零称为左偏态,情况相反;而偏度接近0则可认为分布是对称的。

            峰度(kurtosis)是分布形状的另一种度量。正态分布的峰度为3,若峰度比3大得多,表示分布有沉重的尾巴,说明样本中含有较多远离均值的数据,因而峰度可以用作衡量偏离正态分布的尺度之一。


    2.  MADlib的汇总统计函数

            MADlib的summary()函数为任意数据表生成汇总统计。该函数调用MADlib库中的多种方法提供数据汇总度量值。

    (1)  语法

            summary()函数语法如下:

    summary ( source_table,  
              output_table,  
              target_cols,  
              grouping_cols,  
              get_distinct,  
              get_quartiles,  
              ntile_array,  
              how_many_mfv,  
              get_estimates  
            ) 

            该函数返回以下三部分内容:

    • output_table:TEXT类型,输出表的名称。
    • row_count:INTEGER类型,输出表的行数。
    • duration:FLOAT8类型,计算汇总值所用的秒数。


    (2)  参数

    参数名称

    数据类型

    描述

    source_table

    TEXT

    包含输入数据的源表名。

    output_table

    TEXT

    包含汇总值的输出表名。汇总结果保存在output_table参数指定的表中,表5给出输出表列的说明。

    target_cols(可选)

    TEXT

    缺省值为NULL,请求汇总列组成的逗号分隔字符串。如果为NULL,为所有列生成汇总统计。

    grouping_cols(可选)

    TEXT

    缺省值为NULL,分组列构成的逗号分隔字符串。如果为NULL,为全表生成汇总统计(不分组)。函数为每个分组列独立计算汇总统计信息,也就是说分组列不合并在一起(类似SQL中的grouping合计),这点与常规的PostgreSQL风格的GROUP BY命令不同。

    get_distinct(可选)

    BOOLEAN

    缺省为TRUE,表示计算不同值。

    get_quartiles(可选)

    BOOLEAN

    缺省为TRUE,表示计算四分位数。

    ntile_array(可选)

    FLOAT8[]

    缺省值为NULL。要计算的百分位数组。如果为NULL,不计算分位数值。MADlib 1.10.0 不支持PostgreSQL 9.3及以后版本。

    how_many_mfv

    INTEGER

    缺省值为10,指定需要计算的最频繁值的数目。

    get_estimates

    BOOLEAN

    缺省值为TRUE,表示为不同值和最频繁值产生估算。如果该参数为FALSE,计算精确值(根据数据大小可能需要更长的运行时间。)

    表4 summary函数参数说明

     

    列名

    数据类型

    含义

    group_by

    TEXT

    分组列的名称,没分组时为NULL。

    group_by_value

    TEXT

    分组的值,没分组时为NULL。

    target_column

    TEXT

    请求汇总统计的目标列。

    column_number

    INTEGER

    目标列的物理列号,是该列对应的pg_attribute.attnum值。

    data_type

    TEXT

    目标列的数据类型,显示标准GPDB类型描述。

    row_count

    BIGINT

    目标列的行数。

    distinct_values

    BIGINT

    目标列不同值的个数。如果调用summary()函数时get_estimates参数设置为TRUE,该值为基于Flajolet Martin算法的不同值估算。

    missing_values

    BIGINT

    目标列中缺失值的行数。

    blank_values

    BIGINT

    空白的数目。空白值是由下面的正则表达式定义: '^\w*$'

    fraction_missing

    FLOAT

    小数表示的具有丢失值的行占总行数的百分比。

    fraction_blank

    FLOAT

    小数表示的具有空白值的行占总行数的百分比。

    mean

    FLOAT

    目标列的均值,如果目标列不是数字类型,则该值为NULL。

    variance

    FLOAT

    目标列的方差,如果目标列不是数字类型,则该值为NULL。

    min

    FLOAT

    目标列的最小值。对于字符串类型,该值为最短字符串的长度。

    max

    FLOAT

    目标列的最大值。对于字符串类型,该值为最长字符串的长度。

    first_quartile

    FLOAT

    目标列的第一个四分位数,仅针对数字列。MADlib 1.10.0 不支持PostgreSQL 9.3及以后版本。

    median

    FLOAT

    目标列的中位数,仅针对数字列。MADlib 1.10.0 不支持PostgreSQL 9.3及以后版本。

    third_quartile

    FLOAT

    目标列的第三个四分位数,仅针对数字列。MADlib 1.10.0 不支持PostgreSQL 9.3及以后版本。

    quantile_array

    FLOAT[]

    对应ntile_array百分位的值。MADlib 1.10.0 不支持PostgreSQL 9.3及以后版本。

    most_frequent_values

    TEXT[]

    包含出现最频繁的值的数组。how_many_mfv参数决定数组长度,缺省值是10。如果调用summary()函数时get_estimates参数设置为TRUE(缺省),使用更快的并行聚合方法估算频繁值。

    mfv_frequencies

    BIGINT[]

    包含最频繁值的频率计数的数组。

    表5 summary函数输出表列说明


    (3)  示例

    • 查看summary()函数的联机帮助。

    select * from madlib.summary();  
    -- 用法  
    select madlib.summary('usage');  
    -- 示例  
    select madlib.summary('example'); 

    • 创建输入数据集。

    drop table if exists houses;  
    create table houses (id int, tax int, bedroom int, bath float, price int,  
                 size int, lot int);  
    copy houses from stdin with delimiter '|';  
      1 |  590 |       2 |    1 |  50000 |  770 | 22100  
      2 | 1050 |       3 |    2 |  85000 | 1410 | 12000  
      3 |   20 |       3 |    1 |  22500 | 1060 |  3500  
      4 |  870 |       2 |    2 |  90000 | 1300 | 17500  
      5 | 1320 |       3 |    2 | 133000 | 1500 | 30000  
      6 | 1350 |       2 |    1 |  90500 |  820 | 25700  
      7 | 2790 |       3 |  2.5 | 260000 | 2130 | 25000  
      8 |  680 |       2 |    1 | 142500 | 1170 | 22000  
      9 | 1840 |       3 |    2 | 160000 | 1500 | 19000  
     10 | 3680 |       4 |    2 | 240000 | 2790 | 20000  
     11 | 1660 |       3 |    1 |  87000 | 1030 | 17500  
     12 | 1620 |       3 |    2 | 118600 | 1250 | 20000  
     13 | 3100 |       3 |    2 | 140000 | 1760 | 38000  
     14 | 2070 |       2 |    3 | 148000 | 1550 | 14000  
     15 |  650 |       3 |  1.5 |  65000 | 1450 | 12000  
    \. 

    • 运行summary()函数。

    drop table if exists houses_summary;  
    select * from madlib.summary( 'houses',  
                                  'houses_summary',  
                                  'tax,bedroom,bath,price,size,lot',  
                                  'bedroom',  
                                  true,  
                                  true,  
                                  array[0.1, 0.2, 0.3],  
                                  5,  
                                  false  
                                );  

            结果:

      output_table  | row_count |   duration      
    ----------------+-----------+---------------  
     houses_summary |        21 | 2.05865597725  
    (1 row)

            这里为除id外的其它6个数字列计算汇总统计值,并且按‘bedroom’列分组。array[0.1, 0.2, 0.3]参数表示求每一列的10%、20%、30%的百分位值。

    • 查看汇总统计数据。

    \x on  
    select * from houses_summary; 

            结果:

    -[ RECORD 1 ]--------+-----------------------------------
    group_by             | bedroom
    group_by_value       | 2
    target_column        | tax
    column_number        | 2
    data_type            | int4
    row_count            | 5
    distinct_values      | 5
    missing_values       | 0
    blank_values         | 
    fraction_missing     | 0
    fraction_blank       | 
    mean                 | 1112
    variance             | 373020
    min                  | 590
    max                  | 2070
    first_quartile       | 680
    median               | 870
    third_quartile       | 1350
    quantile_array       | {626,662,718}
    most_frequent_values | {1350,590,680,2070,870}
    mfv_frequencies      | {1,1,1,1,1}
    -[ RECORD 2 ]--------+------------------------------------  
    ...  
    -[ RECORD 21 ]-------+------------------------------------  
    ... 

            可以看到,输出表有21条记录。bedroom列具有2、3、4三个值,summary函数按每个bedroom的值分三组计算其它5列的汇总统计值,并且会按不分组(表级)计算全部6个列的汇总统计值,因此生成21条结果数据。

    • 可以执行下面的查询验证madlib.summary函数输出中tax的概要:

    select t1.*,t2.most_frequent_values,t2.mfv_frequencies from  
    (   
    select bedroom group_by_value,  
           count(tax) row_count,  
           count(distinct tax) distinct_values,  
           sum(case when tax is null then 1 else 0 end) missing_values,  
           sum(case when tax is null then 1 else 0 end)/count(*) fraction_missing,  
           avg(tax) mean,  
           power(madlib.array_stddev(array_agg(tax)),2) variance,  
           min(tax) min,  
           max(tax) max,  
           percentile_cont(0.25) within group(order by tax) first_quartile,  
           median(tax),  
           percentile_cont(0.75) within group(order by tax) third_quartile,
           regexp_split_to_array(
           percentile_cont(0.1) within group(order by tax)||','||
    	   percentile_cont(0.2) within group(order by tax)||','||
    	   percentile_cont(0.3) within group(order by tax), ',') quantile_array
      from houses   
     group by group_by_value) t1,  
    (  
    select bedroom group_by_value,  
           array_agg(tax order by rn) most_frequent_values,  
           array_agg(c order by rn) mfv_frequencies  
      from (select row_number() over (partition by bedroom order by count(tax)) rn,  
                   bedroom,  
                   tax,  
                   count(*) c   
              from houses  
             group by bedroom,tax  
             order by bedroom,count(*) desc) t1  
     where rn <=5  
     group by bedroom) t2  
     where t1.group_by_value = t2.group_by_value; 

            结果:

    -[ RECORD 1 ]--------+--------------------------
    group_by_value       | 2
    row_count            | 5
    distinct_values      | 5
    missing_values       | 0
    fraction_missing     | 0
    mean                 | 1112
    variance             | 373020
    min                  | 590
    max                  | 2070
    first_quartile       | 680
    median               | 870
    third_quartile       | 1350
    quantile_array       | {626,662,718}
    most_frequent_values | {1350,680,590,870,2070}
    mfv_frequencies      | {1,1,1,1,1}
    -[ RECORD 2 ]--------+--------------------------  
    ...  
    -[ RECORD 3 ]--------+--------------------------  
    ... 


    展开全文
  • 在我们获得一些数据后,首先要做就是这些数据进行基本的统计分析,例如均值、中位数、方差等。SPSS中基本统计分析主要包括频数分析、描述统计分析、探索分析、列联表分析等。这节先来介绍前两种SPSS操作...

    070baf8f24286ea9196ebd4f82c40370.gif

    在我们获得一些数据后,首先要做的就是对这些数据进行基本的统计分析,例如均值、中位数、方差等。SPSS中的基本统计分析主要包括频数分析、描述性统计分析、探索分析、列联表分析等。这节先来介绍前两种的SPSS操作过程。

     频数分析

    1、目的

    通过频数分析能够了解变量取值的状况,对把握数据的分布特征是很有帮助的。

    2、SPSS操作

    2.1 操作步骤

    对某公司30名职工的血糖含量(mmol/L)进行频数分析。

    在SPSS中输入数值或者导入数据文件后,点击分析-描述性统计-频率。

    6aa25abcd86f584932dcc6370d502c52.png

    将血糖含量选入变量框中,勾选显示频率表复选框,点击统计会出现右边的对话框,勾选需要的统计量。

    75b7ecf6ace3fe211d4bad037d191df9.png

    点击图表,选择想绘制的图表类型。

    5e813b0047ab0b931dbfffdfdce8b992.png

    2.2 输出结果

    887eac134c824c93181c5f315fbb97eb.png

    需要的统计量在表格中有所体现,并输出选择的图表类型,可以更清楚地观察数据特征和数据分布。在图的右上角有平均值、标准差和个案数作为参考。

    a90ee0d1442a3e0b327f22d206eacb84.png

    描述性统计分析

    1、作用

    描述性统计分析是基础的统计分析过程,可以获得很多统计量的特征。通过描述性统计分析可以计算变量的均值,标准差、标准误差等,并可将原始数据转化成Z分数。

    2、SPSS操作

    2.1 操作步骤

    对某公司的30名职工进行了频数分析后,接下来再对他们进行描述统计分析。点击分析-描述性统计-描述。

    e24e59cd441f960f072fa72356c28b92.png

    将血糖含量选入变量框中,勾选将标准化值另存为变量复选框;点击选项,出现右侧对话框,选择所需统计量。通过选项,我们可以获得很多统计量,比如均值、标准差、最小值等。

    f5e08b4a7335e7a701c15028ba997109.png

    2.2 输出结果

    54b80917bb1cc65c9760305a96598006.png

    在输出的描述统计表中,可以看出变量的各统计量的值。案例的个案数为30,最小值为3.9,最大值为6.1,均值为5.087,标准差为0.6101,方差为0.372。

    我们举个例子看一下描述性分析在文献中怎么体现的:

    a4bc65b1387cd86de8b72591b865749e.png

    文中选取了275名患者,其年龄在38-75岁之间,通过分析发现他们年龄的平均值为56.72,标准差为12.75,这样我们就能很好地了解患者的整体年龄特征。

    除了上述我们在描述性统计分析中经常用到的统计量之外,我们还可以通过以下操作精确地把握变量的分布状况,了解数据的集中趋势、离散趋势、对称程度和陡峭程度。

    27608abd6d68afc3dbe18af6ca444d38.png

    在选项中点击表示后验分布特征中的“峰度”和“偏度”,点击继续,最后点击确定,即可得到以下结果。

    55ed0f3d1c9063f1b75374bd74342113.png

    偏度和峰度是用来判断服从正态分布的,偏度系数是描述分布偏离对称性程度的一个特征数。当分布左右对称时,偏度系数为0。当偏度系数大于0时,即重尾在右侧时,该分布为右偏。当偏度系数小于0时,即重尾在左侧时,该分布左偏。峰度系数用来描述其变量所有取值分布形态的陡峭程度。0为正态分布,大于0为陡峭,小于0为平坦。一般情况下,如果样本的偏度接近于0,而峰度接近于3,就可以判断总体的分布接近于正态分布变量类型。

    另外,打开原数据集会发现多了一列Z血糖含量,这是由原数据转换成的Z分数(由普通正态分布转换成标准正态分布),通过Z表可以获得正态分布曲线下的面积。

    参考链接:

    [1] 张世慧.自我管理行为对维持性血液透析患者自我感受负担的影响研究[J].中国卫生产业,2018,15(28):11-12+15.

    声明

    本文所用部分素材来源于网络

    如涉及版权问题,请联系小编删除

    原创内容,欢迎转载

    41ef74e704d44e14d3137360b956fade.png

    (σ゚∀゚)σ..:*☆哎哟不错哦!!

    57bfcc6ef4e72f2cc1e4a72b5a9d4b5d.gif
    展开全文
  • 在我们获得一些数据后,首先要做就是这些数据进行基本的统计分析,例如均值、中位数、方差等。SPSS中基本统计分析主要包括频数分析、描述统计分析、探索分析、列联表分析等。这节先来介绍前两种SPSS操作...

    在我们获得一些数据后,首先要做的就是对这些数据进行基本的统计分析,例如均值、中位数、方差等。SPSS中的基本统计分析主要包括频数分析、描述性统计分析、探索分析、列联表分析等。这节先来介绍前两种的SPSS操作过程。

    一、 频数分析

    1、目的

    通过频数分析能够了解变量取值的状况,对把握数据的分布特征是很有帮助的。

    2、SPSS操作

    2.1 操作步骤

    对某公司30名职工的血糖含量(mmol/L)进行频数分析。

    在SPSS中输入数值或者导入数据文件后,点击分析-描述性统计-频率。

    04d1030bbef6bdf7a0061528ab374bed.png

    将血糖含量选入变量框中,勾选显示频率表复选框,点击统计会出现右边的对话框,勾选需要的统计量。

    f53a603ecc16b68c17cb44712d852d45.png

    点击图表,选择想绘制的图表类型。

    3b6ba0820c136a408deae6de9a892a73.png

    2.2 输出结果

    6f6928c193c125f6a7b84a64573e5d97.png

    需要的统计量在表格中有所体现,并输出选择的图表类型,可以更清楚地观察数据特征和数据分布。在图的右上角有平均值、标准差和个案数作为参考。

    dc054afa68ad683e54f8222af1789da8.png

    二、描述性统计分析

    1、作用

    描述性统计分析是基础的统计分析过程,可以获得很多统计量的特征。通过描述性统计分析可以计算变量的均值,标准差、标准误差等,并可将原始数据转化成Z分数。

    2、SPSS操作

    2.1 操作步骤

    对某公司的30名职工进行了频数分析后,接下来再对他们进行描述统计分析。点击分析-描述性统计-描述。

    924f6f2fa6c6748adcc9fed635c94c5a.png

    将血糖含量选入变量框中,勾选将标准化值另存为变量复选框;点击选项,出现右侧对话框,选择所需统计量。通过选项,我们可以获得很多统计量,比如均值、标准差、最小值等。

    6489d01b2712d7665ce63d8b8787d58c.png

    2.2 输出结果

    846135d0f6269c44532e4afb621a35cd.png

    在输出的描述统计表中,可以看出变量的各统计量的值。案例的个案数为30,最小值为3.9,最大值为6.1,均值为5.087,标准差为0.6101,方差为0.372。

    我们举个例子看一下描述性分析在文献中怎么体现的:

    04c674dfe3eb9f3cf1675d1ed39aac48.png

    文中选取了275名患者,其年龄在38-75岁之间,通过分析发现他们年龄的平均值为56.72,标准差为12.75,这样我们就能很好地了解患者的整体年龄特征。

    除了上述我们在描述性统计分析中经常用到的统计量之外,我们还可以通过以下操作精确地把握变量的分布状况,了解数据的集中趋势、离散趋势、对称程度和陡峭程度。

    71966ee82f8c4e494f62473feb7c97bf.png

    在选项中点击表示后验分布特征中的“峰度”和“偏度”,点击继续,最后点击确定,即可得到以下结果。

    b9d827c1c142b8a39708a9f897cedbf7.png

    偏度和峰度是用来判断服从正态分布的,偏度系数是描述分布偏离对称性程度的一个特征数。当分布左右对称时,偏度系数为0。当偏度系数大于0时,即重尾在右侧时,该分布为右偏。当偏度系数小于0时,即重尾在左侧时,该分布左偏。峰度系数用来描述其变量所有取值分布形态的陡峭程度。0为正态分布,大于0为陡峭,小于0为平坦。一般情况下,如果样本的偏度接近于0,而峰度接近于3,就可以判断总体的分布接近于正态分布变量类型。

    另外,打开原数据集会发现多了一列Z血糖含量,这是由原数据转换成的Z分数(由普通正态分布转换成标准正态分布),通过Z表可以获得正态分布曲线下的面积。#清风计划#

    参考链接:

    [1] 张世慧.自我管理行为对维持性血液透析患者自我感受负担的影响研究[J].中国卫生产业,2018,15(28):11-12+15.

    478cf3e3722221424f2c66d61d6c9b4a.gif
    展开全文
  • 练习2教你创建表面之前如何对数据进行检查。数据检查的目的是为了找出数据中那些离群值并且发现数据中存在趋势。 练习3你将创建第二个表面,这个表面更多地考虑了练习2中数据分析发现空间关系,并且对练习1中...
  • 单变量分析的目的是,通过对数据的整理、加工、组织和展示,并计算反应数据集中趋势和离散程度指标,对变量分布特征和规律进行刻画和描述。用最简单概括形式反映出大量数据资料所容纳基本信息。 主要分为...


    单变量描述性统计指标

    单变量分析的目的是,通过对数据的整理、加工、组织和展示,并计算反应数据的集中趋势和离散程度的指标,对变量分布的特征和规律进行刻画和描述。用最简单的概括形式反映出大量数据资料所容纳的基本信息。
    主要分为三个方面:
    1、确定频率分布和频数分布
    2、集中趋势分析,就是用一个代表值或典型值对一组数据的一般水平进行反映,或是对这组数据向这个代表值或典型值集中的情况进行反映。由于集中趋势分析对大量数据的共性进行了科学抽象,能够对被研究对象在具体条件下的一般水平进行说明,因而在单变量描述统计中的应用非常广泛。
    3、离散趋势分析是指用一个特别的数值将一组数据相互之间的离散程度反映出来。

    最大值(max):一组变量中最大的一个值。
    最小值(min):一组变量中最小的一个值。

    集中趋势

    均值
    1、算术平均数(arithmetic mean):一组数据中所有数据之和再除以数据的个数。它是反映数据集中趋势的一项指标。把n个数的总和除以n,所得的商叫做这n个数的算数平均数。
    x1+x2++xnn\frac{x_{1} + x_{2} +\cdots+x_{n}}{n}

    2、几何平均数(geometric mean):n个数连乘积的n次方根。
    x1+x2++xnn\sqrt[n]{x_{1} + x_{2}+\cdots+x_{n}}

    3、调和平均数(harmonic mean):主要用来解决在无法掌握总体单位数(频数)的情况下,只有每组的变量值和相应的标志总量,而需要求得平均数的情况下使用的一种数据方法。
    n1x1+1x2++1xn\frac{n}{\frac{1}{x_{1}}+\frac{1}{x_{2}}+\cdots+\frac{1}{x_{n}}}

    4、加权平均数(weighted average):不同比重数据的平均数。
    ω1x1+ω2x2++ωnxnω1+ω2++ωn\frac{\omega_{1}x_{1}+\omega_{2}x_{2}+\cdots+\omega_{n}x_{n}}{\omega_{1}+\omega_{2}+\cdots+\omega_{n}}

    众数(mode):一组数据中出现次数最多的数值。
    中位数(median):顺序排列的一组数据中居于中间位置的数。
    平均数、中位数和众数都是来刻画数据平均水平的统计量,它们各有特点。中位数刻画了一组数据的中等水平,众数刻画了一组数据中出现次数最多的情况。平均数能够利用所有数据的特征,是使得误差平方和达到最小的统计量,不足之处,正是因为它利用了所有数据的信息,平均数容易受极端数据的影响。
    分位数(quantile):一个随机变量的概率分布范围分为几个等份的数值点。常用的有中位数、四分位数、百分位数等。

    离散趋势

    方差(variance)、标准差(均方差standard deviation)
    方差用来计算每一个变量与总体均数之间的差异。标准差为方差的平方根。方差不仅仅表达了样本偏离均值的程度,更是揭示了样本内部彼此波动的程度。
    异众比率(variation ration)
    总体中非总数次数与总体全部次数之比,也就是非众数组的频数占总频数的比例。测度分类数据的离散程度。fi\sum{f_{i}} 为变量组的总频数,也就是总个数; fmf_{m}为众数组的频数。
    fifmfi\frac{\sum{f_{i}-f_{m}}}{\sum{f_{i}}}
    四分位差(quartile deviation)
    上四分位数与下四分位数之差。反映了中间50%数据的离散程度。不受两端各25%数值的影响,能对开口组(组距分组中,第一组和最后一组采取“xx以下”和“xx以上”来分组)数列的差异程度进行测度,可以衡量中位数代表性高低。缺点不能反映所有标志值的差异程度。
    极差(全距 range)
    最大值减去最小值,测定标志变动的最简单的指标。
    变异系数(离散系数 coefficient of variation)
    标准差与平均值之比。比起标准差不需要参照数据的平均值,是一个无量纲量。缺点是当平均值很小的时候会受很大的影响。

    延伸

    矩(moment)
    XX为随机变量,cc为常数,kk为正整数,则量E[(Xc)k]E[(X-c)^{k}]称为XX关于cc点的kk阶矩。c=0c=0时为原点矩,c=EXc=EX是为中心距。
    在数学和统计学中,矩是对变量分布和形态特点的一组度量。nn阶矩被定义为一变量的nn次方与其概率密度函数之积的积分。直接使用变量计算的矩被称为原始矩(raw moment),移除均值后计算的矩被称为中心矩(central moment)。变量的一阶原始矩等价于数学期望(expectation)、二至四阶中心矩被定义为方差(variance)偏度(skewness)峰度(kurtosis)

    展开全文
  • 导读当我们拿到一些数据,首先要做就是它们进行基本的描述统计分析,例如均值、中位数、方差等。SPSS中基本统计分析包括频数分析、描述性统计分析、探索分析、列联表分析等。这节先来介绍前两种SPSS操作过程...
  • 制定可持续发展目标旨在以健康及其相关领域为主要重点,应对世界的主要发展挑战。 在印度,基础普及教育,教育中的性别平等和全球经济增长领域取得了长足进步,但在改善与死亡率,发病率和各种导致贫困人口的环境...
  • ——主成分分析主成分分析在数据分析中应用不是很多,它是多元统计分析中用来分析数据的一种方法,是通过矩阵变换用一组数量更少特征来样本进行描述,从而可以降低数据的维度。主成分分析在数据分析中应用...
  • 数据仓库中数据并不要求与联机事务处理系统保持实时同步,因此数据抽取可以定时进行,但多个抽取操作执行时间、相互顺序、成败对数据仓库中信息有效性则至关重要。 <br> ⑵存储和管理:数据仓库真正...
  • 数据分析简介

    千次阅读 2018-06-05 20:49:09
    数据分析指是通过统计学方法采集来的数据进行整理和分析,并从中提取有用信息,从而得出结论过程。 某些学者认为,数据分析分为三类,入门级的描述性数据分析,其方法主要有对比、平均、交叉分析法。高级...
  • 主要目的是研究学生使用YouTube视频增强学习和自主学习感受。 这项研究受访者是同一学校中从初一到初二50名学生。 使用问卷收集数据,以识别学生使用YouTube和自主学习看法。 本研究在数据分析过程中使用...
  • 本研究使用百分比和均值在数据分析过程中对数据进行描述性分析。 研究结果表明,基于人口统计学因素,教师对LINUS管理中校长领导能力看法没有显着差异。 因此,马来西亚教育部,州教育局,地区教育局,教师和研究...
  • 数据分析概述

    2019-08-05 20:42:11
    数据分析是指用适当的统计分析方法对收集来大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结过程。 目的:把隐藏在一大批看似杂乱无章数据背后信息集中和提炼出来,总结出所研究...
  • 前期分析主要描述性分析,即对数据是什么类型、分布情况是什么样子有一个基本了解。 这个主要涉及数据统计及绘图。 本次主要是音频数据,所以首先我们需要来了解下都有哪些数据,数据量是多少等。 观察...
  • 通过统计测试对数据进行分析和比较。 结果:将近三分之一(32.0%)受访者在第三十年,男女比例为1:1.5。 多数(43.0%)患者来自中低收入家庭。 在所有年龄组中,大多数(60%)受访者对CKD了解都很低。 在...
  • 数据分析是指是通过统计学方法采集来的数据进行整理分析,从中提取有用信息并最终得出结论过程。某些学者认为,数据分析分为三类,入门级的描述性数据分析,其方法主要有对比、平均、交叉分析法。高级探索、...
  • 描述统计数据用于描述队列并汇总收集的数据。 卡方检验用于比较和确定学生研究期望与学校课程中的经验之间的差异。 这项调查的主要发现与其他研究一致,以查明入门级学生(一年级)与第二年和第三年学习经历的...
  • 动态监测的主要原因是高血压治疗的评估(51.6%)和诊断确诊(39.3%)。 动态监测结果表明,高血压患者占61.4%,血压正常者占37.7%。 36.1%的患者进行了治疗调整; 开始进行降压治疗的比例为24.6%,建议...
  • 背景:剖宫产是一项主要的产科外科手术,目的是在阴道分娩会因怀孕,分娩和分娩并发症而使母亲和婴儿处于危险中时,分娩活产婴儿。 尽管剖宫产是一种挽救生命程序,但它在术后有许多风险或问题。 这项研究的目的...
  • 绿色建筑全寿命周期风险因素的评估与分析:基于问卷调查的探索,秦旋,荆磊,研究的主要目的是对绿色建筑全寿命周期辨识出来的56项风险因素进行评估与分析。采用SPSS软件有效问卷数据进行描述统计分析和推论
  • 这项研究的主要目的是使用描述性分析方法来确定瘦六西格玛(LSS)做法联合国近东巴勒斯坦难民救济和工程处(近东救济工程处)保健中心理疗服务质量的影响方法。 根据分层随机抽样方法,使用问卷调查表收集数据,...
  • 该活动的主要目的是分享经验,促进研究整合以及昆虫学数据(主要来自农艺实验)进行统计分析的研究人员的培训。 :memo: 时间,地点和方式? 通过Google Meet在20年1月6日从08:00到12:00。 此事件的性质受到限制...
  • 本书对数据挖掘基本算法进行了系统介绍,每种算法不仅介绍了算法基本原理,而且配有大量例题以及源代码,并对源代码进行了分析,这种理论和实践相结合方式有助于读者较好地理解和掌握抽象数据挖掘算法。...
  • 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。与面板数据不同,面板数据侧重于同一时间点不同样本的数值,而时间序列侧重于同一统计指标在时间的不同点的数值。时间序列有两个重要指标,一个是资料...
  • 时间序列是将统一统计值按照时间发生的先后顺序来进行排列,时间序列分析的主要目的是根据已有数据对未来进行预测。一个稳定的时间序列中常常包含两个部分,那么就是:有规律的时间序列+噪声。所以,在以下的方法中...
  • 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。与面板数据不同,面板数据侧重于同一时间点不同样本的数值,而时间序列侧重于同一统计指标在时间的不同点的数值。时间序列有两个重要指标,一个是资料...
  • 其方法主要是通过协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与它们权值(即特征值)。PCA是最简单以特征量分析多元统计分布方法。其结果可以理解为数据方差做出解释:哪一个方向上...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 171
精华内容 68
关键字:

对数据进行描述统计的主要目的是