美文网首页
基于python的显著性检验

基于python的显著性检验

作者: 三千清华少女的梦 | 来源:发表于2017-05-09 16:27 被阅读0次

    需要用到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的显著性检验

          本文链接:https://www.haomeiwen.com/subject/hoztmttx.html