基于python的显著性检验

需要用到numpy库

import numpy as np import scipy.stats as stats import scipy.optimize as opt

首先我们来创造两个数组作为测试数据
n = 200 norm_dist = stats.norm(loc=0.5, scale=10)#构造一个正态分布,均值为0.5,标准差为10“标准差”也称“均方差”,是“方差”开根号 dat = norm_dist.rvs(size=n)#随机取200个点 print ("mean of data is: " + str(np.mean(dat))) print ("median of data is: " + str(np.median(dat))) print ("standard deviation of data is: " + str(np.std(dat)))#因为这200个点是随机取得,所以跟原先的正态分布可能有一些不同

norm_dist2 = stats.norm(loc=0.2, scale=1) dat2 = norm_dist2.rvs(size=n/2)#随机取100个点 print ("mean of data is: " + str(np.mean(dat2))) print ("median of data is: " + str(np.median(dat2))) print ("standard deviation of data is: " + str(np.std(dat2)))

对这两个数组分析差异---双样本的t检验
stat_val, p_val = stats.ttest_ind(dat, dat2, equal_var=False) #看看两个分布在均值上有没有显著差异 #注意,这里我们生成的第二组数据样本大小、方差和第一组均不相等,在运用t检验时需要使用Welch's t-test #即指定ttest_ind中的equal_var=False。 print ('Two-sample t-statistic D = %6.3f, p-value = https://www.it610.com/article/%6.4f' % (stat_val, p_val))

计算两个序列的相关性,并做显著性检验
import scipy.stats as stats x = [76,81,78,76,76,78,76,78,98,88,76,66,44,67,65,59,87,77,79,85,68,76,77,98,99,98,87,67,78] y = [43,33,23,34,31,51,56,43,44,45,32,33,28,39,31,38,21,27,43,46,41,41,48,56,55,45,68,54,33] r, p=stats.pearsonr(x,y) [out]:(0.39341862097439129, 0.034735931329532836)

【基于python的显著性检验】相关系数为0.39,说明这两个序列存在一定的相关性
p-value为0.035,说明结果是统计显著的

    推荐阅读