Test T de Student par permutations pour R

Mes tribulations mathématiques m’ont récemment poussé dans le monde assez fabuleux des tests par permutation, et je viens de consacrer une grosse demi heure à écrire pour R le test T de Student par permutations, pour m’affranchir de l’homogénéité des variances et de la normalité des données.

Vu que c’est du code qui peut servir, je le donne ici… Et éventuellement, ça permettra aux R-Guru qui traînent (j’espère) de vérifier que je ne me sois pas planté…

TTperm <- function(sample1,sample2,fac1='a',fac2='b',nperm=999){ require(car) stu<-t.test(sample1,sample2) stu.p<-stu$p.value stu.t<-stu$statistic stu.df<-stu$parameter count <- 1 result.stu <- matrix(rep(0,3),1) colnames(result.stu)=c("T statistic (Df)","Parametric p-value", "Permutations p-value") for(i in 1:nperm){ NAMES<-c(rep(fac1,length(sample1)),rep(fac2,length(sample2))) SAMPLE<-c(sample1,sample2) PERMNAMES<-sample(NAMES) MATR<-c(SAMPLE,PERMNAMES) MATR<-matrix(MATR,nrow=2,byrow=T) RS1<-RS2<-'' rownames(MATR)<-c('Value','Sample') for(rnk in 1:length(PERMNAMES)){ if(MATR['Sample',rnk]==fac1){ RS1<-c(RS1,as.real(MATR['Value',rnk])) } if(MATR['Sample',rnk]==fac2){ RS2<-c(RS2,as.real(MATR['Value',rnk])) } } RS1<-RS1[2:length(RS1)] RS2<-RS2[2:length(RS2)] stu.perm<-t.test(as.real(RS1),as.real(RS2)) stu.perm.p<-stu.perm$p.value stu.perm.t<-stu.perm$statistic if(abs(stu.perm.t) >= abs(stu.t)) {count <- count+1} } result.stu[1,1]=paste(round(stu.t,4),'(',round(stu.df,4),')',collapse='') result.stu[1,2]=round(stu.p,6) result.stu[1,3]=count/(nperm+1) return(result.stu) }

Partagez :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • blogmarks
  • Technorati
  • TwitThis
  • connotea
  • FriendFeed
  • Netvibes
  • Turn this article into a PDF!
  • Wikio FR

Billets similaires

0 Response to “Test T de Student par permutations pour R”


  • No Comments

Leave a Reply