Open jeanbaptisteb opened 1 year ago
Tout à fait d'accord sur l'idée que s'appuyer sur les objets Pandas catégoriels pourraient faciliter ce traitement. Je vais voir à refactoriser le code autour de ça. Je l'avais pas initialement fait car certaines erreurs spécifiques peuvent arriver sur la gestion d'objet Categories qui sont peu utilisés par ceux qui débutent avec Pandas (ou du moins était-ce mon impression). Mais ça permettrait de renforcer la stabilité du code je pense, donc c'est l'occasion.
Les exemples donnés dans la documentation (Exemple PySHS.ipynb) ne tirent pas partie de la fonction native de pandas qui permet de donner un ordre aux modalités d'une variable catégorielle.
Plutôt qu'ajouter un numéro devant les variables, on peut les trier explicitement selon un ordre qui sera pris en compte lorsqu'on fait un tableau croisé. Pour reprendre un des exemples de la doc, en l'adaptant :
Ce qui donne, quand on fait un tableau croisé avec la fonction pandas.crosstab :
pd.crosstab(data["interetscience"], data["genre"])
Les modalités de
interetscience
sont bien triées selon l'ordre qu'on leur a donné, et non selon l'ordre alphabétique. Voir aussi la documentation officielle de pandas pour plus de détails sur cette fonction pour les variables ordinales.Je ne sais pas si prendre cela en compte nécessite simplement une mise à jour de la documentation, ou si ça nécessite aussi de revoir la logique du code de la librairie, je n'ai pas fouillé.
Intérêt de cette méthode :
interetscience
en variable à expliquer et la variablegenre
comme variable explicative :Résultat:
Voir la documentation de statsmodels pour plus d'informations sur la régression ordinale (mais ça sort un peu du cadre de ce ticket).