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