本文记录数据分析方法。知乎
一、基本描述统计
- 频数分析:频数、百分比、饼图;
- 描述分析:平均值;标准差:
总体标准差
(先求每个值与平均值之差的平方,然后将结果相加再除以总的个数,最后开根号),样本标准差
(先求每个值与平均值之差的平方,然后将结果相加再除以总的个数-1
,最后开根号),标准误差
(总体标准差除以总的个数开根号
)。方差等于标准差的平方;最大值;最小值、中位数;百分位数、峰度、偏度和变异系数(变异系数等于总体标准差除以平均数)。 - 分类汇总:研究不同分类时的汇总情况,输出的指标为汇总结果
二、差异关系研究
常见的:方差分析,t检验、卡方检验和非参数检验。
方差分析
方差分析用于进行定类数据与定量数据之间的差异关系研究;定类数据:具有相同属性的变量,变量之间不存在大小和顺序,比如性别、电脑品牌等,定量数据:数据大小具有比较意义,比如满意度中,1代表不满意,5代表很满意,数字越大满意程度越高,或者在身高数据中,数据越大代表此人身高越高等等。
方差分析又称变异数分析或F检验,基本原理是认为不同处理组的均数间的差别基本来源于两个:
- 实验条件:即不同的处理造成的差异,称为组间差异。用变量在各组的均值与总均值之偏差平方和的总和表示记为
SSb
,组间自由度dfb
; - 随机误差:如测量误差造成的差异或个体间的差异,称为组内差异,用变量在各组的均值与该组内变量值之偏差平方和的总和表示记为
SSw
,组内自由度dfw
;
总偏差平方和SSt=SSb+SSw
。
组内SSw、组间SSb除以各自的自由度(组内dfw =n-m,组间dfb=m-1,其中n为样本总数,m为组数),得到其均方MSw和MSb,一种情况是处理没有作用,即各组样本均来自同一总体,MSb/MSw≈1。另一种情况是处理确实有作用,组间均方是由于误差与不同处理共同导致的结果,即各样本来自不同总体。那么,MSb>>MSw(远远大于)。
MSb/MSw比值构成F分布。用F值与其临界值比较,推断各样本是否来自相同的总体。下面给出JS
计算例子
const data1 = [0.84, 1.05, 1.2, 1.2, 1.39, 1.53, 1.67, 1.8, 1.87, 2.07, 2.11];
const data2 = [
0.54, 0.64, 0.64, 0.75, 0.76, 0.81, 1.16, 1.2, 1.34, 1.35, 1.48, 1.56, 1.87,
];
// data1和data2可以看作两个组,样本总数为两个组的长度和,即n=24;组数为=2
// 则组内自由度dfw = n-m=22;组间自由度dfb = m-1=2;
// 组间差异SSb=变量在各组的均值与总均值偏差平方和的总和。
// 组内差异SSw = 变量在各个组的均值与该组内变量值偏差平方和的总和。
// 计算组间差异
const calSSb = () => {
let av1 = 0;
let av2 = 0;
for (let i = 0; i < data1.length; i++) {
av1 += data1[i];
}
for (let j = 0; j < data2.length; j++) {
av2 += data2[j];
}
let av11 = av1 / data1.length; // 组1的平均数
let av22 = av2 / data2.length; // 组2的平均数
let av = (av1 + av2) / (data1.length + data2.length); // 总平均数
let res =
((av11 - av) * (av11 - av) * data1.length +
(av22 - av) * (av22 - av) * data2.length)
return res;
};
let res = calSSb(); // 组间差异,由于组间自由度等于1,所以组间均方等于组间差异的数值
console.log(res);
const calSSw = () => {
let av1 = 0;
let av2 = 0;
for (let i = 0; i < data1.length; i++) {
av1 += data1[i];
}
for (let j = 0; j < data2.length; j++) {
av2 += data2[j];
}
let av11 = av1 / data1.length; // 组1的平均数
let av22 = av2 / data2.length; // 组2的平均数
let count1 =0
for (let k = 0; k < data1.length; k++){
count1 += (data1[k] - av11) * (data1[k] - av11);
}
for (let l = 0; l < data2.length; l++){
count1 += (data2[l]-av22)*(data2[l]-av22)
}
return count1
}
const ssw = calSSw() // 组内差异,
console.log(ssw)
// 均方=ssw/组内自由度,
const sswAv = ssw / (data1.length + data2.length - 2);
console.log(sswAv)
// 方差分析
// 组间均方除以组内均方的商
const ssAll = (res / (2 - 1)) / sswAv
console.log(ssAll) // 这个是F值
按照研究内容和数据类型等不同,可以分为以下几类:
- 单因素方差分析(ANOVA):比较三个或更多组的均值,是一种推理假设检验,利用样本得出有关群体的结论。它可以告诉我们样本是否提供了足够的证据来得出各组的总体均值存在差异的结论。
- 双因素方差分析:两个定类数据与一个定量数据之间的关系情况;
- 多因素方差分析:多个定类数据与一个定量数据之间的关系;
- 事后多重比较:基于方差分析基础,进行具体两两组别之间的差异对比
- 协方差分析:若方差分析时需要考虑干扰项,此时就称为协方差分析,干扰项称为
协变量
- 重复测量方差分析:相关领域研究时,常常需要对一个观察单位重复多次测量。
t检验
t检验
用于分析定类数据与定量数据之间的差异情况,需满足两个基本条件。
- t检验属于参数检验,用于检验定量数据,若数据均为定类数据则使用非参数检验;
- 样本数据服从正态或近似正态分布
按照研究内容和数据类型等不同,可以分为以下几类:
- 独立样本t检验:
//a,b分别表示每个样本的平均值 // s1,s2表示表示每个样本的标准差 // n1,n2 表示每个样本的样本量 const t= ((a-b)-0)/Math.sqrt(s1*s1/n1+s2*s2/n2) // 两个样本所属总体方差相等时: 自由度=n1+n2-2, //两个样本所属总体方差不相等时,计算方式如下: const v =(s1*s1/n1+s2*s2/n2)*(s1*s1/n1+s2*s2/n2)/((s1*s1/n1)*(s1*s1/n1)/(n1-1)+(s2*s2/n2)*(s2*s2/n2)/(n2-1))
- 单样本t检验
- 配对t检验
- 概要t检验
卡方检验
用于分析定类数据与定类数据之间的差异情况,按照研究内容和数据类型等不同,可以分为以下几类:
- 卡方检验:比如性别X和是否抽烟的差异关系。
- 配对卡方:
- 卡方拟合优度:比如性别男女的分布比例是否为50%;
- 分层卡方:
- Fisher卡方:比如研究是否接种疫苗两种情况下HPV感染有无差异。
非参数检验
参数检验一般需要数据满足正态性、方差齐性。非参数检验不对总体的分布形态做假定,所以当数据不正态或方差不齐时,可以使用非参数检验进行差异性研究。
- 单样本wilcoxon秩和检验:
- 配对wilcoxon秩和检验:
- Mann-Whiteney秩和检验:
- Kruskal-Wallis秩和检验:
- Friedman秩和检验:
- Spearman秩相关以及Kendail秩相关:
影响关系研究
包括相关分析
、回归分析
和logit回归分析
。
相关分析
- 相关分析:分析对两个变量之间的相关关系
- 偏相关:当两个变量都与第三个变量相关时,为了消除第三个变量的影响,只关注这两个变量之间的关系情况,此时可使用偏相关分析
- 典型相关:研究两组变量(由多个指标组成)之间的整体相关性,可用典型相关分析
回归分析
可以细分为二十几种,这里记录常用的几种
- 线性回归:研究X对Y之间的影响关系
- 逐步回归:研究X对Y的影响,并且自动剔除不显著项
- 岭回归:用于解决线性回归中自变量共线性的研究算法
- 曲线回归:对于非线性关系的变量进行回归分析的方法
- 分组回归:对比不同组别,X和Y的影响是否有着不一致等。
logit回归分析
研究X对Y的影响时,如果因变量Y为定类数据,则应该使用logit回归分析。
- 二元logit回归:Y为定类数据且只有2类;
- 有序logit回归:Y为定类数据且有序,(如不幸福、比较幸福和十分幸福)
- 多分类logit回归:Y为定类数据且大于2类
信息浓缩方法
因子分析
、主成分分析
聚类分析
聚类就是一种寻找数据之间内在结构的技术。聚类把全体数据实例组织成一些相似组,称为簇
。处于相同簇中的数据实例彼此相同,处于不同簇的实例彼此不同。
聚类技术通常又称为无监督学习
,聚类分析还可以用来发现数据项之间的依赖关系,从而去除或合并有密切依赖关系的数据项。聚类分析也可以为某些数据挖掘方法(如关联规则、粗糙集方法),提供预处理功能。
基于划分的聚类方法
基于划分的聚类方法是一种自顶向下的方法,对于给定的 n 个数据对象的数据集 D,将数据对象组织成 k(k≤n) 个分区,其中,每个分区代表一个簇
- k-平均算法(k-means):
- k-中心算法(k-methoids):
基于层次的聚类方法
基于层次的聚类方法是指对给定的数据进行层次分解,直到满足某种条件为止。该算法根据层次分解的顺序分为自底向上法和自顶向下法,即凝聚式层次聚类算法和分裂式层次聚类算法。
自底向上法:首先,每个数据对象都是一个簇,计算数据对象之间的距离,每次将距离最近的点合并到同一个簇。然后,计算簇与簇之间的距离,将距离最近的簇合并为一个大簇。不停地合并,直到合成了一个簇,或者达到某个终止条件为止。
簇与簇的距离的计算方法有最短距离法、中间距离法、类平均法等,其中,最短距离法是将簇与簇的距离定义为簇与簇之间数据对象的最短距离。自底向上法的代表算法是AGNES
(AGglomerativeNESing)算法自顶向下法:该方法在一开始所有个体都属于一个簇,然后逐渐细分为更小的簇,直到最终每个数据对象都在不同的簇中,或者达到某个终止条件为止。自顶向下法的代表算法是
DIANA
(DivisiveANAlysis)算法。
基于层次的聚类算法的主要优点包括,距离和规则的相似度容易定义,限制少,不需要预先制定簇的个数,可以发现簇的层次关系。基于层次的聚类算法的主要缺点包括,计算复杂度太高,奇异值也能产生很大影响,算法很可能聚类成链状。
基于密度的聚类方法
基于密度的聚类方法的主要目标是寻找被低密度区域分离的高密度区域。与基于距离的聚类算法不同的是,基于距离的聚类算法的聚类结果是球状的簇,而基于密度的聚类算法可以发现任意形状的簇。
基于密度的聚类方法是从数据对象分布区域的密度着手的。如果给定类中的数据对象在给定的范围区域中,则数据对象的密度超过某一阈值就继续聚类。
这种方法通过连接密度较大的区域,能够形成不同形状的簇,而且可以消除孤立点和噪声对聚类质量的影响,以及发现任意形状的簇。
基于密度的聚类方法中最具代表性的是DBSAN
算法、OPTICS
算法和DENCLUE
算法。这两种方法没有优劣之分,只是在实际应用的时候要根据数据特点及想要的簇的个数,来考虑是自底而上更快还是自顶而下更快。
基于网格的聚类方法
基于网格的聚类方法将空间量化为有限数目的单元,可以形成一个网格结构,所有聚类都在网格上进行。基本思想就是将每个属性的可能值分割成许多相邻的区间,并创建网格单元的集合。每个对象落入一个网格单元,网格单元对应的属性空间包含该对象的值。
基于网格的聚类方法的主要优点是处理速度快,其处理时间独立于数据对象数,而仅依赖于量化空间中的每一维的单元数。这类算法的缺点是只能发现边界是水平或垂直的簇,而不能检测到斜边界。另外,在处理高维数据时,网格单元的数目会随着属性维数的增长而成指数级增长
基于模型的聚类方法
基于模型的聚类方法是试图优化给定的数据和某些数学模型之间的适应性的。该方法给每一个簇假定了一个模型,然后寻找数据对给定模型的最佳拟合。假定的模型可能是代表数据对象在空间分布情况的密度函数或者其他函数。这种方法的基本原理就是假定目标数据集是由一系列潜在的概率分布所决定的。
物理学研究常用的数据分析方法
- 数据拟合和曲线拟合:用于将实验数据与理论模型进行比较:例如最小二乘法和非线性最小二乘法等;
- 多元分析:用于探究多个因素对物理系统的影响,例如主成分分析和聚类分析。
- 模拟和计算:用于模拟和计算物理系统的性质和行为,例如分子动力学模拟和Monte Carlo模拟等
- 傅里叶变换和频谱分析:用于分析物理系统的周期性和频率特征。
工程学研究
- 可靠性分析:用于评估工程系统的可靠性和寿命,例如故障树分析和失效模式与影响分析等。
- 优化和决策分析:用于优化工程系统的设计和性能,例如线性规划和决策树分析等
- 模拟和建模:用于模拟和建模工程系统的行为和性能,例如有限元分析和计算流体力学模拟等。
- 多元分析:用于探究多个因素对工程系统的影响,例如主成分分析和回归分析。