Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4562518
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: IT业界

2020-09-29 17:17:23

https://blog.csdn.net/u011331731/article/details/72858416

最近见到p-value的频率有点高,之前也看到很多次了,基本当时懂了过几天就忘记了,整理下。


P值定义[from:百度百科]

P值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为有统计学差异, P<0.01 为有显著统计学差异,P<0.001为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于0.05 、0.01、0.001。实际上,P值不能赋予数据任何重要性,只能说明某事件发生的机率。

P值解释[from:百度百科]

P值

碰巧的概率

对无效假设

统计意义

P>0.05

碰巧出现的可能性大于5%

不能否定无效假设

两组差别无显著意义

P<0.05

碰巧出现的可能性小于5%

可以否定无效假设

两组差别有显著意义

P <0.01

碰巧出现的可能性小于1%

可以否定无效假设

两者差别有非常显著意义



P值的使用实例

实验考察一枚硬币是否均已。:

P:硬币是均匀的。

Q:在100次投掷中,得到90次正面,10次反面。

先说我们想证明什么?显然想证明硬币不均匀,把想证明的当作Ha,想证明的反面当作h0

在h0情况下得到Q(或者比Q更极端)的概率就是p-values,显然p-value越小,说明h0越“不靠谱”,也就是其反面ha(这里就是硬币不均匀)“相对更靠谱”。

所以p-value检验。思路上更类似“反证法”,但是不是严格逻辑反证,而是概率层面上的反证。通过假设出我们需要证明目标反面的情况。然后从情况推导出"出现最终观察现象"的概率非常低(5%)。就认为我们假设出的那个“证明目标反面的情况”不靠谱。从而证明“证明目标”是ok的。




参考:

标签归档:P-value:

P-Value P值的含义:http://www.cnblogs.com/emanlee/archive/2011/06/14/2080278.html






def data_trend(x, alpha=0.05):
    import numpy as np
    from scipy.stats import norm
    """
    :param x: 待检测数据序列
    :param alpha: 上升或下降趋势的显著性水平
    :return: 序列趋势
    """
    x = list(x)
    n = len(x)
    # calculate S
    s = 0
    for k in range(n - 1):
        for j in range(k + 1, n):
            s += np.sign(x[j] - x[k])
    # calculate the unique data
    unique_x, tp = np.unique(x, return_counts=True)
    g = len(unique_x)


    # calculate the var(s)
    if n == g: # there is no tie
        var_s = (n * (n - 1) * (2 * n + 5)) / 18
    else: # there are some ties in data
        var_s = (n * (n - 1) * (2 * n + 5) - np.sum(tp * (tp - 1) * (2 * tp + 5))) / 18


    if s > 0:
        z = (s - 1) / np.sqrt(var_s)
    elif s < 0:
        z = (s + 1) / np.sqrt(var_s)
    else: # s == 0:
        z = 0
    # calculate the p_value
    p = 2 * (1 - norm.cdf(abs(z))) # two tail test
    h = abs(z) > norm.ppf(1 - alpha / 2)


    if (z < 0) and h:
        trend = 'decreasing'
    elif (z > 0) and h:
        trend = 'increasing'
    else:
        trend = 'no trend'


    return trend

阅读(1801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~