基于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 = %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) 

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

你可能感兴趣的:(基于python的显著性检验)