scipy--统计检验

今天整理了一下使用python进行常用统计检验的命令与说明,具体的关于假设检验、统计量、p值等统计学相关的知识可以参考数据分析之必会统计学

1.正态性检验
正态性检验是检验数据是否符合正态分布,也是很多统计建模的必要步骤,在Python中实现正态性检验可以使用W检验(SHAPIRO-WILK TEST)
检验原假设:样本服从正态分布
结果解释:当p值小于某个显著性水平α(如0.05)时,则认为样本不是来自正态分布的总体,否则承认样本来自正态分布的总体。

from scipy.stats import shapiro
data = [0.86, 0.78, 0.83, 0.84, 0.77, 0.84, 0.81, 0.84, 0.81, 0.81, 0.80, 0.81,
       0.79, 0.74, 0.82, 0.78, 0.82, 0.78, 0.81, 0.80, 0.81, 0.74, 0.87, 0.78]
stat, p = shapiro(data)
print("stat为:%f" %stat,"p值为:%f" %p)
#输出结果:
stat为:0.966175 p值为:0.574134

2.相关性检验:皮尔逊相关系数
皮尔逊相关系数(Pearson Correlation Coefficient)用于衡量两个变量之间的线性相关相关关系,相关系数的取值在-1与1之间,大于0为正相关,小于0为负相关。
基本假定

  • 每个样本中的观察是独立同分布的
  • 每个样本的观察都是正态分布的
  • 每个样本的观察具有相同的方差
  • 所有变量都是连续型变量

检验原假设:两个变量不相关
结果解释:当p值小于某个显著性水平α(比如0.05)时,则拒绝原假设,认为两个变量是相关的。否则认为是不相关的。
注意:这里的相关仅为统计学意义上的相关性,并不能理解为实际因果关系!!

from scipy.stats import pearsonr
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
corr,p = pearsonr(data1,data2)
print("corr为:%f" %corr,"p值为:%f" %p)
#输出结果:
corr为:-0.392250 p值为:0.207253

3.相关性检验:斯皮尔曼相关系数
斯皮尔曼相关系数(SPEARMAN’S RANK CORRELATION)又称为斯皮尔曼等级相关系数。是一种非参数方法,衡量两个变量的依赖性的非参数指标。
基本假定

  • 每个样本中的观察是独立同分布的
  • 每个样本的观察具有相同的方差
  • 所有变量可以是连续型变量或可排序的分类变量

检验原假设:两个变量不相关
结果解释:当p值小于某个显著性水平α(比如0.05)时,则则拒绝原假设,认为两个变量是相关的。否则认为是不相关的。

from scipy.stats import spearmanr
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
corr, p= spearmanr(data1, data2)
print("corr为:%f" %corr,"p值为:%f" %p)
#输出结果:
corr为:-0.435153 p值为:0.157414

4.卡方检验
卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴,卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
注意:

  • 卡方检验仅针对分类变量
  • 用于计算列联表的观察是独立的。
  • 列联表的每个单元格中有25个或更多个实例。

检验原假设:观察频数与期望频数无显著差异
结果解释:当p值小于某个显著性水平α(比如0.05)时,则拒绝原假设,认为两个样本有显著差异。

from scipy.stats import chi2_contingency
import numpy as np
kf_data = np.array([[20,21], [22,24]])
kf = chi2_contingency(kf_data)
print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf)
#输出结果:
chisq-statistic=0.0159, p-value=0.8997, df=1 expected_frep=[[19.79310345 21.20689655]
 [22.20689655 23.79310345]]

5.T检验:单样本T检验
单样本t检验是样本均值与总体均值的比较问题。其中总体服从正态分布,从正态总体中抽样得到n个个体组成抽样样本,计算抽样样本均值和标准差,判断总体均值与抽样样本均值是否相同。
基本假定:

  • 样本数据服从正态或近似正态分布
  • 每个样本中的观察是独立同分布的
  • T检验属于参数检验,用于检验定量数据,若数据均为定类数据则应使用卡方检验

检验原假设:样本均值无差异(μ=μ0)
结果解释:当p值小于某个显著性水平α(比如0.05)时,则认为样本均值存在显著差异,具体的分析要看所选择的是双边假设还是单边假设(又分小于和大于)注意ttest_1samp进行双侧检验。

from scipy import stats
data = [23,20,18,29,43,35,32,40,29,26,24,26]
stats.ttest_1samp(data,1)
#输出结果:
Ttest_1sampResult(statistic=-29.095366280269644, pvalue=1.2015599001111872e-19)

6.T检验:两样本T检验
两样本t检验是比较两个样本所代表的两个总体均值是否存在显著差异。除了要求样本来自正态分布,还要求两个样本的总体方差相等也就是“方差齐性”。
检验原假设:样本均值无差异(μ=μ0)
当不确定两总体方差是否相等时,应先利用levene检验检验两总体是否具有方差齐性stats.levene(data1,data2)如果返回结果的p值远大于0.05,那么我们认为两总体具有方差齐性。如果两总体不具有方差齐性,需要加上参数equal_val并设定为False,如下。
stats.ttest_ind(data1,data2,equal_var=False)

结果解释:当p值小于某个显著性水平α(比如0.05)时,则认为样本均值存在显著差异,具体的分析要看所选择的是双边假设还是单边假设(又分小于和大于)注意stats.ttest_ind进行双侧检验。

from scipy import stats
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
stats.ttest_ind(data1,data2)
#输出结果:
Ttest_indResult(statistic=-3.1758496679296524, pvalue=0.004373771039397662)

7.T检验:配对T检验
配对样本均数T检验简称配对T检验(paired t test), 又称非独立两样本均数t检验,适用于配对设计计量资料均数的比较,其比较目的是检验两相关样本均数所代表的未知总体均数是否有差别。
与独立样本T检验相比,配对样本T检验要求样本是配对的。两个样本的样本量要相同;样本先后的顺序是一一对应的。
基本假定:

  • 每个样本中的观察是独立同分布的
  • 每个样本的观察都是正态分布的
  • 每个样本中的观察具有相同的方差
  • 每个样本的观察结果是成对的

检验原假设:样本均值无差异(μ=μ0)
结果解释:当p值小于某个显著性水平α(比如0.05)时,则认为样本均值存在显著差异,具体的分析要看所选择的是双边假设还是单边假设(又分小于和大于)注意stats.ttest_rel进行双侧检验。

from scipy import stats
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
stats.ttest_rel(data1,data2)
#输出结果:
Ttest_relResult(statistic=-3.149034903041314, pvalue=0.009258094005021552)
### 回答1: 概率论与数理统计是数学中的两个重要分支,用于研究随机现象的概率及其规律。而Scipy是一个基于Python的科学计算库,其中包含了许多数学、科学和工程领域的计算工具,包括概率论与数理统计的应用。 Scipy库中的stats模块提供了许多概率分布的概率密度函数、累积分布函数、生成随机样本的方法等。通过使用这些函数,我们可以计算和分析各种概率分布下的随机变量的特征。例如可以计算正态分布、泊松分布或者二项分布的概率密度函数和累积分布函数,进而得到一些统计量如均值、方差、标准差等。这些统计量对于我们理解和描述随机现象的特征是非常重要的。 同时,Scipy中的stats模块还提供了统计检验的功能,可以通过对样本数据进行假设检验来判断某一假设是否成立。例如可以进行t检验、卡方检验或者ANOVA分析等,来判断两个样本的均值是否存在差异、不同类别间的分布是否独立等。这些检验方法对于从样本中获得的数据进行统计推断和决策具有重要的意义。 总而言之,Scipy库中的概率论与数理统计的应用功能,可以帮助我们对随机现象进行建模、分析和预测。通过Scipy库中的各种函数和方法,我们可以更好地理解和研究概率论与数理统计的相关问题,从而为实际问题的解决提供有力的数学工具和方法。 ### 回答2: 概率论与数理统计(scipy)是一种用于分析和解释随机现象的工具和方法。概率论是一门研究随机事件概率及其性质的学科,而数理统计则是通过收集、汇总、分析和解释数据来推断总体特征的学科。scipy是Python编程语言中常用的科学计算库之一,它提供了许多用于概率论和数理统计的函数和方法。 使用scipy进行概率论和数理统计分析可以帮助我们解决许多实际问题。例如,通过利用概率论和数理统计的方法,我们可以估计总体参数,比如平均值和方差,从而对总体进行推断。此外,我们也可以使用概率论和数理统计的方法来构建和评估模型,用于解释和预测随机现象。 scipy库中的一些常用函数和方法包括: 1. 概率分布函数:scipy提供了许多概率分布函数的实现,如正态分布、二项分布、泊松分布等。这些函数可以用于计算概率密度函数、累积分布函数和随机变量的抽样。 2. 统计函数:scipy提供了一些常用的统计函数,如均值、方差、标准差等。这些函数可以用于计算样本数据的统计量。 3. 假设检验scipy提供了许多常用的假设检验方法,如t检验、卡方检验和方差分析等。这些方法可以用于判断样本数据是否与某个假设相符。 4. 回归分析:scipy中的线性回归函数可以用于拟合数据,并估计回归系数的值。这可以帮助我们建立数据和变量之间的关系模型。 总之,概率论与数理统计(scipy)是一个强大的工具,它为我们提供了许多用于分析和解释随机现象的函数和方法。通过利用这些函数和方法,我们可以进行各种概率论和数理统计分析,从而帮助我们理解和解决实际问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值