m.test() une fonction R qui choisit les tests statistiques à réaliser

Une seule fonction qui choisit les test à faire pour vous ?

Langage R - Package {KefiR}

L'essentiel de cette page

Comparer les moyennes ? Comparer les médianes ? Un ou plusieurs échantillons ? Données discrètes ? Variances égales ?

m.test() du packages {KefiR} choisit le test pour vous et vous explique sa démarche.

  1. Installer la fonction m.test()

Code à copier-coller :

install.packages("devtools") ; require(devtools) # Risque d'erreur si RTools non installé.

devtools::install_github("Antoine-Masse/KefiR")

library("KefiR")

Si vous rencontrez une difficulté à l'installer avec R-Gui, passez sous RStudio, sinon le contraire !

2. Utiliser m.test()

data(iris)

library(KefiR)

Faire un test de base :

m.test(iris[,1],iris$Species)

2.1. Avoir accès à l'analyse détaillée avec verbose=T

m.test(iris[,1],iris$Species, verbose=TRUE, return=FALSE)

On peut définir le seuil de significativité/p-value qui va permettre de basculer d'un test vers un autre avec pval (qui vaut par défaut 0.05).

La sortie permet de voir que nous avons plusieurs catégories qui suivent la loi normale. Un test de batlett permet de contrôler que la variance de ces échantillons diffère d'un échantillon à l'autre, ce qui justifie un test de Welch's.

Sortie : 

1) Shapiro-Wilk test (shapiro.test()) - The samples follow the normal law. min(p-value): 0.2583147 

2) More than two categories.

3) Bartlett test (bartlett.test()) - Non-identical sample variances. p-value: 0.0003345076 

4) Welch’s heteroscedastic F test (oneway.test(var.equal=FALSE)) Significant differences between samples p-value: 1.505059e-28 

2.2. Avoir les groupes en sortie avec leur sortie contrôlée par bootstrap

m.test(iris[,2],iris$Species, return=TRUE, boot=TRUE)

Ce résultat de sortie, nous montre 3 groupes a, b et c significativement différents.

Un bootstrap permet de voir que la différence entre versicolor et virginica est plus fragile.

Sortie automatique de m.test() affichable ou non avec l'argument plot = FALSE ou plot = TRUE.

En effet, on est sensé trouvé les mêmes groupes dans $groups qu'avec bootstrap (dans $bootstrap$groups). Si ce n'est pas le cas, c'est que l'introduciton de hasard ne permet pas de retrouver les mêmes résultats dans 95% des cas (conf = 95%, on peut aussi changer cette valeur conf).

m.test() comparaison automatique des échantillons sous R

        Warning! Bootstrap detects weaknesses in the significance of the results.

$groups

  categories groups SNK

1     setosa      c   a

2 versicolor      a   c

3  virginica      b   b


$p.value

            versicolor    virginica

virginica 3.145180e-03           NA

setosa    5.497468e-17 9.077914e-10


$bootstrap

$bootstrap$groups

 categories   groups

 "setosa"     "b"   

 "versicolor" "a"   

 "virginica"  "a"   


$bootstrap$p.value

            versicolor    virginica

virginica 1.353924e-01           NA

setosa    5.757471e-13 1.942947e-06


2.3. comparer par rapport à un contrôle ou témoin

m.test(iris[,3],iris$Species, control="setosa" , boot=FALSE, verbose=FALSE, pval = 0.01)

Cette sortie nous permet de voir une différence très significative de versicolor et virginica par rapport à setosa.

$groups

 categories   groups

 "setosa"     ""    

 "versicolor" "***" 

 "virginica"  "***" 


$p.value

                 setosa   versicolor

versicolor 1.986887e-45           NA

virginica  2.780888e-49 4.900288e-22

3. Obtenir le code nécessaire pour faire l'analyse à la place de m.test()

m.test(iris[,3],iris$Species, code=TRUE, return=F)

Sortie obtenue permettant de faire le codage soi-même avec data, variable numérique et cat, variable de catégories.

by(data,cat,shapiro.test)#1)

length(unique(cat))#2)

bartlett.test(data,cat) #3)

oneway.test(data~cat,var.equal=FALSE) #4)

result <- pairwise.t.test(data,cat,pool.sd=FALSE)#5a)

library(KefiR)#5b)

catego(result)#5c)