Grâce à cette page, j'ai trouvé comment faire un tableau présentant pour plusieurs variables les test-t (Welch) de différences de moyennes et les tests de Wilcoxon : https://stackoverflow.com/questions/25383570/apply-t-test-and-wilcoxon-test-on-several-variables-in-a-table
Code : Tout sélectionner
## using am as the grouping variable
data.frame(stats_t = apply(subset(mtcars, select=-am), 2, function(y) t.test(y ~ mtcars$am)$statistic),
p_t = apply(subset(mtcars, select=-am), 2, function(y) t.test(y ~ mtcars$am)$p.value),
stats_w = apply(subset(mtcars, select=-am), 2, function(y) wilcox.test(y ~ mtcars$am, exact = FALSE)$statistic),
p_w = apply(subset(mtcars, select=-am), 2, function(y) wilcox.test(y ~ mtcars$am, exact = FALSE)$p.value)
)
Maintenant j'aimerais me faire un tableau avec les tests de normalité sur des variables quantitatives par sous-population de mtcars$am
J'arrive à le faire pour une variable mais pas à lancer le travail pour toutes les variables
Code : Tout sélectionner
tapply(mtcars$mpg, INDEX = mtcars$am,
FUN = shapiro.test)
Est-ce que ce serait possible de faire un data.frame joli avec 1 colonne du nom de variables, 1 colonne de la stat de Shapiro du 1er groupe, 1 colonne sa p-value, 1 colonne de la stat de Shapiro pour le 2e groupe, et une colonne pour la p-value du 2è groupe ?
Dans la même lignée j'aimerais faire des tests de différence de proportions/contingence
Code : Tout sélectionner
mtcars$vs2 <- mtcars$vs
contin.vs <- table(mtcars$vs, mtcars$am)
contin.vs
prop.table(contin.vs, margin = 1)
fisher.test(contin.vs)
# mais je n'arrive pas à généraliser pour la suite :
apply(subset( mtcars[,c("vs","vs2")]), 2, function(y) fisher.test(table(mtcars$am, y)$estimate)
apply(subset( mtcars[,c("vs","vs2")]), 2, function(y) fisher.test(table(mtcars$am, y)
tab.fishertest <- data.frame(
oddsratio = apply(subset(mtcars[, c("vs","vs2")]), 2, function(y)
fisher.test(table(mtcars$am, y)$estimate), # le 2 veut dire à appliquer sur les colonnes
p_t = apply(subset(mtcars[, c("vs","vs2" )]), 2, function(y)
fisher.test(table(mtcars$am, y)$p.value))
)
Merci d'avance pour votre aide