美文网首页
让我们荡起双桨,重新认识一下p值

让我们荡起双桨,重新认识一下p值

作者: 小洁忘了怎么分身 | 来源:发表于2020-11-06 17:56 被阅读0次

    在正文之前先分享一点生活故事:

    上周天傍晚,我闪着腰了,躺了一晚上不见好,发朋友圈寻医问药了:



    因为做的是生信分享,我朋友圈里医学生和医生非常多,我想看他们怎么说。
    我收到了几十条回复,分享一下给大家,就当拿我的教训给大家涨涨经验吧,有备无患...

    1.关于为什么痛

    根据我的症状描述,多位医生/医学生指出这是腰肌劳损,多半是因为久坐姿势不对引起的,如果严重一点就会发展成为小关节紊乱,再不注意,过几年会发展成腰椎间盘突出(啊吓死了。)

    2.关于去不去医院

    大多数医生/医学生说得去医院,也有几位说不用去医院,在家躺着休息,感觉有麻木、牵拉感再去医院。

    3.关于挂什么科

    先要去骨科或者脊柱外科,要拍个片子确认一下没有伤到骨头,也有人说做MR(核磁共振成像);然后去针灸/推拿/理疗/疼痛/康复科,针灸和推拿都是有效的,有针灸科的医学生说,这个一针见效。不能针灸的话,那就是中医正骨推拿,也能搞定,不过大家都说推拿不是谁都可以,要有经验的老中医才行。

    关于拍片子,有朋友指出我这个是弯腰岔气,不是摔的或者碰的,没有伤到骨头,不拍也行,拍了放心。

    4.病例本例现身说法

    知道了推拿可以治这回事,我查了一下家长,附近有个中医推拿馆,我就打了电话过去,他们详细询问了我的症状,问是不是久坐,以前有没有出现过轻的腰部不适症状,我说是的。她说可以过去,推拿能搞定。最后没有拍片子,一个小时的推拿基本缓解了疼痛,本来无法弯腰,坐下就痛,按完可以弯腰了,还有一些不适的感觉,但是明显缓解。

    发现了没,我的朋友圈可太优秀了吧!剧透一波,双十一我要在公众号为我朋友圈里的单身男女们发布一下征友信息,敬请关注哈哈


    以下是正文

    1.p值是不是概率?

    P value is the probility that rendom chance generated the data, or something else that is equal or rarer.

    也就是说,p值由三部分概率组成:目标事件概率+(与目标事件概率相同的事件)的概率+(比目标事件概率更小的事件)的概率。

    顺便补充两个R语言的函数,choose和combn。

    choose(5,1)
    
    ## [1] 5
    
    choose(5,2)
    
    ## [1] 10
    
    choose(5,3)
    
    ## [1] 10
    
    choose(5,4)
    
    ## [1] 5
    
    choose(5,5)
    
    ## [1] 1
    

    choose(5,3)表示从五个数中抽取三个,有多少种可能,返回具体数值。

    combn(1:5,1)
    
    ##      [,1] [,2] [,3] [,4] [,5]
    ## [1,]    1    2    3    4    5
    
    combn(1:5,2)
    
    ##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
    ## [1,]    1    1    1    1    2    2    2    3    3     4
    ## [2,]    2    3    4    5    3    4    5    4    5     5
    
    combn(1:5,3)
    
    ##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
    ## [1,]    1    1    1    1    1    1    2    2    2     3
    ## [2,]    2    2    2    3    3    4    3    3    4     4
    ## [3,]    3    4    5    4    5    5    4    5    5     5
    
    combn(1:5,4)
    
    ##      [,1] [,2] [,3] [,4] [,5]
    ## [1,]    1    1    1    1    2
    ## [2,]    2    2    2    3    3
    ## [3,]    3    3    4    4    4
    ## [4,]    4    5    5    5    5
    
    combn(1:5,5)
    
    ##      [,1]
    ## [1,]    1
    ## [2,]    2
    ## [3,]    3
    ## [4,]    4
    ## [5,]    5
    

    combn(1:5,3)表示从五个数中抽取3个,列出所有可能(矩阵形式)

    2.计算实例一,扔两个硬币

    结果为HH的概率和p值

    (H:head,T:tail)

    随机抛两次硬币,HH、TT的概率都是1/4,HT的概率是1/2。

    根据三个组成部分,可以计算出HH的p值:1/4 + 1/4 + 0 = 1/2 = 0.5

    结果为HT的概率和p值

    顺序通常没什么用,在这里,不考虑顺序,HT和TH是一样的。概率为1/2。

    p值是 1/2 + 1/4 + 1/4 = 1

    3.计算实例二,扔五个硬币

    五个硬币,总共有32种可能:

    除了五正、五反两种情况,其他的30种是:

    library(stringr)
    lapply(1:4, function(n){
      k = combn(1:5,n)
      sapply(1:ncol(k), function(x){
        y = rep("H",5)
        y[k[,x]] = "T"
        return(paste(y,collapse = ""))
      })
    })
    
    ## [[1]]
    ## [1] "THHHH" "HTHHH" "HHTHH" "HHHTH" "HHHHT"
    ## 
    ## [[2]]
    ##  [1] "TTHHH" "THTHH" "THHTH" "THHHT" "HTTHH" "HTHTH" "HTHHT" "HHTTH" "HHTHT"
    ## [10] "HHHTT"
    ## 
    ## [[3]]
    ##  [1] "TTTHH" "TTHTH" "TTHHT" "THTTH" "THTHT" "THHTT" "HTTTH" "HTTHT" "HTHTT"
    ## [10] "HHTTT"
    ## 
    ## [[4]]
    ## [1] "TTTTH" "TTTHT" "TTHTT" "THTTT" "HTTTT"
    

    可以看到上面生成的结果是一个列表,分了四组,分别代表有1、2、3、4个T的所有情况。

    五个正面朝上的概率和p值

    HHHHH的概率:(1/2)^5 = 1/32,TTTTT与之概率相等,不存在比1/32概率更小的事件。

    HHHHH的p值:1/32 + 1/32 + 0 = 0.0625

    虽然五个H的几率很小,但是p值>0.05,不认为是非常罕见的事件。

    四正一反的概率和p值

    四正一反的概率:choose(5,1)/(2^5) = 5/32

    与目标事件相等的事件是四反一正,比目标事件概率更小的是五正和五反,所以p值是:

    5/32 + 5/32 + 1/32 + 1/32 = 0.375

    4.连续型的数据如何计算p值

    例如身高,无法穷举所有的可能性。

    密度图曲线下的面积代表横坐标对应范围事件发生的概率

    生成示例图,身高的正态分布曲线,均值约为155.5

    library(ggplot2)
    x = seq(130,180,0.1)
    df = data.frame(x = x,
                     y = dnorm(x,mean = 155.5,sd = 7),
                     gro = ifelse(x< 142,"A",ifelse(x >= 169,"C","B")))
    ggplot(df, aes(x = x,y = y)) +
      geom_line() + theme_bw()
    
    image.png

    R语言如何计算曲线下的面积?我找到了一个积分函数,奇怪的知识增加了

    连续型数据的概率

    小于142cm:

    integrate(function(x){dnorm(x=x,mean = 155.5,sd = 7)}, -Inf, 142)
    
    ## 0.02689204 with absolute error < 8.3e-06
    

    大于169cm:

    integrate(function(x){dnorm(x=x,mean = 155.5,sd = 7)}, 169, Inf)
    
    ## 0.02689204 with absolute error < 8.3e-06
    

    介于142~169cm之间

    integrate(function(x){dnorm(x=x,mean = 155.5,sd = 7)} , 142 , 169)
    
    ## 0.9462159 with absolute error < 6.7e-12
    

    R语言是个好玩具,还可以画出相应的图(面积图)

    ggplot(df, aes(x = x)) +
      geom_line(aes(y = y)) +
      geom_area(data = df[df$gro == "A",],aes(y = y), fill = 'blue',color = NA,alpha = 0.5)+
      geom_area(data = df[df$gro == "B",],aes(y = y), fill = 'red',color = NA,alpha = 0.5)+
      geom_area(data = df[df$gro == "C",],aes(y = y), fill = 'blue',color = NA,alpha = 0.5)+
      theme_bw()
    
    image.png

    重申一下,面积就是概率啊。

    连续型数据的p值

    再来看p值,身高小于142的p值如何计算?

    身高>169和<142概率相等,没有比<142更加小概率的事件。所以p值为0.027*2 = 0.054

    身高为142~169之间的p值:

    0.946 + 0.027*2 = 1

    0.946 是目标事件的概率,两个0.027是(比目标事件概率更小的事件)的概率。

    区分p值和概率的极端例子

    身高介于155~156之间的概率是:

    integrate(function(x){dnorm(x=x,mean = 155.5,sd = 7)} , 155 , 156)
    
    ## 0.05694333 with absolute error < 6.3e-16
    

    面积图:

    df2 = data.frame(x = x,
                     y = dnorm(x,mean = 155.5,sd = 7),
                     gro = ifelse(x< 155,"A",ifelse(x >= 156,"C","B")))
    ggplot(df2, aes(x = x)) +
      geom_line(aes(y = y)) +
      geom_area(data = df2[df2$gro == "B",],aes(y = y), fill = 'red',color = NA,alpha = 0.5)+
      theme_bw()
    
    image.png

    概率只为0.057,但p值呢?

    目标事件概率是0.057,比目标事件概率更小的事件概率?因为155~156 处在正态分布的中位数附近,所以他的概率是最大的,身高落在所有的其他范围内的概率都比155~156要低,所以p值等于0.057+(1-0.057)=1

    相关文章

      网友评论

          本文标题:让我们荡起双桨,重新认识一下p值

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