Closed jeanbaptisteb closed 1 year ago
Merci pour ce super retour ! C'est une excellente idée, et oui j'avais lu quelques travaux sur les distrorsions mais dans la mesure où ces précautions ne sont que très rarement prises dans les travaux que je lis, je n'avais pas cherché plus loin en première approche. Et je n'avais pas vu le package samplics qui a l'air excellent. Je vais voir samplics et intégrer ça (si tu veux faire une pull request et/ou rejoindre le maintien de ce package, tu es le bienvenu :)
Pour le maintien du package, faire des pull requests, etc., sur le principe totalement partant et je le garde en tête, ma limite va être surtout mon temps dispo!
Même combat, c'était juste pour signaler :)
Suite à la proposition, j'ai modifié pour que le test soit effectivement fait par la bibliothèque samplics (thanks @MamadouSDiallo for developping this package), potentiellement à terme refactoriser pour reposer sur cette bibliothèque si elle est maintenue ET/OU extraire ce test comme une fonction autonome, à verser sur statsmodel ?
D'abord merci pour ce package, très bonne initiative.
D'après ce que je vois dans le code et le documentation, la fonction
tableau_croise
applique le test "standard" du Chi2 à un tableau croisé, y compris quand celui-ici a des poids appliqués à chaque observation.Documenttion:
pyshs.tableau_croise(data,"genre","interetscience","poids1")
Code concerné dans la fonction
tableau_croise
:[...]
D'après les travaux de plusieurs auteurs, appliquer un test du chi2 "standard" à des données pondérées par des poids introduit des biais. Par exemple d'après Thomas et al.: "It is well known that significance levels can be severely distorted (usually inflated) when classical statistical methods designed for i.i.d. data are applied to data drawn from complex sample surveys". En gros cela augmente fortement le risque d'avoir des p-values incorrectes.
S'il y a des poids attribués aux observations, il faut idéalement utiliser un test du Chi2 auquel on applique une correction dite de "Rao-Scott". Ce n'est pas du tout trivial à implémenter, et il existe deux variantes de cette correction ("correction de premier ordre" et "correction de second ordre").
Il existe des implémentations de cette correction dans les logiciels commerciaux (SAS) dans R (package survey) et surtout ce qui nous intéresse ici en Python avec le package samplics. Le package pourrait être utilisé ici pour gagner du temps, plutôt que de faire une réimplémentation; exemple ici, section "Two-way tabulation"). Il me semble que le développeur de samplics est preneur de retours sur sa librairie, donc faire quelques tests avant de l'utiliser dans
pyshs
pourrait être bénéfique pour les deux librairies.