Test T de Student par permutations pour R

Posté par Timothée le 9 May 2008 dans , , Pas de commentaires

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)
}

Timothée is
| All posts by Timothée

This entry was posted on Friday, May 9th, 2008 at 3:35 pm and is filed un Outils (et geekeries), Tous les billets der . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

-->

Commenter


Sitemap