• 使用相关系数检验关系、使用线性回归、卡方检验

    十四、使用相关系数检验关系

        检验变量之间的关系而不是群体之间的差异; 只检验两个变量之间的关系;所要应用的合适的检验统计是相关系数的t检验。实例:婚姻质量和父母-子女关系水平--之间关系的检验。零假设,没有关系;研究假设,存在关系。显著水平设置为.05。

    import scipy.stats as stats
    #婚姻质量
    x=[76,81,78,76,76,78,76,78,98,88,76,66,44,67,65,59,87,77,79,85,68,76,77,98,99,98,87,67,78]  
    #父母-子女关系 水平
    y=[43,33,23,34,31,51,56,43,44,45,32,33,28,39,31,38,21,27,43,46,41,41,48,56,55,45,68,54,33]  
    r, p=stats.pearsonr(x,y)
    print r
    print p
    输出
    0.393418620974
    0.0347359313295
    计算得到 r=0.393 p=0.034,说明两个变量之间的关系是由于随机因素引起的可能性小于5%,因此认为两个变量之间的关系是显著的。

    十五、使用线性回归

    估计是以过去的结果估计未来结果的活动,比如用高中的平均成绩估计大学的平均成绩。要进行这样的估计就必须建立回归等式(regression equation),并建立回归线(regression line)。立回归线也称作最优拟合线(line of best fit)。用x表示高中平均成绩,用y表示大学成绩,这就是变量y对变量x的回归,即y依据x被估计。每一个具体的数据点和回归线的距离就是估计误差(error in prediction)。给定了回归线,就可以用回归线来估计任何值。回归线的一般公式:




    Python代码,分为三部分,1)调用stats.lintegress(x,y)得到斜率和截距,2)定义回归函数, 3)用np.linspace生成xdata, 然后用plt绘图。

    import numpy as np
    import matplotlib.pylab as plt
    from scipy import stats
    x = [3.5, 2.5, 4.0, 3.8, 2.8, 1.9, 3.2, 3.7, 2.7, 3.3]   #高中平均成绩
    y = [3.3, 2.2, 3.5, 2.7, 3.5, 2.0, 3.1, 3.4, 1.9, 3.7]   #大学平均成绩
    slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
    slope = round(slope,3)
    intercept = round(intercept,3)
    print slope, intercept
    
    def f(x, a, b):
        return a + b*x
    
    xdata = np.linspace(1, 5, 20)
    plt.grid(True)
    plt.xlabel('x axis')  
    plt.ylabel('y axis') 
    plt.text(2.5, 4.0, r'$y = ' + str(intercept) + ' + ' + str(slope) +'*x$', fontsize=18)
    plt.plot(xdata, f(xdata, intercept,slope), 'b', linewidth=1)
    plt.plot(x,y,'ro')
    plt.show()
    
    输出

    0.704 0.72

    十六、卡方和其他非参数检验

    参数检验假定所使用的数据集有确定的特征(总体分布已知),并且样本大可以代表总体,如果不满足上述假定 ,则需要使用非参数检验(Nonparametric tests)方法。卡方检验(chi square test)是常用的非参数检验之一。可以用于确定在频数分布中观察到的结果是否就是你随机预期的结果。如问卷调查中对教育券的支持情况,分为赞同、中立、反对三种选择。

    卡方值的计算



    然后查表得到p值。用scipy.stats.chisquare(f_obs, f_exp=None, ddof=0, axis=0)可以很方便地计算。

    python代码

    from scipy.stats import chisquare
    f_obs = [23, 17, 50]       #赞同、中立、反对
    f_exp = [30, 30, 30]
    chisq, p = chisquare(f_obs, f_exp)
    print chisq
    print p
    
    输出

    20.6
    3.36330951857e-05
    计算结果p值小于.000,这说明,这三个分类的频数相等时非常不可能的。

    后记

    《爱上统计学》书上基本的内容就学完了,书上介绍的多元方差分析、重复测量的方差分析等其他高级内容等遇到再学习吧。



    展开全文
  • 计算相关系数、信度和效度

    五、计算简单相关系数

    相关系数(correlation coefficient)是反映两个变量之间关系的量化指标。这个统计值得值域范围是-1到1。当关心的是一个变量发生变化时,另一个变量如何变化, 可以采用计算相关系数的办法。相关反映变量间关系的动态性质。如果变量变化方向相同,相关是正相关(positive correction);如果变量变化方向相反,相关是负相关(negative correlation)。简单皮尔逊积矩相关系数的计算公式:



    相关系数真正有意义的部分是测量一个变量与另一个共变的变量之间的距离。用python计算的示例,直接用scipy.stats.stats的pearsonr函数,也可以自己实现计算过程。 

    import scipy.stats.stats as stats
    x=[2,4,5,6,4,7,8,5,6,7]
    y=[3,2,6,5,3,6,5,4,4,5]
    r=stats.pearsonr(x,y)[0]
    print r
    输出

    0.69213308132

    一种简单直观的表示相关的方式是建立所谓的散点图(scatterplot),上述例子散点图。

    import matplotlib.pylab as plt
    x=[2,4,5,6,4,7,8,5,6,7]
    y=[3,2,6,5,3,6,5,4,4,5]
    plt.xlim(0,9)
    plt.ylim(1,7)
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.plot(x,y,'ro')
    plt.show()
    
    输出

     不是所有的相关都是线性相关(linear correlation),比如年龄和记忆力之间的相关,少年时期,很强的正相关;青年和中年时期,没什么变化;老年时期,记忆力开始衰退。

    如果有两个以上的变量,可以用相关矩阵来说明相关。如下例,矩阵中有4个变量,对应每一对变量都有一个系数,这个矩阵中有6个相关系数。

      收入 教育 态度 选举
    输入 1.000 0.574 -0.080 -0.291
    教育 0.574 1.000 -0.149 -0.199
    态度 -0.080 -0.149 1.000 -0.169
    选举 -0.291 -0.199 -0.169 1.000
    决定系数:相关系数的平方。决定系数(coefficient of determination)的计算是为了确定一个变量的方差可以被另一个变量的方差解释的程度。 例如平均成绩和学习时间之间的相关系数是0.7,那么决定系数是0.49,即平均成绩方差的49%可以被学习时间的方差解释。不能解释的方差系数就是不相关系数(也叫做非决定系数)。

    六、理解信度和效度

    依赖变量(dependent variable)

    独立变量(independentvariable)

    测量尺度(scales of measurement)的四种类型:定类、定序、定距和定比。

    定类测量水平(nominal level of measurement),如性别(男和女)、政党等。

    定序测量水平(ordinal level of measurement),表示次序,如文化程度用大学、中学、小学区分。

    定距测量水平(interval level of measurement),除了能表示次序外,定距尺度的一个显著特征是尺度上的每个间距都相等。

    定比测量水平(ratio level of measurement),有固定起点的定距测量,如绝对零度。

    1. 信度

    信度(reliability),指一个测试或者你使用的其他任何测量工具对事物的测量可以保持一致性。观察值=真实值+误差值,误差越小越可信。信度的不同类型,1)再测信度(一个测试在不同时间是否可信,两次测试值之间的相关系数),2)复本信度(一个测试的几个复本是否可信或者是否是等价,两个复本之间的相关系数),3)内在一致性信度(每个项目的得分与总得分之间的相关系数), 4) 评分者信度(对一个观察结果的评价是否一致性,检验不同评分者一致结论的百分比)

    实例1,再测信度,两次测试的得分如下表,计算相关系数。

    测试者编号 时期1得分 时期2得分
    1 54 56
    2 67 77
    3 67 87
    4 83 89
    5 87 89
    6 89 90
    7 84 87
    8 90 92
    9 98 99
    10 65 76

    import scipy.stats.stats as stats
    s1=[54,67,67,83,87,89,84,90,98,65]
    s2=[56,77,87,89,89,90,87,92,99,76]
    r=stats.pearsonr(s1,s2)[0]
    print r
    
    0.900579196775

    实例2,复本信度,自主记忆测试的复本A和复本B的得分(相隔了两天)

    编号 复本A得分 复本B得分
    1 4 5
    2 5 6
    3 3 5
    4 6 6
    5 7 7
    6 5 6
    7 6 7
    8 4 8
    9 4 7
    10 3 7
    a=[4,5,3,6,7,5,6,4,3,3]
    b=[5,6,5,6,7,6,7,8,7,7]
    r=stats.pearsonr(a,b)[0]
    print r
    
    0.128697890418

    实例3 ,一致性信度,计算克隆巴赫系数(Cronbach's),计算公式为(实际上计算单项得分与总分直接的相关系数,并与每个单项得分的变异性比较)


    10个被测者,5个项目的得分表

    编号 项目1 项目2 项目3 项目4 项目5
    1 3 5 1 4 1
    2 4 4 3 5 3
    3 3 4 4 4 4
    4 3 3 5 2 1
    5 3 4 5 4 3
    6 4 5 5 3 2
    7 2 5 5 3 4
    8 3 4 4 2 4
    9 3 5 4 4 3
    10 3 3 2 3 2

    python代码,引入了pandas包,应用pandas的DataFrame计算就变得简单了,其中sum()是求和,var()是求方差

    import numpy as np
    import pandas as pd 
    import scipy.stats.stats as stats
    import math
    score=[
           [3,5,1,4,1],
           [4,4,3,5,3],
           [3,4,4,4,4],
           [3,3,5,2,1],
           [3,4,5,4,3],
           [4,5,5,3,2],
           [2,5,5,3,4],
           [3,4,4,2,4],
           [3,5,4,4,3],
           [3,3,2,3,2]]
    df = pd.DataFrame(score)
    total_row = df.sum(axis=1)
    #print total_row
    sy = total_row.var()
    print sy 
    var_column =  df.var()
    si = var_column.sum()
    print si 
    r = (5.0/4.0)*((sy-si)/sy)
    print round(r,2)
    输出

    6.4
    5.17777777778
    0.24

    2. 效度

    效度(validity),就是表示工具能够测量要测量的内容的性质/程度。效度类型,1)内容效度(一个特定主题的项目样本是否能够反映项目总体),2)准则效度(测试成绩是否和其他标准系统相关),3)建构效度(测试是否测量一些基本的心理结构,如参与身体接触和危险运动的男性的侵略性TEST测试的得分比较高)。







    展开全文
  • 来源:知乎作者:阿平一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中...

    来源:知乎

    作者:阿平

    一、描述统计

    描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。

    集中趋势分析

    集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。例如被试的平均成绩多少?是正偏分布还是负偏分布?

    离中趋势分析

    离中趋势分析主要靠全距、四分差、平均差、方差(协方差:用来度量两个随机变量关系的统计量)、标准差等统计指标来研究数据的离中趋势。例如,我们想知道两个教学班的语文成绩中,哪个班级内的成绩分布更分散,就可以用两个班级的四分差或百分点来比较。

    相关分析

    相关分析探讨数据之间是否具有统计学上的关联性。这种关系既包括两个数据之间的单一相关关系——如年龄与个人领域空间之间的关系,也包括多个数据之间的多重相关关系——如年龄、抑郁症发生率、个人领域空间之间的关系;既包括A大B就大(小),A小B就小(大)的直线相关关系,也可以是复杂相关关系(A=Y-B*X);既可以是A、B变量同时增大这种正相关关系,也可以是A变量增大时B变量减小这种负相关,还包括两变量共同变化的紧密程度——即相关系数。

    实际上,相关关系唯一不研究的数据关系,就是数据协同变化的内在根据——即因果关系。获得相关系数有什么用呢?简而言之,有了相关系数,就可以根据回归方程,进行A变量到B变量的估算,这就是所谓的回归分析,因此,相关分析是一种完整的统计研究方法,它贯穿于提出假设,数据研究,数据分析,数据研究的始终。

    例如,我们想知道对监狱情景进行什么改造,可以降低囚徒的暴力倾向。我们就需要将不同的囚舍颜色基调、囚舍绿化程度、囚室人口密度、放风时间、探视时间进行排列组合,然后让每个囚室一种实验处理,然后用因素分析法找出与囚徒暴力倾向的相关系数最高的因素。假定这一因素为囚室人口密度,我们又要将被试随机分入不同人口密度的十几个囚室中生活,继而得到人口密度和暴力倾向两组变量(即我们讨论过的A、B两列变量)。然后,我们将人口密度排入X轴,将暴力倾向分排入Y轴,获得了一个很有价值的图表,当某典狱长想知道,某囚舍扩建到N人/间囚室,暴力倾向能降低多少。我们可以当前人口密度和改建后人口密度带入相应的回归方程,算出扩建前的预期暴力倾向和扩建后的预期暴力倾向,两数据之差即典狱长想知道的结果。

    推论统计

    推论统计是统计学乃至于心理统计学中较为年轻的一部分内容。它以统计结果为依据,来证明或推翻某个命题。具体来说,就是通过分析样本与样本分布的差异,来估算样本与总体、同一样本的前后测成绩差异,样本与样本的成绩差距、总体与总体的成绩差距是否具有显著性差异。例如,我们想研究教育背景是否会影响人的智力测验成绩。可以找100名24岁大学毕业生和100名24岁初中毕业生。采集他们的一些智力测验成绩。用推论统计方法进行数据处理,最后会得出类似这样儿的结论:“研究发现,大学毕业生组的成绩显著高于初中毕业生组的成绩,二者在0.01水平上具有显著性差异,说明大学毕业生的一些智力测验成绩优于中学毕业生组。”

    正态性检验

    很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。

    常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。

    二、假设检验

    参数检验

    参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验。

    1)U验 :使用条件:当样本含量n较大时,样本值符合正态分布

    2)T检验:使用条件:当样本含量n较小时,样本值符合正态分布

    A 单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别;

    B 配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似;

    C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。

    非参数检验

    非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。

    适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。

    A 虽然是连续数据,但总体分布形态未知或者非正态;

    B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下;

    主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。

    三、信度分析

    信度(Reliability)即可靠性,它是指采用同样的方法对同一对象重复测量时所得结果的一致性程度。信度指标多以相关系数表示,大致可分为三类:稳定系数(跨时间的一致性),等值系数(跨形式的一致性)和内在一致性系数(跨项目的一致性)。信度分析的方法主要有以下四种:重测信度法、复本信度法、折半信度法、α信度系数法。

    方法

    1)重测信度法编辑:这一方法是用同样的问卷对同一组被调查者间隔一定时间重复施测,计算两次施测结果的相关系数。显然,重测信度属于稳定系数。重测信度法特别适用于事实式问卷,如性别、出生年月等在两次施测中不应有任何差异,大多数被调查者的兴趣、爱好、习惯等在短时间内也不会有十分明显的变化。如果没有突发事件导致被调查者的态度、意见突变,这种方法也适用于态度、意见式问卷。由于重测信度法需要对同一样本试测两次,被调查者容易受到各种事件、活动和他人的影响,而且间隔时间长短也有一定限制,因此在实施中有一定困难。

    2)复本信度法编辑:让同一组被调查者一次填答两份问卷复本,计算两个复本的相关系数。复本信度属于等值系数。复本信度法要求两个复本除表述方式不同外,在内容、格式、难度和对应题项的提问方向等方面要完全一致,而在实际调查中,很难使调查问卷达到这种要求,因此采用这种方法者较少。

    3)折半信度法编辑:折半信度法是将调查项目分为两半,计算两半得分的相关系数,进而估计整个量表的信度。折半信度属于内在一致性系数,测量的是两半题项得分间的一致性。这种方法一般不适用于事实式问卷(如年龄与性别无法相比),常用于态度、意见式问卷的信度分析。在问卷调查中,态度测量最常见的形式是5级李克特(Likert)量表(李克特量表(Likert scale)是属评分加总式量表最常用的一种,属同一构念的这些项目是用加总方式来计分,单独或个别项目是无意义的。它是由美国社会心理学家李克特于1932年在原有的总加量表基础上改进而成的。该量表由一组陈述组成,每一陈述有"非常同意"、"同意"、"不一定"、"不同意"、"非常不同意"五种回答,分别记为5、4、3、2、1,每个被调查者的态度总分就是他对各道题的回答所得分数的加总,这一总分可说明他的态度强弱或他在这一量表上的不同状态。)。进行折半信度分析时,如果量表中含有反意题项,应先将反意题项的得分作逆向处理,以保证各题项得分方向的一致性,然后将全部题项按奇偶或前后分为尽可能相等的两半,计算二者的相关系数(rhh,即半个量表的信度系数),最后用斯皮尔曼-布朗(Spearman-Brown)公式:求出整个量表的信度系数(ru)。

    4)α信度系数法:α信度系数是目前最常用的信度系数,其公式为:

    α=(k/(k-1))*(1-(∑Si^2)/ST^2)

    其中,K为量表中题项的总数, Si^2为第i题得分的题内方差, ST^2为全部题项总得分的方差。从公式中可以看出,α系数评价的是量表中各题项得分间的一致性,属于内在一致性系数。这种方法适用于态度、意见式问卷(量表)的信度分析。

    总量表的信度系数最好在0.8以上,0.7-0.8之间可以接受;分量表的信度系数最好在0.7以上,0.6-0.7还可以接受。Cronbach 's alpha系数如果在0.6以下就要考虑重新编问卷。用于检査测量的可信度,例如调查问卷的真实性。

    分类

    1)外在信度:不同时间测量时量表的一致性程度,常用方法重测信度

    2)内在信度:每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。

    四、列联表分析

    列联表是观测数据按两个或更多属性(定性变量)分类时所列出的频数表。

    简介:

    若总体中的个体可按两个属性A、B分类,A有r个等级A1,A2,…,Ar,B有c个等级B1,B2,…,Bc,从总体中抽取大小为n的样本,设其中有nij个个体的属性属于等级Ai和Bj,nij称为频数,将r×c个nij排列为一个r行c列的二维列联表,简称r×c表。若所考虑的属性多于两个,也可按类似的方式作出列联表,称为多维列联表。

    列联表又称交互分类表,所谓交互分类,是指同时依据两个变量的值,将所研究的个案分类。交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系。用于分析离散变量或定型变量之间是否存在相关。

    列联表分析的基本问题是,判明所考察的各属性之间有无关联,即是否独立。如在前例中,问题是:一个人是否色盲与其性别是否有关?在r×с表中,若以pi、pj和pij分别表示总体中的个体属于等级Ai,属于等级Bj和同时属于Ai、Bj的概率(pi,pj称边缘概率,pij称格概率),“A、B两属性无关联”的假设可以表述为H0:pij=pi·pj,(i=1,2,…,r;j=1,2,…,с),未知参数pij、pi、pj的最大似然估计(见点估计)分别为行和及列和(统称边缘和)

    为样本大小。根据K.皮尔森(1904)的拟合优度检验或似然比检验(见假设检验),当h0成立,且一切pi>0和pj>0时,统计量的渐近分布是自由度为(r-1)(с-1) 的Ⅹ分布,式中Eij=(ni·nj)/n称为期望频数。当n足够大,且表中各格的Eij都不太小时,可以据此对h0作检验:若Ⅹ值足够大,就拒绝假设h0,即认为A与B有关联。在前面的色觉问题中,曾按此检验,判定出性别与色觉之间存在某种关联。

    需要注意:

    若样本大小n不很大,则上述基于渐近分布的方法就不适用。对此,在四格表情形,R.A.费希尔(1935)提出了一种适用于所有n的精确检验法。其思想是在固定各边缘和的条件下,根据超几何分布(见概率分布),可以计算观测频数出现任意一种特定排列的条件概率。把实际出现的观测频数排列,以及比它呈现更多关联迹象的所有可能排列的条件概率都算出来并相加,若所得结果小于给定的显著性水平,则判定所考虑的两个属性存在关联,从而拒绝h0。

    对于二维表,可进行卡方检验,对于三维表,可作Mentel-Hanszel分层分析。

    列联表分析还包括配对计数资料的卡方检验、行列均为顺序变量的相关检验。

    五、相关分析

    研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。

    1)单相关:两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量;

    2)复相关 :三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以上的自变量和因变量相关;

    3)偏相关:在某一现象与多种现象相关的场合,当假定其他变量不变时,其中两个变量之间的相关关系称为偏相关。

    六、方差分析

    使用条件:各样本须是相互独立的随机样本;各样本来自正态分布总体;各总体方差相等。

    分类

    1)单因素方差分析:一项试验只有一个影响因素,或者存在多个影响因素时,只分析一个因素与响应变量的关系

    2)多因素有交互方差分析:一顼实验有多个影响因素,分析多个影响因素与响应变量的关系,同时考虑多个影响因素之间的关系

    3)多因素无交互方差分析:分析多个影响因素与响应变量的关系,但是影响因素之间没有影响关系或忽略影响关系

    4)协方差分析:传统的方差分析存在明显的弊端,无法控制分析中存在的某些随机因素,使之影响了分析结果的准确度。协方差分析主要是在排除了协变量的影响后再对修正后的主效应进行方差分析,是将线性回归与方差分析结合起来的一种分析方法,

    七、回归分析

    一元线性回归分析:

    只有一个自变量X与因变量Y有关,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布。

    多元线性回归分析:

    使用条件:分析多个自变量与因变量Y的关系,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布 。

    1)变呈筛选方式

    选择最优回归方程的变里筛选法包括全横型法(CP法)、逐步回归法,向前引入法和向后剔除法

    2)横型诊断方法

    A 残差检验:观测值与估计值的差值要艰从正态分布

    B 强影响点判断:寻找方式一般分为标准误差法、Mahalanobis距离法

    C 共线性诊断:

    • 诊断方式:容忍度、方差扩大因子法(又称膨胀系数VIF)、特征根判定法、条件指针CI、方差比例

    • 处理方法:增加样本容量或选取另外的回归如主成分回归、岭回归等

    Logistic回归分析

    线性回归模型要求因变量是连续的正态分布变里,且自变量和因变量呈线性关系,而Logistic回归模型对因变量的分布没有要求,一般用于因变量是离散时的情况

    分类:

    Logistic回归模型有条件与非条件之分,条件Logistic回归模型和非条件Logistic回归模型的区别在于参数的估计是否用到了条件概率。

    其他回归方法

    非线性回归、有序回归、Probit回归、加权回归等

    八、聚类分析

    聚类与分类的不同在于,聚类所要求划分的类是未知的。

    聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    定义

    依据研究对象(样品或指标)的特征,对其进行分类的方法,减少研究对象的数目。

    各类事物缺乏可靠的历史资料,无法确定共有多少类别,目的是将性质相近事物归入一类。各指标之间具有一定的相关关系。

    变量类型:定类变量、定量(离散和连续)变量

    样本个体或指标变量按其具有的特性进行分类,寻找合理的度量事物相似性的统计量。

    性质分类

    Q型聚类分析:对样本进行分类处理,又称样本聚类分析使用距离系数作为统计量衡量相似度,如欧式距离、极端距离、绝对距离等。

    R型聚类分析:对指标进行分类处理,又称指标聚类分析使用相似系数作为统计量衡量相似度,相关系数、列联系数等。

    方法分类

    1)系统聚类法:适用于小样本的样本聚类或指标聚类,一般用系统聚类法来聚类指标,又称分层聚类。

    2)逐步聚类法:适用于大样本的样本聚类。

    3)其他聚类法:两步聚类、K均值聚类等。

    九、判别分析

    判别分析

    根据已掌握的一批分类明确的样品建立判别函数,使产生错判的事例最少,进而对给定的一个新样品,判断它来自哪个总体。

    与聚类分析区别

    1)聚类分析可以对样本逬行分类,也可以对指标进行分类;而判别分析只能对样本。

    2)聚类分析事先不知道事物的类别,也不知道分几类;而判别分析必须事先知道事物的类别,也知道分几类。

    3)聚类分析不需要分类的历史资料,而直接对样本进行分类;而判别分析需要分类历史资料去建立判别函数,然后才能对样本进行分类。

    进行分类

    1)Fisher判别分析法

    以距离为判别准则来分类,即样本与哪个类的距离最短就分到哪一类,适用于两类判别;

    以概率为判别准则来分类,即样本属于哪一类的概率最大就分到哪一类,适用于多类判别。

    2)BAYES判别分析法

    BAYES判别分析法比FISHER判别分析法更加完善和先进,它不仅能解决多类判别分析,而且分析时考虑了数据的分布状态,所以一般较多使用;

    十、主成分分析

    主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

    主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

    原理

    在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。

    设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

    缺点

    1、在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。

    2、主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

    十一、因子分析

    一种旨在寻找隐藏在多变量数据中、无法直接观察到却影响或支配可测变量的潜在因子、并估计潜在因子对可测变量的影响程度以及潜在因子之间的相关性的一种多元统计分析方法。

    与主成分分析比较:

    相同:都能够起到治理多个原始变量内在结构关系的作用

    不同:主成分分析重在综合原始变适的信息.而因子分析重在解释原始变量间的关系,是比主成分分析更深入的一种多元统计方法

    用途:

    1)减少分析变量个数

    2)通过对变量间相关关系探测,将原始变量进行分类

    十二、时间序列分析

    动态数据处理的统计方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题;时间序列通常由4种要素组成:趋势、季节变动、循环波动和不规则波动。

    主要方法:移动平均滤波与指数平滑法、ARIMA横型、量ARIMA横型、ARIMAX模型、向呈自回归横型、ARCH族模型

    时间序列是指同一变量按事件发生的先后顺序排列起来的一组观察值或记录值。构成时间序列的要素有两个:

    其一是时间;

    其二是与时间相对应的变量水平。

    实际数据的时间序列能够展示研究对象在一定时期内的发展变化趋势与规律,因而可以从时间序列中找出变量变化的特征、趋势以及发展规律,从而对变量的未来变化进行有效地预测。

    时间序列的变动形态一般分为四种:长期趋势变动,季节变动,循环变动,不规则变动。

    时间序列预测法的应用

    系统描述:根据对系统进行观测得到的时间序列数据,用曲线拟合方法对系统进行客观的描述;

    系统分析:当观测值取自两个以上变量时,可用一个时间序列中的变化去说明另一个时间序列中的变化,从而深入了解给定时间序列产生的机理;

    预测未来:一般用ARMA模型拟合时间序列,预测该时间序列未来值;

    决策和控制:根据时间序列模型可调整输入变量使系统发展过程保持在目标值上,即预测到过程要偏离目标时便可进行必要的控制。

    特点

    假定事物的过去趋势会延伸到未来;

    预测所依据的数据具有不规则性;

    撇开了市场发展之间的因果关系。

    ① 时间序列分析预测法是根据市场过去的变化趋势预测未来的发展,它的前提是假定事物的过去会同样延续到未来。事物的现实是历史发展的结果,而事物的未来又是现实的延伸,事物的过去和未来是有联系的。市场预测的时间序列分析法,正是根据客观事物发展的这种连续规律性,运用过去的历史数据,通过统计分析,进一步推测市场未来的发展趋势。市场预测中,事物的过去会同样延续到未来,其意思是说,市场未来不会发生突然跳跃式变化,而是渐进变化的。

    时间序列分析预测法的哲学依据,是唯物辩证法中的基本观点,即认为一切事物都是发展变化的,事物的发展变化在时间上具有连续性,市场现象也是这样。市场现象过去和现在的发展变化规律和发展水平,会影响到市场现象未来的发展变化规律和规模水平;市场现象未来的变化规律和水平,是市场现象过去和现在变化规律和发展水平的结果。

    需要指出,由于事物的发展不仅有连续性的特点,而且又是复杂多样的。因此,在应用时间序列分析法进行市场预测时应注意市场现象未来发展变化规律和发展水平,不一定与其历史和现在的发展变化规律完全一致。随着市场现象的发展,它还会出现一些新的特点。因此,在时间序列分析预测中,决不能机械地按市场现象过去和现在的规律向外延伸。必须要研究分析市场现象变化的新特点,新表现,并且将这些新特点和新表现充分考虑在预测值内。这样才能对市场现象做出既延续其历史变化规律,又符合其现实表现的可靠的预测结果。

    ②时间序列分析预测法突出了时间因素在预测中的作用,暂不考虑外界具体因素的影响。时间序列在时间序列分析预测法处于核心位置,没有时间序列,就没有这一方法的存在。虽然,预测对象的发展变化是受很多因素影响的。但是,运用时间序列分析进行量的预测,实际上将所有的影响因素归结到时间这一因素上,只承认所有影响因素的综合作用,并在未来对预测对象仍然起作用,并未去分析探讨预测对象和影响因素之间的因果关系。因此,为了求得能反映市场未来发展变化的精确预测值,在运用时间序列分析法进行预测时,必须将量的分析方法和质的分析方法结合起来,从质的方面充分研究各种因素与市场的关系,在充分分析研究影响市场变化的各种因素的基础上确定预测值。

    需要指出的是,时间序列预测法因突出时间序列暂不考虑外界因素影响,因而存在着预测误差的缺陷,当遇到外界发生较大变化,往往会有较大偏差,时间序列预测法对于中短期预测的效果要比长期预测的效果好。因为客观事物,尤其是经济现象,在一个较长时间内发生外界因素变化的可能性加大,它们对市场经济现象必定要产生重大影响。如果出现这种情况,进行预测时,只考虑时间因素不考虑外界因素对预测对象的影响,其预测结果就会与实际状况严重不符。

    十三、生存分析

    用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法

    包含内容

    1)描述生存过程,即研究生存时间的分布规律

    2)比较生存过程,即研究两组或多组生存时间的分布规律,并进行比较

    3)分析危险因素,即研究危险因素对生存过程的影响

    4)建立数学模型,即将生存时间与相关危险因素的依存关系用一个数学式子表示出来。

    方法

    1)统计描述:包括求生存时间的分位数、中数生存期、平均数、生存函数的估计、判断生存时间的图示法,不对所分析的数据作出任何统计推断结论

    2)非参数检验:检验分组变量各水平所对应的生存曲线是否一致,对生存时间的分布没有要求,并且检验危险因素对生存时间的影响。

    A 乘积极限法(PL法)

    B 寿命表法(LT法)

    3)半参数横型回归分析:在特定的假设之下,建立生存时间随多个危险因素变化的回归方程,这种方法的代表是Cox比例风险回归分析法

    4)参数模型回归分析:已知生存时间服从特定的参数横型时,拟合相应的参数模型,更准确地分析确定变量之间的变化规律

    十四、典型相关分析

    相关分析一般分析两个变量之间的关系,而典型相关分析是分析两组变量(如3个学术能力指标与5个在校成绩表现指标)之间相关性的一种统计分析方法。

    典型相关分析的基本思想和主成分分析的基本思想相似,它将一组变量与另一组变量之间单变量的多重线性相关性研究转化为对少数几对综合变量之间的简单线性相关性的研究,并且这少数几对变量所包含的线性相关性的信息几乎覆盖了原变量组所包含的全部相应信息。

    十五、R0C分析

    R0C曲线是根据一系列不同的二分类方式(分界值或决定阈).以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。

    用途:

    1、R0C曲线能很容易地査出任意界限值时的对疾病的识别能力

    用途;

    2、选择最佳的诊断界限值。R0C曲线越靠近左上角,试验的准确性就越高;

    3、两种或两种以上不同诊断试验对疾病识别能力的比较,一股用R0C曲线下面积反映诊断系统的准确性。

    十六、其他分析方法

    多重响应分析、距离分析、项目分析、对应分析、决策树分析、神经网络、系统方程、蒙特卡洛模拟等。

    决策树分析与随机森林:尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点。(可以理解成三个臭皮匠顶过诸葛亮)

    决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

    分类树(决策树)是一种十分常用的分类方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。

    优点:决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。

    对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

    易于通过静态测试来对模型进行评测,可以测定模型可信度;如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。

    缺点:对连续性的字段比较难预测;对有时间顺序的数据,需要很多预处理的工作;当类别太多时,错误可能就会增加的比较快;一般的算法分类的时候,只是根据一个字段来分类。

    End.

    零基础学 Python,请往看下嘛

     只需7天时间,跨进Python编程大门,已有3800+加入

    【基础】0基础入门python,24小时有人快速解答问题;
    【提高】40多个项目实战,老手可以从真实场景中学习python;
    【直播】不定期直播项目案例讲解,手把手教你如何分析项目;
    【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。
    【人脉】收获一群志同道合的朋友,并且都是python从业者
    【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子。

    【赠予】价值109元 0基础入门在线课程,免费送给圈友们,供巩固

    展开全文
  • 还是三大统计软件Spass、Stata、SAS,这些可视化的软件本身就是编程的一个体现,它们在一定程度上降低了我们使用数学的门槛,但另一方面它们背后的功能是可以被编程取代的,而Python在数学和数据科学领域的流行,也...

    无论是三大数学软件Matlab(通信、控制等工程例外)、Maple、Mathematica,还是三大统计软件Spass、Stata、SAS,这些可视化的软件本身就是编程的一个体现,它们在一定程度上降低了我们使用数学的门槛,但另一方面它们背后的功能是可以被编程取代的,而Python在数学和数据科学领域的流行,也是逐渐取代这些软件的一个过程。

    在职业方面,精算师、金融工程、商业分析、数据分析师、数据挖掘、数据建模、量化工程师、算法工程师、数据产品经理、数据运营、数字营销、大数据、游戏开发、人工智能等诸多职业岗位都对数学有要求,但是我们会发现这些岗位对数学的应用都需要使用到数学软件以及需要与编程结合,可以说我们要应用数学,天然就应该与编程有机结合起来。而在数学、数据领域,由于Python编程语言的胶水性质以及极为丰富的第三方库,Python渐已成为学数学最值得推荐的编程语言。

    用Python学数学技术专栏就尝试如何将数学与编程有机结合起来,让数学的学习回归到基础概念的理解和实际应用之中去。(当然专栏的目的主要是为数据科学和机器学习等的基础服务)

    为什么数学那么难学且无用?

    所谓将数学与编程有机结合,一是在数学学习的方向上就以数学的实际应用为重心;二是数学在符号上、图形上等的表现形式应该与编程语言无缝结合。

    在我们学生时代的数学教学存在着诸多弊端:

    • 一是以往的教育过于强调具体的计算能力,很多数学学得好的,不过是解题高手,一些极其复杂的微分方程、矩阵等还停留在笔算技巧和笔算能力上,而且对数学的应用需要死记硬背大量复杂的数学公式,这无疑加大了数学学习的难度,也偏离了数学原本的方向;在专栏的代数符号运算里面,我们就提到过可以借助于Sympy这种CAS工具来进行复杂的数学运算,从此数学公式的记忆与笔算不再是学习的重点;
    • 二是真正好的数学教学是应该要复杂的数学理论知识简化,国内大学教程相比于国外存在很多不足之处,所以接下来我们也会推荐一些比较好的数学教程。很多人数学学不好、学不会在很大程度上也与教程对数学概念的讲解有一定的关系;
    • 三是结合Python编程是可以对一些数学的问题进行建模的,通过编程来进行数学建模在前面我们提到的那么多职业,他们对数学的要求基础大多是微积分、概率统计、线性代数相关的知识,只是在以往的学习里,我们看不到数学是如何应用到这些职业里的; 四是结合Python以及一些数学软件,我们可以做出一些动态图形,加深大家对数学公式的理解

    精选数学教程

    到了大学之后,线性代数、概率统计、微积分等数学知识的难度较中学时代更高,整个数学的画风变化过大,很多概念开始变得难以理解,不知道怎么突然就冒出来了,也不知道学了有什么用。关于这些,其实有一部分是我们教材的原因,国内大学教材的编写者没有产品经理思维,没有切实站在学生的角度、没有以学生为中心来写教材。这里推荐一些公认比较好的教材:

    线性代数

    关于线性代数这里我们推荐两个教程,一个是William Gilbert Strang(威廉·吉尔伯特·斯特朗)的视频教程麻省理工公开课:线性代数,这个视频教程有配套的教材线性代数导论,价格有点性感,不过不看书也是OK的。Strang是麻省理工MIT的教授,写过很多经典的数学教材。他亲自传授的这个线性代数课程也是享有盛誉。我们还可以在MIT的开放课程里查看更多关于课程的信息:MIT线性代数课程官网。这个课程还有配套的习题课,在网易云课堂上也可以看到MIT线性代数习题课

    二是3Blue1Brown的线性代数的本质。3Blue1Brown是斯坦福大学毕业的一个小哥创办的Youtube频道,擅长用直观的方法来阐述难以理解的概念,非常推荐。

    微积分

    微积分的课程我们也同样是推荐MIT和3Blue1Brown的课程。微积分在MIT分为单变量微积分和多变量微积分,而且都有配套的习题视频,在网易云课堂都可以看到。 单变量微积分单变量微积分习题课多变量微积分多变量微积分习题课。如果想看更多视频内容也可以去MIT官网上了解一下,单变量微积分官网多变量微积分官网

    3Blue1Brown的微积分的本质讲的也是一如既往的好,可以在学习MIT课程前先看。

    统计学

    统计学是一门非常重要的知识,这里我们推荐Khan Academy可汗学院的统计学教程,虽然也有MIT统计学教程,可惜的是没有字幕,如果你听不懂,可以去Youtube上借助AI字幕来看,也可以去MIT统计学基础官网上获取更多资料。还有一个斯坦福大学的统计学习入门(英文字幕)相当不错。 以上教程可能有的使用的R或MATLAB,这些都是可以用Python来代替的。

    数学公式与图像展示

    有趣的数学图形

    为了加深我们对数学公式的理解,我们通常都需要辅之以一些图形,比如函数的图形、几何图形、空间图形等。以往我们作图都是通过在纸上手绘一些图形,不仅麻烦,而且非常不精确,更无法让图形根据变量取值的变化来直观的调整图形。 比如下面这个公式:

    y=x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(\pi x\right)

    为了手绘出这个图形,我们不仅要研究这个数学公式的特性(比如最高点、最低点、拐点、凹凸性)、还要通过赋值的方式来确定图形的轮廓。当然由于赋值的有限,图形自然是无法做到精准的。这还是只有一个变量的情况下,有时我们为了研究数学公式,可能会有多个变量,比如下面的公式除了x这个变量以外,还会有变量b:

    y=x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(b\pi x\right)

    由于公式过于复杂,学生时代数学公式的图形绘制也花了我们大量的时间。但是图形却又是有必要的,因为它可以加深我们对数学公式的理解。其实我们是可以借助于计算机软件来实现这个公式的图形的。

    数学图形绘制软件

    那上面这个数学公式图形的动画效果是怎么做的呢,可以使用DesmosGeogebra 在线版本来绘制,虽然万能的Wolfram Alpha( Mathematica产品也是该公司的)也可以做到,不过体验比较差还收费。Desmos、Geogebra、Wolfram Alpha(收费)都有非常不错的App产品,非常值得学习数学的朋友使用这些软件来增进对数学公式、概念等的理解。

    Desmos、Geogebra可以通过虚拟键盘的方式来输入公式,非常方便,而且公式输入框里面的公式格式是LaTex,可以直接复制公式到VS Code的Markdown里,加上$$$$符号即可显示,对LaTex不了解的童鞋可以阅读本专栏用Python学数学里面的《使用Markdown输出LaTex数学公式》。同时你也可以直接把LaTex格式的数学公式直接粘贴到Desmos、Geogebra的数学公式输入框里面。比如把下面LaTex格式的数学公式粘贴到数学公式输入框里面,将b作为变量:

    x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(b\pi x\right)
    复制代码

    Desmos、Geogebra可以给数学公式添加变量,你可以使用Slider来调整变量的值,图形会实时绘制并展示出来,堪称教学神器,以后再也不用手绘数学图形啦~

    其他数学相关软件(含App)

    既然都已经是互联网时代了,借助于PC端在线版本的软件以及手机端的App来学习数学是理所应当的,在美国等国家,这些数学软件早已走进了课堂(对中小学数学软件感兴趣的朋友可以自行搜索整理了解一下,这里就不介绍了)。

    Symbolab:告诉你运算步骤的数学软件

    Symbolab :这是一个高等数学计算器,支持Online版本(也有不错的App软件),可以用来计算一些基础的代数、函数、三角、微积分等数学公式以及化学公式的运算,它最有特色的功能是可以给出比较详细运算的步骤,如果你想计算下列数学公式的值:

    \int \left(x^2+ax-3\right)^2dx

    用Symbolab来计算,除了可以得出如下结果:

    \int \left(x^2+ax-3\right)^2dx=\frac{ax^4}{2}+\frac{x^5}{5}-2x^3+\frac{a^2x^3}{3}-3ax^2+9x+C

    它还会把整个运算步骤的细节也给你展示出来,非常适合学生再做数学习题时,来检查自己运算步骤是否错误,也适合老师出数学习题。

    类似这样的数学软件还有MathPapa(整体感觉比Symbolab要差),Photomath (有手机App,除了可以拍照识别公式外,也不如Symbolab)、Mathway(也比较一般,手机App倒是不错)。你也可以在应用商店通过搜索“Math”来获取其他数学App,不过它们的功能和以上所说的这些都是类似的。

    Python是万能的

    我们一直强调的是以上所述所有数学软件都是可以被Python取代的(需要GUI图形点击操作也可以,只是比较复杂,不推荐而已),用数学软件是很难做到与编程结合的,也无法使用到一些API将数据对接到生产环节里去。不能与编程结合,数学公式就是死的,不能有效将数据应用到生产实践里,数据的商业价值就大打折扣。所以,除了绘制数学图形外,学习数学就应该完全与编程有机结合

    那Python怎么绘制数学图形呢?我们可以使用最常用的数据可视化库matplotlib以及可以做代数符号运算的Sympy来绘制数学图形。

    使用matplotlib绘制 3x+2x-4的数学图形:

    import numpy as np  
    import matplotlib.pyplot as plt  
    def graph(formula, x_range):  
        x = np.array(x_range)  
        y = eval(formula)
        plt.plot(x, y)  
        plt.show()
        
    graph('x**3+2*x-4', range(-10, 11))
    复制代码

    使用Sympy绘制x^2x交叉的数学图形:

    from sympy import symbols
    from sympy.plotting import plot
    x = symbols('x')
    p1 = plot(x*x, show=False)
    p2 = plot(x, show=False)
    p1.append(p2[0])
    p1.show()
    复制代码

    另:使用Python的Sympy Gamma也同样获得解题的详细步骤,不过使用体验上是没法和Symbolab相比的

    转载于:https://juejin.im/post/5cdba9f5f265da037516c565

    展开全文
  • 统计学分为描述统计学和推断统计学,描述统计学是使用特定的数字或图表来体现数据的集中程度或离散程度,如平均数、中位数、众数、方差、标准差;推断统计学是根据样本数据来推断总体特征,如产品检查,一般采用抽检...

        统计学分为描述统计学和推断统计学,描述统计学是使用特定的数字或图表来体现数据的集中程度或离散程度,如平均数、中位数、众数、方差、标准差;推断统计学是根据样本数据来推断总体特征,如产品检查,一般采用抽检,根据所抽样本的质量合格率作为总体质量合格率的一个估计。

    一、均值、中位数、众数、极差、方差、标准差

        利用Python进行描述性统计分析,需要用到numpy库和scipy库:

    from numpy import mean,median,ptp,var,std
    from scipy.stats import mode
      首先使用list创造一组数据:

    #使用list创造一组数据
    data = [93,62,51,93,75,82,93,62,65,51]

      均值就是求数据的算数平均数,描述数据的平均水平:

    #均值
    a1 = mean(data)
    print '均值:'
    print a1
      中位数是将数据按大小排列后,位于正中间的数描述,描述中等水平:
    #中位数
    a2 = median(data)
    print '中位数:'
    print a2
      众数是在数据中出现次数最多的数,描述一般水平。在一组数据中,可能存在多个众数,如1,2,2,3,3,4,2和3均为众数;也可能不存在众数,如1,2,3,4。众数不仅适用于数值型数据,也适用于非数值型数据,如苹果,苹果,梨,香蕉,苹果为众数。
    #众数
    a3 = mode(data)
    print '众数:'
    print a3
      均值、中位数、众数都可以描述数据的集中或离散型程度,各其有利弊:  

      优点 缺点
    均值 充分利用所有数据,适用性强 容易受极端值影响
    中位数 不受极端值影响 缺乏敏感性
    众数 不受极端值影响;当数据具有明显的集中趋势时,代表性好 缺乏唯一性

        根据数据的分布是否对称,数据分布可分为正态分布与偏态分布。偏态分布分为正偏态分布与负偏态分布。其中,若众数<中位数<平均数,则为正偏态分布,如图1所示;若平均数<中位数<众数,则属于负偏态分布,如图2所示。

    正偏态分布
    图1 正偏态分布                                         图2 负偏态分布

      极差为最大值-最小值,简单的描述数据范围大小:

    #极差
    a4 = ptp(data)
    print '极差:'
    print a4
      方差描述数据的离散程度,两组极差相同的数据可能有不同的方差:

    #方差
    a5 = var (data)
    print '方差:'
    print a5
       标准差也描述数据的离散程度,与方差相比,保持了数据单位的一致性:

    #标准差
    a6 = std(data)
    print '标准差:'
    print a6
    二、直方图、箱线图、茎叶图、柱状图、饼图

        利用Python画图需要使用matplotlib库。

    import matplotlib.pyplot as plt

       创建一组数据,该数据为30美国NBA球员体重,其中‘\’表示换行接着写。

    weight = [225,232,232,245,235,245,270,225,240,240,\
              217,195,225,185,200,220,200,210,271,240,\
              220,230,215,252,225,220,206,185,227,236]

        直方图画法:(1)找出最大值与最小值,确定数据的范围;(2)整理数据,将数据分为几组(尽量使每组都有数据),计算频数分布表;(3)根据频数分布表,画出频数直方图。频数为纵坐标,分组类别为横坐标。通过直方图可以对数据分布有一个直观了解;(4)除了频数直方图,还有频率直方图。频率直方图的纵坐标为频率/组距。频率=频数/总数,组距是分组的极差。

    #创建频数分布直方图
    #weight为待绘制的定量数据,bins=5边表示将数据划分为5个区间
    #normed=False时为频数分布直方图
    plt.hist(weight,bins=5,normed=False)
    #x轴区间范围
    plt.xlabel('体重')
    plt.ylabel('频数')
    plt.title('美国NBA球员体重频数分布直方图')
    plt.show()

        图3所示为频数分布直方图:

    图3 频数分布直方图
    #创建频率分布直方图
    #weight为待绘制的定量数据,bins=5边表示将数据划分为5个区间
    #normed=Ture时为频率分布直方图
    plt.hist(weight,bins=5,normed=True)
    #x轴区间范围
    plt.xlabel('体重')
    plt.ylabel('频率/组距')
    plt.title('美国NBA球员体重频率分布直方图')
    plt.show()
    
        图4为频率分布直方图:

    图4 频率分布直方图
        也可以通过设置bins的值,自行设定分组组距,如bins=[179.5,199.5,219.5,239.5,259.5,279.5],如图4-1所示:
     
    图4-1 自定义(相同)组距

        也支持不相同的组距设置,bins=[179.5,210,219.5,240,279.5],如图4-2所示:
     
    图4-2 自定义(不同)组距
        箱线图(1)下四分位数Q1:将数据按升序排序,位于25%处的数据;(2)上四分位数Q3将数据按升序排序,位于75%处的数据;(3)四分位距IQR=Q3-Q1,是描述数据离散程度的一个统计量;(4)异常点是小于Q1-1.5IQR或大于Q3+1.5IQR的值;(5)下边缘是除异常点意外的数据中的最小值;(5)上边缘是除异常点意外的数据中的最大值。

    #箱线图 
    plt.boxplot(weight,labels=['体重'])
    plt.title('美国NBA球员体重箱线图')
    plt.show()
        图5为箱线图:


    图5 箱线图

        茎叶图保留了数据的全部信息,能直观显示数据的分布状况,将茎叶图逆时针旋转90度后,就可以得到一个类似于频数直方图的图。在Python中不能直接调用函数来画茎叶图,在这里我们自己定义一个stem()函数来画,需要用到math库和itertools库:

    import math
    from itertools import groupby
    #茎叶图
    #参数data为数据集,n=10表示以个位数字为叶子
    #sorted(data)表示对data进行排序
    #lambda x为一个匿名函数,x表示sorted(data)中的元素
    #math.floor(x/n) 表示取x的百位和十位数作,并向下取整作为茎;lst中为数据的个位数,作为叶子
    def stem(data,n):
        for k,g in groupby(sorted(data),key = lambda x: math.floor(x/n)):
            lst = map(str, [d % n for d in list(g)])
            print k, '|', ' '.join(lst)
    #调用函数   
    stem(weight,10)

        对于sorted更详细的解释    https://www.cnblogs.com/zle1992/p/6271105.html 

        对于map更详细的解释 http://www.runoob.com/python/python-func-map.html

        对于join更详细的解释 https://www.cnblogs.com/jsplyy/p/5634640.html

        得到的茎叶图如图6所示:


    图6 茎叶图

         以下为某家庭月支出数据:     

    食品 2500
    服装 1000
    出行 500
    教育 800
    医疗 400
    其他 600
    合计 5800
        导入数据:
            
    #绘制柱状图
    x = ['食品','服装','出行','教育','医疗','其他']
    y = [2500,1000,500,800,400,600]

         柱状图是显示一段时内的数据变化或显示各项之间的比较情况,与直方图相比:

      直方图 柱形图
    横坐标 同一个变量的分组划分 不同组别之间
    作用 显示一组数据的分布情况 不同组别的数据差异

    #创建柱状图
    #第一个参数为柱的横坐标
    #第二个参数为柱的高度
    #参数align为柱的对齐方式,以第一个参数为参考标准
    plt.bar(range(len(x)),y,0.4,color = 'rbg',align = 'center')
    
    #设置柱的文字说明
    #第一个参数为文字说明的横坐标
    #第二个参数为文字说明的内容
    plt.xticks(range(len(x)),x)
    
    #设置横坐标的文字说明
    plt.xlabel('类别')
    #设置纵坐标的文字说明
    plt.ylabel('月支出')
    #设置标题
    plt.title('某家庭月支出柱形图')
    #绘图
    plt.show()
        图7为得到的柱形图。
     
    图7 柱状图
        饼图是根据各项所占比例决定在饼图中的扇形面积,简单且通俗易懂。
    #创建饼形图
    #第一个参数为扇形的面积
    #x参数为扇形的说明文字
    #autopct参数为扇形占比的显示格式
    plt.pie(y, labels=x, autopct='%1.1f%%')
    plt.title('某家庭月支出饼图')
    plt.show()
        图8为得到的饼图。
     
    图8 饼图

        


                          




     

     

    展开全文
  • 学习Python的六大好处

    2019-03-16 13:51:43
    1.Python坐拥库群 Python拥有丰富且优质量的库,这些库涉及游戏开发,科学计算,数据库接口,网络脚本编程,资源提供等各个方面。 *资源库:PYPl ——拥有超过85000个Python模块和脚本,这些资源库可以用来解决...
  • 知乎上有人提问:用python进行办公自动化都需要学习什么知识呢?这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢...
  • python的六大好处

    2020-02-07 12:04:13
    为什么要学python?在人工智能行业的火爆影响下,python逐渐进入到了更多人的视线当中,而被称为“胶水语言”的python,除了在人工智能领域外还在其他领域有不俗的表现。 1、数据分析 当涉及数据科学、统计学、...
  • 本篇文章利用python抓取在线教育网站课工场课程页面的数据,进行简要分析。 通过使用requests库对课工场课程列表页进行抓取。 通过BeautifulSoup对课工场课程列表页面进行解析,并从中获课程名称,课程类型,付费类型...
  •  为进一步推动高等院校Python语言数据挖掘教学工作的开展,加强国内各高等院校同行间的交流,培养国内的师资力量,将机器学习与深度学习的最新实训内容带入课堂,特举办“Python数据挖掘商业运用及案例分析班”,...
  • ython和R是统计学中两种最流行的的编程语言,R的功能性主要是统计学家在开发时考虑的(R具有强大的可视化功能),而Python因为易于理解的语法被大家所接受。 在这篇文章中,我们将重点介绍R和Python以及它...
  • 一、Python基础 Python简明教程(Python3) Python3.7.4官方中文文档 Python标准库中文版 廖雪峰 Python 3 中文教程 Python 3.3 官方教程中文版 Python3 Cookbook 中文版 笨办法学 Python(PDFEPUB) 《Think ...
  • 教育部考试中心近日发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自2018年3月起,在全国计算机二级考试中加入了“Python语言程序设计”科目。9个月前,浙江省信息技术课程改革方案已经出台,Python确定...
  • Python 数据科学入门

    2018-11-06 11:54:59
    本书以 Python 语言讲解数据科学基础知识,涵盖了数据采集、清洗、存储、检索、转换、可视化、数据分析(网络分析)、统计和机器学习等内容。具体内容包括:数据科学的 Python 核心特性,文本数据、数据库、表格形式...
  • 导读:吾日三省吾身,过年胖了吗?情人节过了吗?发际线还好吗?...推荐语:本书包含数据分析实例,涵盖了从基础统计学到ETL、深度学习和物联网的广泛领域,给出了产业分析项目各个技术方面的概念。 ...
  • 很多人会问:老师,我们零基础入门python编程,我们要怎么学才能跟那些有经验的编程大佬PK,才能在毕业的时候高薪就业?这是一个比较典型的、很多人都会关注的问题,今天小编就来给大家分享一下怎么学习python的问题!...
  • ython和R是统计学中两种最流行的的编程语言,R的功能性主要是统计学家在开发时考虑的(R具有强大的可视化功能),而Python因为易于理解的语法被大家所接受。 在这篇文章中,我们将重点介绍R和Python以及它
  • 三、统计学系列——概率论/置信区间/相关/抽样等 四、Pandas系列——数据读取/清洗/规整/分析实战等 五、Python做图系列——箱型图/散点图/回归图/热力图等 六、业务积累系列——流水预测/精细化运营/排序算法等 七...
  • 课程亮点 6 个常用的数据可视化工具使用方法 20 个案例贯穿各个工具的学习过程 ... 中、美、日三国不同思想的制图工具 从静态到交互,满足不同需要的图示 课程背景 数据可视化是数据分析和机器学习的重要环节,比如...
1 2 3 4 5 ... 20
收藏数 1,752
精华内容 700