zoukankan      html  css  js  c++  java
  • chapter 10 统计检验

    1.permutation test

     用途:用于检验两组数据是否出生于同一分布

     思路:如果产生于同一分布,两组数据混合,重新排列后,计算的基于两组数据的函数值(均值,中位数,方差等,下面程序中使用f指定)应该相差不大

     方法:

    library("gtools");
    permuTest<-function(g1,g2,f=mean){
      tobs<-abs(f(g1)-f(g2));
      
      lg1<-length(g1);
      lg2<-length(g2);
      perms<-combinations(n = lg1+lg2, r = lg1);
      B<-dim(perms)[1];
      
      tper<-0;
      data<-c(g1,g2);
      
      for(i in 1:B){
        tper<-tper+ifelse(abs(f(data[perms[i,]])-f(data[-perms[i,]]))>tobs,1,0);
      }
      return(tper/B);
    }
    

    2.Benjamini-Hochberg test

     用途:给定一组检验p值,在给定显著性水平下,哪些检验应该拒绝

     方法:

     

    BHTest<-function(p_values,alpha,unrelated=T){
      lp<-length(p_values);
      
      li<-(alpha/lp)*(1:lp);
      if(!unrelated){
        li<-li/sum(1/(1:lp));
      }
      
      sp_values<-sort(p_values);
      indexs<-1:lp;
      rejuctIndex<-max(indexs[sp_values<li]);
      
      rejuctThres<-sp_values[rejuctIndex];
      
      return(p_values<=rejuctThres)
    }
    

    3.比较 wald test likelihood ratio test

      

    compareWaldAndLikelihood_mu<-function(n=1000,mu=0,fai=1){
      d<-rnorm(n,mu,fai);
      est_mu<-mean(d);
      
      sd<-sd(d);
      
      estimator_likelihood<-(n*(mu^2-est_mu^2) + 2*sum(d)*(est_mu-mu))/sd^2;
      p_likelihood<-1-pchisq(estimator_likelihood,df=1);
      
      estimator_wald<-abs(est_mu-mu)*n^0.5/sd;
      p_wald<-2*pnorm(-estimator_wald,mean=mu,sd=sd);
      
      return(c(p_wald,p_likelihood));
    }
    

    ---恢复内容结束---

  • 相关阅读:
    Java基础学习(五) String类
    Java基础学习(四) java8线程
    Java基础学习(三) IO
    Java基础学习(二) 集合
    Java基础学习(一) 基本数据类型和引用数据类型
    枚举类常见漏洞解决
    数据校验
    postman如何传递token进行接口测试
    Spring Cloud-OpenFegin
    SpringCloud-Eureka
  • 原文地址:https://www.cnblogs.com/porco/p/4354116.html
Copyright © 2011-2022 走看看