No.01统计学之数据的描述性统计
2019-07-21 07:30
113 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40241667/article/details/96685738
数据的描述性统计主要包括以下几部分:
- 数据的集中趋势:
-
众数、中位数、平均数、分位数
- 算术平均数、加权平均数、几何平均数
- 数据的离中趋势:
-
数值型数据:方差、标准差、极差、平均差
- 顺序数据:四分位差
- 分类数据:异众比率
- 相对离散程度:
-
离散系数
- 分布的形状:偏态系数,峰态系数
一、数据的集中趋势
- 众数
众数(Mode)描述一组数据的集中趋势,是一组数据中出现次数最多的那个数。注意:众数可以没有也可以有多个。 - 中位数
中位数(Median)代表一个样本、种群或概率分布中的一个数值,其通过其数值集合划分为相等的上下两部分。
假设一组数据排序后为X1,X2,X3…Xn
如果n为偶数,则中位数为(X(n/2)+X(n/2+1))/2 ,如果n为奇数,则中位数为X(N+1)/2 - 平均数
平均数(average)代表一组数据的平均水平,其值为所有的数据之和除于个数,即(N1+N2+…+Nn)/n - 分位数
分位数(Quantile)也指分位点,是指一个随机变量的概率分布范围内分为的几个数值点,常用的有二分位数(中位数),四分位数,百分位数。
四分位数是统计学分位数中的一种,既把一组数值从小到大排序并分成四等份,位于三个分割点的值就是四分位数。
第一四分位数Q1,又称较小四分位数,等于样本排序后的第25%的数字。其值为(n+1)/4
第二四分位数Q2,又称中位数,等于样本排序后的第50%的数字。其值为2(n+1)/4
第三四分位数Q3,又称较大四分位数,等于样本第75%的数字。其值为3(n+1)/4
eg:12 23 34 45 56 67 78 89
Q1为第(8+1)/4个数字,其值为23+(34-23)*0.25=25.75
Q2为第2(8+1)/4个数字,其值为45+(56-45)*0.5=50.5
Q3为第3(8+1)/4个数字,其值为67+(78-67)*0.75=75.25 - 算术平均值
算术平均值(arithmetic mean)也叫平均值,为所有数值之和除于个数。 - 加权平均值
加权平均值(weight mean)即个数值乘以权重后的数值之和除于个数的值。
eg:语文100 数学120 英语100
各权重为0.3 0.4 0.3
最后加权平均值为(1000.3+1200.4+100*0.3)/3=36 - 几何平均数
几何平均数(Geometric Mean)即每个每个变量值的连乘积开项数次方根。
二、数据的离中趋势
- 方差
方差(variance)是每个样本值与全体样本值的平均数之差的平方值的平均数 - 标准差
标准差(Standard Deviation)是方差的算术平方根。 - 极差
极差(Range)又称为范围误差或者全距,其值为最大值减最小值。 - 平均差
平均差(Mean Deviation)是表示各个变量值之间差异程度的数值之一。指各个变量值同平均数的离差绝对值的算术平均数。 - 四分位差
四分位差(quartile deviation)指的是四分位的Q3与Q1的差值。其公式为Q=Q3-Q1 - 异众比率差
异众比率指的是样本中非众数个数占样本个数的比率。计算公式为Vm0=(N-Fm0)/N
三、相对离散程度
- 离散系数
离散系数(variation coefficient)它是一组数据的标准差与其相应的均值之比,是测度数据离散程度的相对指标.通常使用Vs表示,其计算公式为Vs=S/X.离散系数越大,说明变量分布的离散程度越强,平均数的代表性越差;离散系数越小,说明变量分布的离散程度越弱,平均数的代表性越好。
四、分布的形状##
-
偏态系数
偏态系数(deviation coefficient)用来衡量数据的偏斜程序。 -
峰态系数
峰态系数用来衡量数据的扁平程度。
五、python程序代码##
import math my_array=[12,23,45,56,78,23,45,80] # 极差 def range(arr): return max(arr)-min(arr); # 平均数 def avg(arr): return format(float(sum(arr)/len(arr)),'.2f'); # 中位数 def median(arr): arr = sorted(arr); if(len(arr)%2 == 0): return (arr[int(len(arr)/2)]+arr[int((len(arr)-2)/2)])/2 return arr[int((len(arr)-1)/2)] # 众数 def mode(arr): dict = {} result = [] max = 0 if arr and len(arr) > 0: for num in arr: if num in dict: dict[num] += 1 else: dict[num] = 1 d1 = sorted(dict.values(), reverse=True) max = d1[0] for num in dict: count = dict.get(num, 0) if count == max: result.append(num) return result # 分位数 n=2 1/2 n=4 1/4 2/4 3/4 def quartile(arr,default_args=2): arr=sorted(arr) length=len(arr); result=[]; if not default_args or (default_args == 2): if length % 2 == 0: return (arr[int(length/2-1)]+arr[int((length+2)/2)])/2 else: return arr[int(length/2+1)] else: if length % default_args == 0: i = default_args; while i >1 : result.append((arr[int(length/i -1)] + arr[int(length/i)])/2) i -=1; return result; else: i = default_args; while i >1: result.append(arr[int(length/i - 1)]) i -=1; return result; # print("数组为:",my_array) # print("排序后为:",sorted(my_array)) # print("极差:",range(my_array)) # print("平均数:",avg(my_array)) # print("中位数:",median(my_array)) # print("众数:",mode(my_array)) # print("分位数:",quartile(my_array,3)) # 算术平均数:(n1+n2+n3)/n def arith_mean(arr): return format(float(sum(arr)/len(arr)),'.2f'); # 加权平均数: def weig_aver(arr,weig): result = 0; i = 0; for arr_list in arr: result += arr_list*weig[i]; i += 1; return result; # 几何平均数: def gen_mean(arr): sum = 1; for i in arr: sum += sum * i; return format(float(pow(sum,1/len(arr))),'.2f') print("算术平均数为:",arith_mean(my_array)) print("几何平均数为:",gen_mean(my_array)) array=[80,90,100] weight=[0.3,0.4,0.3] print("加权平均数为:",weig_aver(array,weight)); # 方差 def variance(arr): avg_arr = avg(arr); sum = 0; for num in arr: sum += math.pow(float(num) - float(avg_arr),2) return format(float(sum/len(arr)),'.2f'); # 标准差 def standard_deviation(arr): return format(float(math.pow(float(variance(arr)),1/2)),'.2f'); # 平均差 def average_deviation(arr): airth_mean = arith_mean(arr); sum = 0; for num in arr: if((float(num) - float(airth_mean)) > 0): sum += (float(num) - float(airth_mean)) else: sum += (float(airth_mean) - float(num)) return sum/len(arr) # 四分位差 def quartile_deviation(arr): return quartile(arr,4)[2]-quartile(arr,4)[0]; # 异众比率 def variation_ratio(arr): count = 0; for num in arr: if(num not in mode(arr)): count += 1; return count/len(arr); #离散系数 def coefficient_of_variation(arr): return float(standard_deviation(arr))/float(arith_mean(arr)) print('方差为:',variance(my_array)) print('标准差为:',standard_deviation(my_array)) print('平均差为:',average_deviation(my_array)) print("四分位为:",quartile(my_array,4)) print("四分位差为:",quartile_deviation(my_array)) print("异众比率为:",variation_ratio(my_array)) print("离散系数为:",coefficient_of_variation(my_array))
相关文章推荐
- 数据分析(二)----- 描述性统计分析
- 实例讲解统计学基础知识(2):描述性统计分析
- 金融AI入门:每天学一点统计学(数据类型,变量类型,统计方法……)
- 数据的描述性统计
- 数据分析(入门篇)-第二章-玩转数据分析-Part2(Excel数据分析工具库-描述性统计分析)
- 数据的描述性统计
- 统计学系列:统计、数据与思想
- 数据挖掘:描述性统计分析
- 国土档案管理信息系统【保管移交、报表打印、汇总统计、数据管理、系统维护】
- 实例讲解统计学基础知识(3):统计分布
- 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
- 用一条SQL完成数据表的行统计
- Oracle数据库的数据统计(Analyze)
- 数据结构实验之二叉树三:统计叶子数
- sort | uniq -c | sort -rnk 1 在数据统计中的重要用途------按频率排序
- 转载:SQL按照日、周、月、年统计数据的方法
- (六篇长图带你数据特征分析入门)数据分析入门_PART4统计基础_CH03数据常用统计指标
- shell实现类矩阵格式数据统计及输出(hive环境下数据的过程化处理)
- 利用HttpWebRequest自动抓取51la统计数据
- 人工智能,机器学习,统计学习,数据挖掘概念解读