web-dev-qa-db-fra.com

Test du chi carré en Python

Je voudrais exécuter un test chi carré en Python. J'ai créé du code pour ce faire, mais je ne sais pas si ce que je fais est bien, car les documents scipy sont assez rares.

Antécédents d'abord: j'ai deux groupes d'utilisateurs. Mon hypothèse nulle est qu'il n'y a pas de différence significative quant à savoir si les personnes dans l'un ou l'autre groupe sont plus susceptibles d'utiliser un ordinateur de bureau, un mobile ou une tablette.

Ce sont les fréquences observées dans les deux groupes:

[[u'desktop', 14452], [u'mobile', 4073], [u'tablet', 4287]]
[[u'desktop', 30864], [u'mobile', 11439], [u'tablet', 9887]]

Voici mon code en utilisant scipy.stats.chi2_contingency :

obs = np.array([[14452, 4073, 4287], [30864, 11439, 9887]])
chi2, p, dof, expected = stats.chi2_contingency(obs)
print p

Cela me donne une valeur de p de 2.02258737401e-38, ce qui est clairement significatif.

Ma question est: ce code semble-t-il valide? En particulier, je ne sais pas si je devrais utiliser scipy.stats.chi2_contingency ou scipy.stats.chisquare , compte tenu des données dont je dispose.

14
Richard

Vous utilisez chi2_contingency correctement. Si vous n'êtes pas certain de l'utilisation appropriée d'un test du chi carré ou de la façon d'interpréter son résultat (c'est-à-dire que votre question concerne les tests statistiques plutôt que le codage), envisagez de le poser sur le site "CrossValidated": https: //stats.stackexchange.com/

5
Warren Weckesser

Je ne peux pas trop commenter sur l'utilisation de la fonction. Cependant, le problème en question peut être de nature statistique. La très petite valeur de p que vous voyez est très probablement le résultat de vos données contenant de grandes fréquences (de l'ordre de dix mille). Lorsque la taille des échantillons est trop grande, toute différence devient significative - d'où la petite valeur de p. Les tests que vous utilisez sont très sensibles à la taille de l'échantillon. Voir ici pour plus de détails.

3