Données avec un dsitribution quadratique


#1

Bonjour,

J’ai des données qui mesurent le degré de nasalité des phonèmes.
Les valeurs varie entre 0 (pas de nasalité) et 1 (phonème totalement nasalisé).
J’ai 2 groupes de locuteurs : méridionaux (ME) et non méridionaux (NM).
Or, les données sont distribuées en U (beaucoup de valeurs en 0 et en 1)

     mean        sd nas:n

ME 0.3485534 0.3882421 338
NM 0.6293681 0.3450841 391

image

image

Gros problème de non normalité !

Que faire ?
Une transformation en arc sinus n’apporte pas grand-chose car les valeurs aux bornes restent massivement aux bornes.


#2

Salut Alain,

Lorsque les distributions à tester ne sont pas normales, ni centrées, comme c’est le cas ici, on peut toujours utiliser les tests non-paramétriques généraux comme le test de Kolmogorov-Smirnov.

Comme exemple, j’ai simulé (dans R) deux groupes qui ont des distributions bimodales différentes.

##Distribution bimodale pour le groupe ME
##100 valeurs v (70 distribuées normalement autour de 0.1 avec une dispersion de 0.1, 30 autour de 0.9 avec une dispersion de 0.1)
s11 <- rnorm(70, 0.1, 0.1)
s21 <- rnorm(30, 0.9, 0.1)
v <- c(s11, s21)
dfME <- data.frame(v)
groupe <- rep("ME", 100)
##Dans df1, les 100 valeurs v et le groupe ME
df1 <- data.frame(v, groupe)

##Distribution bimodale pour le groupeNM
##100 valeurs v (20 distribuées normalement autour de 0.1 avec une dispersion de 0.2, 80 autour de 0.9 avec une dispersion de 0.2)
s12 <- rnorm(20, 0.1, 0.2)
s22 <- rnorm(80, 0.9, 0.2)
v <- c(s12, s22)
dfMN <- data.frame(v)
groupe <- rep("NM", 100)
##Dans df2, les 100 valeurs v et le groupe NM
df2 <- data.frame(v, groupe)

##Dans df, les valeurs v pour les deux groupes
df <- rbind(df1, df2)

Les distributions sont différentes pour les deux groupes (voir la figure ci-dessous).

library(ggplot2)
ggplot(df, aes(x=v, fill=groupe)) + geom_density(alpha=0.4)

image

Les boxplots semblent bien différentes mais on ne peut pas appliquer les tests standards car la distribution des résidus n’est pas gaussienne.

ggplot(df, aes(x=groupe, y=v, color=groupe)) + geom_boxplot()

image

Le test de Kolmogorov-Smirnov mesure la différence maximale D entre les deux CDF (empirical cumulative distribution function) et donne le risque que cette différence soit due à la chance (c’est-à-dire aux fluctuations statistiques compte tenu de la taille de l’échantillon).

les deux CDF pour notre exemple:

ggplot(df, aes(x = v, group = groupe, color = groupe)) + stat_ecdf(size=1) + ylab("Cumulative Distribution Function")

image

Pour notre exemple, le test de Komogorov-Smirnov dans R donne:

vME <- df$v[df$groupe=="ME"]
vNM <- df$v[df$groupe=="NM"]
ks.test(vME, vNM)

Et le résultat nous indique que les deux groupes ont bien des distributions différentes:

Two-sample Kolmogorov-Smirnov test
data: vME and vNM
D = 0.52, p-value = 3.612e-12
alternative hypothesis: two-sided

Ca doit marcher aussi pour tes données. Pour être plus précis, c’est-à-dire pour décrire en quoi les distributions des deux groupes sont différentes, il faut modéliser les données et notamment essayer d’expliquer pourquoi ces distributions sont bimodales (ici distribution quadratique en U, https://en.wikipedia.org/wiki/U-quadratic_distribution).

A+, Stéphane.


#3

Bonjour

Une autre option pourrait être un test non paramétrique par permutation:

1.Calculer la statistique d’intérêt sur les données naturelles
2.Permuter aléatoirement les deux conditions, calculer à nouveau la statistique d’intérêt avec les conditions permutées,
3.Répéter la permutation et le calcul N fois (p.ex. N= 100 ou 1000).
4.Comparer la valeur naturelle de la stat à la distribution issues des conditions permutées et utiliser un seuil.

En anglais: permutation tests.

Bonne journée, Xavier