在R中如何求给定分布和统计量的p-value

在知道了分布函数和相应的统计量后怎样得到p-value呢?用R可以很容易的实现,如下(来自<统计建模和R软件>)

  1. P_value <- function(cdf,x,paramet,side=0){
  2. n <-length(paramet)
  3. p <-switch(n+1,
  4. cdf(x),
  5. cdf(x,paramet),
  6. cdf(x,paramet[1],paramet[2]),
  7. cdf(x,paramet[1],paramet[2],paramet[3])
  8. )
  9. if(side <0) p
  10. else if(side >0) 1-p
  11. else
  12. if(p<1/2) 2*p
  13. else 2*(1-p)
  14. }

其中cdf是分布函数(下面会列出一些分布),

x是计算出来的统计量的值,如t分布中的t值,f分布中的f值,

paramet是分布的参数,如正态分布需要指定(mu,sigma),f分布需要指定(df1,df2),

side是指计算p值的类型,是单侧,还是双侧.

R中与各个分布对应的分布函数名称如下:

分布                      R中的名称                  参数

normal                 norm                         mean,sd

F                           f                                df1,df2,ncp

Student's t           t                                df,ncp

chi-squared         chisq                         df,ncp

uniform                unif                           min max

.............................................

更多的分布请见<统计建模和R软件>的P118.

注意:在上面计算p值的程序中,给定的分布名称应该加上p表示分布,如t分布应该写成pt,f分布应该是pf,正态分布是pnorm,更详细的请见R中,?pt()会告诉你非常具体的参数设置.

发表评论

匿名网友

拖动滑块以完成验证
加载失败