emilienschultz / pyshs-bib

MIT License
9 stars 4 forks source link

Question à propos de catdes #33

Closed PonteIneptique closed 2 years ago

PonteIneptique commented 2 years ago

Bonjour :)

Je vois que l'implémentation de catdes est récente, ce qui est cool vu que j'en avais besoin aujourd'hui.

J'ai plusieurs petites questions et remarques, en espérant que ce soit constructif.

Tout d'abord, en regardant simplement la signature de la fonction, j'ai été assez pertubé par les différentes valeurs False. En général, on a False quand l'alternative est True (dans mon expérience en dehors des stats du moins en python) tandis qu'on retrouve None pour les valeurs vides et optionelles (sachant que None a un équivalent booléen de False). Si ceci est une évidence, désolé :)

Ensuite, sur ce point, un petit peu de typing serait super pratique:

from typing import Optional

def catdes(
    df: pd.Dataframe,
     vardep: str,
     varindep: List[str] = None,
     proba: float = 0.05,
     weight: Optional[str] = False,
     mod : bool = False):

clarifie déjà pour moi beaucoup mieux, même si la docstring est très bonne :)

Enfin, en lançant sur une DF perso, et avec weight=False, j'ai un nombre important de

....env/lib/python3.10/site-packages/statsmodels/regression/linear_model.py:889: ValueWarning: Weights are not supported in OLS and will be ignoredAn exception will be raised in the next version.
  warnings.warn(msg, ValueWarning)
....env/lib/python3.10/site-packages/statsmodels/base/model.py:127: ValueWarning: unknown kwargs ['weights']
  warnings.warn(msg, ValueWarning)

ce qui semblerait indiquer que https://github.com/emilienschultz/pyshs-bib/blob/2e245e8ad479c112679f19480acdd037d283d1af/pyshs/_core.py#L942 est ignorée quoiqu'il arrive (?, je ne connais pas ols)

Sachant que je n'ai pas utilisé cette partie de la fonction, il me semble que soit une variable en dure est restée à l'implémentation, soit il y a des potentielles colonnes attendues qui ne sont pas documentées:

https://github.com/emilienschultz/pyshs-bib/blob/2e245e8ad479c112679f19480acdd037d283d1af/pyshs/_core.py#L1027-L1033

J'espère que cela sera utile :)

emilienschultz commented 2 years ago

Salut. Oui c'est de hier soir, et c'est encore vraiment maladroit comme traduction de R donc toute amélioration est la bienvenue. C'était initialement pour reproduire un traitement fait en R dans une logique de science reproductible ...

Merci beaucoup pour ce retour très ample, et justifié sur tous les points. Je vais modifié sauf si tu te sens de faire une PR !

(tu as trouvé la fonction comment d'ailleurs ?)

PonteIneptique commented 2 years ago

Salut. Oui c'est de hier soir, et c'est encore vraiment maladroit comme traduction de R donc toute amélioration est la bienvenue. C'était initialement pour reproduire un traitement fait en R dans une logique de science reproductible ...

Et c'est génial. Si à un moment y a des gens qui veulent traduire la spécificité de lafon en python... Moi je me suis cassé les dents :)

Merci beaucoup pour ce retour très ample, et justifié sur tous les points. Je vais modifié sauf si tu te sens de faire une PR !

Je vais m'y tenter, sauf pour "sexe" où je ne vois pas quoi faire

(tu as trouvé la fonction comment d'ailleurs ?)

Google -> Twitter. Dans un moment de désespoir ;)

emilienschultz commented 2 years ago

Oui grosse erreur de variable en dure que j'ai laissé trainer... comme elle ne porte que sur les variables numériques, et que j'ai surtout validé sur les catégorielles, je l'ai pas vu passer.

"sexe" est la var_dep (la var de classes utilisées dans catdes)

Pas de souci pour le faire moi de mon côté, mais j'ai l'impression que tu l'as déjà fait pour toi donc c'est pour ça que je me dis autant récupérer ta réflexion ^^

emilienschultz commented 2 years ago

Tous les désespoires amènent sur Twitter, effectivement.

Quand tu dis la spécificité de lafon en python, c'est une métrique spécifique ? (je suis un peu ignorant sur ces questions...)

PonteIneptique commented 2 years ago

Quand tu dis la spécificité de lafon en python, c'est une métrique spécifique ? (je suis un peu ignorant sur ces questions...)

La seule chose que je peux dire c'est donner le lien: https://rdrr.io/cran/textometry/man/specificities.html C'est une mesure pour évaluer la spécificité d'un lexique, mais j'ai eu un problème de maths à l'époque (nombre trop important) et l'implémentation R m'a échappée.

emilienschultz commented 2 years ago

Ah oui, ça me disait quelque chose, je l'ai vu récemment mentionné dans l'HDR de Cointet que je survolais

La fréquence observée était alors comparée à une fréquence théorique attendue dont on suppose qu’elle suit une loi hypergéométrique (Lafon, 1980; Salem, 1988; Labbé et Labbé, 1994). Le résultat de la méthode des spécificités se présente sous la forme d’une liste de termes en sur- ou sous- représentation dans un segment du corpus (que l’on considère une partition temporelle ou dépendant du locuteur).

Bon il y a du boulot de traduction à faire on dirait ^^

PonteIneptique commented 2 years ago

Tentative de l'époque: https://github.com/PonteIneptique/py-lafon/blob/main/lafon.py

L'implémentation R semble utiliser une "arnaque" en maths pour éviter de gérer de "gros" chiffres ;) (on sent le non mathématicien ?)

PonteIneptique commented 2 years ago

Petite note sur catdes: il semble que la df en place 2 renvoie une feature weight sur laquelle est calculée eta-2 et p-value :)

emilienschultz commented 2 years ago

Je suis perdu là : tu parles de quelle morceau du code ? Un truc mal codé ?

PonteIneptique commented 2 years ago

Je suis perdu là : tu parles de quelle morceau du code ? Un truc mal codé ?

Alors j'ai pas de DF de test sous la main mais il semble que pour tout _, x = catdes(une_df, dep="unevariable") on obtienne un index tel que x["weight"] existe avec une eta 2 et p-value, ce qui signifierait que weight est pris en compte pour les calculs de p-values et d'eta-2 (?)

emilienschultz commented 2 years ago

C'est pas faux. Ca c'est un bug, j'ai pas bien géré le poids. Il faut le sortir dans la construction des variables numériques à tester. Je m'en occupe.

Le jeu. 21 juil. 2022 à 17:35, Thibault Clérice @.***> a écrit :

Je suis perdu là : tu parles de quelle morceau du code ? Un truc mal codé ?

Alors j'ai pas de DF de test sous la main mais il semble que pour tout _, x = catdes(une_df, dep="unevariable") on obtienne un index tel que x["weight"] existe avec une eta 2 et p-value, ce qui signifierait que weight est pris en compte pour les calculs de p-values et d'eta-2 (?)

— Reply to this email directly, view it on GitHub https://github.com/emilienschultz/pyshs-bib/issues/33#issuecomment-1191639700, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACABSTEX2JOM3B67EN4OCIDVVFU47ANCNFSM54H6BDHQ . You are receiving this because you commented.Message ID: @.***>

PonteIneptique commented 2 years ago

Merci pour la réactivité ;) Signing off pour la journée :)

emilienschultz commented 2 years ago

Ok, j'ai corrigé il ne devrait plus y avoir le poids J'ai mergé désolé j'avais fait n'imp Merci ++ pour ces correctifs ! Bonne soirée :)

Le jeu. 21 juil. 2022 à 17:41, Thibault Clérice @.***> a écrit :

Merci pour la réactivité ;) Signing off pour la journée :)

— Reply to this email directly, view it on GitHub https://github.com/emilienschultz/pyshs-bib/issues/33#issuecomment-1191645991, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACABSTHUO2JVIDRGHRJI7UTVVFVTBANCNFSM54H6BDHQ . You are receiving this because you modified the open/close state.Message ID: @.***>