查看原文
其他

研我培养 | 常用数据统计分析方法




遨游在学术海洋中的研友们,

在面对数据时是否有时会不知所措,

或是知道用什么分析方法却忘了步骤,

或是忘了函数接口。

别慌,小研整理了一些常用的

数据统计分析方法,

一起来接受数学和算法的洗礼吧!


#1 相关

分析

相关分析是对两个变量之间线性关系的描述与度量,可用相关系数来衡量。对于给定两个变量的样本数据x和y,样本相关系数公式如下:

在对r进行t分布检验显著的前提下,当0<r≤1,表示x和y之间存在正线性相关关系,当-1≤r<0,表示存在负线性相关关系。当|r|≥0.8,可视为高度相关,当0.5≤|r|<0.8,为中度相关,当0.3≤|r|<0.5时,为低度相关,当|r|<0.3,可视为不线性相关。

Python中计算相关系数的函数:

corr = numpy.corrcoef(x, y=None)

#2 方差

分析

方差分析是从观测值的变异角度判断不同总体均值是否相等,以鉴别因素对结果的影响程度。其将样本的总误差分解为组内误差和组间误差,组内误差由随机抽样误差引起,组间误差除了抽样误差还可能包含系统误差。对于单因素方差分析,设因素A有r个水平/组,第i组有ni个观测值,组间误差SA、组内误差SE计算公式如下:

构造F统计量,当F值满足以下条件时,认为总体均值相等,即因素A无显著影响,反之总体均值不等,因素A有显著影响。

Python中用于方差分析的函数:

from scipy.stats import f_onewayF, p = f_oneway(sample1, sample2, …)

#3 主成分

分析与

因子分析

主成分分析从原始变量中导出少数几个主成分,使其尽可能多地保留原始变量的信息,且彼此互不相关,以此达到降维和数据解释的作用。其思想是选取方差最大的方向作为主成分,通过计算协方差/相关系数矩阵,求出特征根和对应的单位化特征向量,从而得出主成分和对应的贡献率。

因子分析是主成分分析的推广,它将观测随机变量分解为因子的线性组合,包含因子载荷矩阵、公共因子和特殊因子,通过因子旋转为因子寻找合理的解释,用于描述原始变量间的相关关系。

Python中用于主成分分析的函数:

from sklearn.decomposition import PCApca = PCA(n_components, copy=True, whiten=False).fit(x)new_x = pca.transform(x)pca.components_ #主成分pca.explained_variance_ratio_ #贡献率

#4 回归

分析

回归分析用于描述被解释变量与解释变量之间的平均关系,常用于预测和控制。回归模型假定零均值、同方差、无自相关、随机扰动项与解释变量不相关、无多重共线性、正态性,模型的矩阵形式可以表示为Y=Xβ+U,参数估计使用最小二乘法。对于一元线性回归模型,参数计算公式如下:

回归方程的显著性检验使用F检验,回归参数的显著性检验使用t检验,拟合效果使用可决系数R2衡量。在一元线性回归的基础上,可推广至多元线性回归、非线性回归。

Python中用于线性回归的函数:

from sklearn.linear_model import LinearRegressionreg = LinearRegression().fit(x, y)yp = reg.predict(x)reg.coef_ #系数reg.intercept_ #截距

#5 时间

序列分析

时间序列分析是根据过去已有数据预测未来结果,多数方法建立在平稳非白噪声时间序列上,可用单位根(DF/ADF)检验序列的平稳性,用LB统计量检验序列的非纯随机性。平稳序列常用ARMA,非平稳序列常用ARIMA,其通过d阶差分使序列平稳。

ARMA/ARIMA是自回归模型AR和滑动平均模型MA的结合。以ARMA为例,根据样本自相关系数ACF和样本偏自相关系数PACF,选择阶数适当的ARMA(p,q),使用极大似然或最小二乘估计参数,拟合后作模型和参数的显著性检验。ARMA模型表示如下:

Python中构建ARIMA的函数:

from statsmodels.tsa.stattools import adfuller, acf, pacfadf_val, acf_val, pacf_val = adfuller(x), acf(x), pacf(x)from statsmodels.tsa.arima.model import ARIMAarima_res = ARIMA(x, order=(p,d,q)).fit()xp = arima_res.forecast(steps)

#6 判别

分析

判别分析是对样本进行分类,决策树是较常用的方法之一。

决策树从根节点开始判断,直至叶结点,对应一个决策/分类结果。它的构建是一个递归过程,通过最大化信息增益或最小化基尼指数来选择划分属性。样本根据属性测试结果被划分到不同子结点中,并在子树中递归划分,递归返回的条件如下:

(1)当前结点的所有样本属于同一类;

(2)当前属性集为空或样本在所有属性上取值相同;

(3)当前结点包含的样本集为空。

Python中构建决策树的函数:

from sklearn.tree import DecisionTreeClassifierdtree = DecisionTreeClassifier(criterion='gini', max_depth=None).fit(x, y)yp = dtree.predict(x)

除了决策树,判别分析常用的方法还有K近邻分类、贝叶斯分类、支持向量机、神经网络等。

#7 聚类

分析

聚类分析是将未知类别的样本划分为几个不相交的簇,每个簇可能对应潜在的概念/类别,K均值聚类是较常用的方法之一。

K均值聚类将样本分为k类,先随机抽取k个样本作为簇中心,计算每个样本到各个簇中心的距离,将其划归到最近的中心所在簇中。根据聚类结果,重新计算簇中心(簇中所有样本的均值向量),再重新分配样本,不断重复直至聚类结果不再改变。聚类结果优劣可用平方误差衡量(所有样本到所在簇心的距离平方)。

Python中K均值聚类的函数:

from sklearn.cluster import KMeanskm = KMeans(n_clusters=8, n_init=3, max_iter=100).fit(x)km.labels_ #样本类别km.cluster_centers_ #类别中心

除了基于距离的K均值聚类,聚类分析常用的方法还有基于密度的DBSCAN。


好啦,小研就整理到这里,

希望能对研友们有所帮助。

忽然感觉头顶有点凉,

不说了,去买顶帽子先!


参考资料:

[1]贾俊平.统计学.清华大学出版社

[2]司守奎.数学建模算法与程序.海军航空工程学院

[3]国防科技大学.数学建模与数学实验.https://www.icourses.cn/sCourse/course_3271.html

[4]庞皓.计量经济学.科学出版社

[5]王燕.应用时间序列分析.中国人民大学出版社

[6]周志华.机器学习.清华大学出版社

[7]覃秉丰.机器学习算法基础.https://www.bilibili.com/video/BV1Rt411q7WJ?p=1


推荐阅读


研我培养 | 论文写作小技巧

研我培养|如何阅读一本书

研我培养 | 宝藏在线学习网站安利

研我培养|什么是SCI、SSCI、CSSCI、核心期刊?

学术道德规范上需要注意的问题

♢End♢
  爱你,我们走心。


编辑 / 王金涛

排版 / 张宇甜
校对 / 谭天姝、李若菲


小研知道你 在看  哦

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存