testRunif <- function(nbEssais=10,nbValeurs=50) { ## 1. génération des valeurs aléatoires # remplissage de la matrice des résultats matRes <- matrix(nrow=nbEssais,ncol=nbValeurs) row.names(matRes) <- paste("essai",sprintf("%03d",1:nbEssais),sep="") for (idl in (1:nbEssais)) { matRes[idl,] <- runif(nbEssais) } # fin pour idl cat("\nextrait des tirages aléatoires\n") print(matRes[(1:5),(1:3)]) ## 2. analyse des valeurs aléatoires # si la répartition est uniforme, on doit avoir # autant de valeurs avant 0.5 qu'àprès 0.5 repVal <- as.data.frame(matrix(nrow=nbEssais,ncol=4)) names(repVal) <- c("nbVal avant 0.5","nbVal Après 0.5","p-value","code sig.") for (idl in (1:nbEssais)) { repVal[idl,1] <- sum( matRes[idl,] < 0.5 ) # valeurs avant repVal[idl,2] <- sum( matRes[idl,] > 0.5 ) # valeurs après # la différence est-elle significative ? pvalue <- binom.test( as.numeric(repVal[idl,(1:2)]), p=1/2 )$p.value repVal[idl,3] <- sprintf("%13.7f",pvalue) repVal[idl,4] <- as.sigcode(pvalue) } # fin pour idl # affichage (extrait) cat("\nextrait des résultats\n") print(repVal[(1:5),]) # autre façon de le vérifier : tester si la médiane # est égale à 0.5 # autre façon de le vérifier : tester si les médianes # sont égales # on renvoie le nombre de fois où la différence est significative nbSig <- sum(repVal[,3]<0.05) return( nbSig) } # fin de fonction testRunif