Analyser les résultats des tests A / B qui ne sont pas normalement distribués, en utilisant un test t indépendant

13

J'ai un ensemble de résultats d'un test A / B (un groupe de contrôle, un groupe d'entités) qui ne correspondent pas à une distribution normale. En fait, la distribution ressemble plus à la distribution de Landau.

Je crois que le test t indépendant nécessite que les échantillons soient au moins approximativement normalement distribués, ce qui me décourage d'utiliser le test t comme méthode valide de test de signification.

Mais ma question est: à quel moment peut-on dire que le test t n'est pas une bonne méthode de test de signification?

Ou, autrement dit, comment qualifier la fiabilité des valeurs de p d'un test t, compte tenu uniquement de l'ensemble de données?

teebszet
la source

Réponses:

8

La distribution de vos données n'a pas besoin d'être normale, c'est la distribution d'échantillonnage qui doit être presque normale. Si la taille de votre échantillon est suffisamment grande, la distribution d'échantillonnage des moyennes de Landau Distribution devrait être presque normale, en raison du théorème de la limite centrale .

Cela signifie donc que vous devriez pouvoir utiliser t-test en toute sécurité avec vos données.

Exemple

Prenons cet exemple: supposons que nous ayons une population avec une distribution Lognormale avec mu = 0 et sd = 0,5 (cela ressemble un peu à Landau)

densité lognormale

Nous échantillonnons donc 30 observations 5000 fois à partir de cette distribution en calculant à chaque fois la moyenne de l'échantillon

Et c'est ce que nous obtenons

distribution d'échantillonnage

Ça a l'air tout à fait normal, non? Si nous augmentons la taille de l'échantillon, c'est encore plus apparent

distribution d'échantillonnage

Code R

x = seq(0, 4, 0.05)
y = dlnorm(x, mean=0, sd=0.5)
plot(x, y, type='l', bty='n')


n = 30
m = 1000

set.seed(0)
samp = rep(NA, m)

for (i in 1:m) {
  samp[i] = mean(rlnorm(n, mean=0, sd=0.5))
}

hist(samp, col='orange', probability=T, breaks=25, main='sample size = 30')
x = seq(0.5, 1.5, 0.01)
lines(x, dnorm(x, mean=mean(samp), sd=sd(samp)))


n = 300
samp = rep(NA, m)

for (i in 1:m) {
  samp[i] = mean(rlnorm(n, mean=0, sd=0.5))
}

hist(samp, col='orange', probability=T, breaks=25, main='sample size = 300')
x = seq(1, 1.25, 0.005)
lines(x, dnorm(x, mean=mean(samp), sd=sd(samp)))
Alexey Grigorev
la source
Salut, Alexei! Il semble que vous soyez compétent en R, donc je me demande si vous avez des conseils sur le problème avec lequel je suis actuellement coincé: stackoverflow.com/questions/25101444/… . Au-delà de cela, je serais ravi de vous contacter (voir aleksandrblekh.com pour mes profils sur les réseaux sociaux professionnels), car il semble que nous avons des intérêts communs (y compris la langue maternelle :-).
Aleksandr Blekh
C'est une excellente explication, et c'est en fait la méthode que j'ai fini par utiliser. J'aime à penser que cette méthode consiste à diviser l'ensemble de l'échantillon en sous-échantillons plus petits et à utiliser les moyennes (moyenne avec CLT) de chaque sous-échantillon comme distribution de l'ensemble de données. Merci d'avoir répondu!
teebszet du
1

Fondamentalement, un test t indépendant ou un test t à 2 échantillons est utilisé pour vérifier si les moyennes des deux échantillons sont significativement différentes. Ou, pour le dire autrement, s'il y a une différence significative entre les moyennes des deux échantillons.

Maintenant, les moyennes de ces 2 échantillons sont deux statistiques, qui selon CLT, ont une distribution normale, si suffisamment d'échantillons sont fournis. Notez que CLT fonctionne quelle que soit la distribution à partir de laquelle la statistique moyenne est construite.

Normalement, on peut utiliser un test z, mais si les variances sont estimées à partir de l'échantillon (car il est inconnu), une incertitude supplémentaire est introduite, qui est incorporée dans la distribution t. C'est pourquoi le test t à 2 échantillons s'applique ici.

rapaio
la source