小数据| 描述性统计(Python/R 实现)

简介: 小数据| 描述性统计(Python/R 实现)

本文首发于“生信补给站”公众号 小数据| 描述性统计(Python/R 实现)

描述性统计

   描述性统计是借助图表或者总结性的数值来描述数据的统计手段。数据挖掘工作的数据分析阶段,可以借助描述性统计来描述或总结数据的基本情况。

理论部分

一 数据的集中趋势描述:

   数据的集中趋势描述是寻找反映事物特征的数据集合的代表值或中心值, 这个代表值或中心值可以很好地反映事物目前所处的位置和发展水平, 通过对事物集中趋势指标的多次测量和比较, 还能够说明事物的发展和变化趋势。


1.1算术平均值

   简单算术平均值是最典型、 最常用、 最具代表性的集中趋势指标。将数据集合的所有数据值相加的和除以数据值个数就得到简单算术平均值。假设有一组包含n个数值的数据集合, 它们的数值分别为x1 , x2 ,…, xn , 该数据集合的简单算术平均值的计算公式为:

   注意当数据集合中有极大值或极小值存在时, 会对算术平均值产生很大的影响, 其计算结果会掩盖数据集合的真实特征, 这时算术平均值就失去了代表性。人均收入?拖没拖后腿


1.2 众数

   数据集合中出现次数最多的数值被称为众数。如果在一个数据集合中, 只有一个数值出现的次数最多, 那么这个数值就是该数据集合的众数;如果有两个或多个数值的出现次数并列最多, 那么这两个或多个数值都是该数据集合的众数。


1.3 中位数

对于数据集合(x1, x2, …, xn) , 将所有的数值按照它们的大小, 从高到低或从低到高进行排序, 如果数据集合包含的数值个数是基数, 那么排在最中间的数值就是该数据集合的中位数;如果数据集合的数值个数是偶数, 那么取最中间两个数值的算术平均值作为中位数。


二 数据的离散程度

   集中趋势指标在表示数据集合的特征时会有不同的缺陷, 例如算术平均数会受到极端值的影响, 不能完全展现数据集合的特征, 离散程度指标可以在一定程度上弥补集中趋势指标的这个缺陷, 展示出数据集合的离散情况。

   在同类离散指标的比较中, 离散指标的数值越小, 说明数据集合的波动(变异) 程度越小;离散指标的数值越大, 说明数据集合的波动(变异) 程度越大。


2.1 极差

   极差是指数据集合中最大值与最小值的差值, 表示整个数据集合能够覆盖的数值距离。现有数据集合(xmin, x2, …,xmax) , 计算公式为:

image.png


2.2 方差和标准差

1)总体的方差和标准差

   如果数据集合(x1, x2, …, xn) 就是数据总体, 并且数据集合有N个数值(个案) , 假设数据总体的均值为μ,那么

   总体方差σ2的计算公式为:

image.png

   总体标准差是方差的正值平方根, 其计算公式为:


2)样本的方差和标准差

   从数据总体中随机抽取一定数量的样本数值, 然后用样本数值的方差和标准差来估计总体的方差和标准差。为了区分, 样本的均值用x-表示, 样本方差用s2表示, 样本标准差用s表示。假设样本容量为n, 那么样本方差的计算公式为:


2.3 变异系数

   变异系数实质上是标准差相对于算术平均值的大小 .

总体的变异系数计算公式为:

样本的变异系数计算公式为 :

   因此, 如果比较算术平均值不同的两个数据集合的相对离散程度时, 使用变异系数要比使用标准差更具有说服力。此外, 变异系数是无单位指标, 这是它与其他离散程度指标最大的区别。


2.4 四分位极差

   排在四分之一位置的数值即为第一四分位数Q1;排在四分之二位置的数值为第二四分位数Q2 , 也就是中位数;排在四分之三位置的数值为第三四分位数Q3。这三个四分位数将整个数据集合分成四等分。四分位极差等于第一四分位数与第三四分位数的差值(Q3-Q1) , 这个差值区间包含了整个数据集合50%的数据值。


实现部分

介绍完了基本概念,下面使用Python 和 R 分别实现上述计算过程:


Python实现


from numpy import mean,median,ptp,var,std
import numpy as np
import pandas as pd
#算术平均值
data = [1,2,3,4,5,5,5,6,7,8,8,9]
data_mean = mean(data)
print("算术平均数 = ")
print(data_mean)
#中位数
data_median = median(data)
print("中位数 = ")
print (data_median)
#众数
data_mode = mode(data)
print("众数 = ")
print (data_mode)
#极差
data_range = max(data)-min(data)
print("极差 = ")
print (data_range)
#方差和标准差
data_var = var (data)
print ("方差 = ")
print (data_var)
#标准差
data_sd = std(data)
print ("标准差 = " )
print (data_sd)
#变异系数
data_cv = mean(data) / std(data)
print ("变异系数 = " )
print (data_cv)
#四分卫极差
dt = pd.Series(np.array([1,2,3,4,5,5,5,6,7,8,8,9]))
print('Q1:', dt.quantile(.25))
print('Q3:', dt.quantile(.75))
print('Q3 - Q1 :', dt.quantile(.75) - dt.quantile(.25) )

R实现



#整理成描述性统计的函数
my_describe <- function(x){
  options(digits = 3)
  N = length(x);
  Min = min(x, na.rm = TRUE);
  Q1 = quantile(x, probs = 0.25, na.rm = TRUE);
  Median = median(x, na.rm = TRUE);
  Q3 = quantile(x, probs = 0.75, na.rm = TRUE);
  Max = max(x, na.rm = TRUE);
  Mean = mean(x, na.rm = TRUE);
  Var = var(x, na.rm = TRUE);
  Sd = sd(x, na.rm = TRUE);
  Range = abs(diff(range(x)));
  #返回结果
  return(data.frame(N = N, Min = Min, Q1 = Q1, Median = Median, Q3 = Q3, Max = Max, Mean = Mean, Var = Var, Sd = Sd, Range = Range))
}
#可对data数据集批量使用
sapply(data, my_describe)


参考资料:

人人都会数据分析

数据分析|R-描述性统计

相关文章
|
27天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
12天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
21 1
|
13天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
13天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
25天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
53 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
28天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
38 3
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
47 2
|
12天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
21 0
|
1月前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
43 1
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
42 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数