Je veux faire une prédiction du résultat des élections législatives. Ma sortie sera le% que chaque partie reçoit. Il y a plus de 2 partis, la régression logistique n'est donc pas une option viable. Je pourrais faire une régression distincte pour chaque parti mais dans ce cas, les résultats seraient en quelque sorte indépendants les uns des autres. Cela ne garantirait pas que la somme des résultats serait de 100%.
Quelle régression (ou autre méthode) dois-je utiliser? Est-il possible d'utiliser cette méthode en R ou Python via une bibliothèque spécifique?
Réponses:
Robert a raison, la régression logistique multinomiale est le meilleur outil à utiliser. Bien que vous deviez avoir une valeur entière représentant la partie comme variable dépendante, par exemple:
1 = majorité conservatrice, 2 = majorité travailliste, 3 = majorité libérale ... (et ainsi de suite)
Vous pouvez effectuer cela dans R à l'aide du package nnet. Voici un bon endroit pour parcourir rapidement comment l'utiliser.
la source
Sur quoi voulez-vous baser votre prédiction? J'ai essayé de prédire les résultats des élections multipartites pour ma thèse sur la base des années précédentes, puis en utilisant les résultats de certains bureaux de vote de cette année pour prédire les résultats dans tous les autres bureaux de vote. Pour cela, le modèle linéaire avec lequel j'ai comparé a estimé le nombre de votes que chaque parti obtiendrait en régressant par rapport aux votes des années précédentes. Si vous avez le nombre estimé de votes pour tous les partis, vous pouvez calculer le pourcentage à partir de cela. Voir Prévisions à partir d'échantillons non aléatoires pour le document pertinent, qui étend le modèle linéaire.
la source
Ce n'est pas une régression mais un problème de classification multi-classes. La sortie correspond généralement aux probabilités de toutes les classes pour une instance de test donnée (ligne de test). Donc, dans votre cas, la sortie pour une ligne de test donnée du modèle formé sera de la forme:
où prob_i dénote la probabilité de la i-ème classe (dans votre cas i-ème partie), en supposant qu'il y a k classes dans la variable de réponse. Notez que la somme de ces k probabilités va être 1. La prédiction de classe dans ce cas va être la classe qui a la probabilité maximale.
Il existe de nombreux classificateurs dans R qui effectuent une classification multi-classes. Vous pouvez utiliser la régression logistique avec un support multi-classe via le package nnet dans R et en appelant la
multinom
commande.Comme alternative, vous pouvez également utiliser le package gbm dans R et appeler la
gbm
commande. Pour créer un classificateur multi-classes, utilisezdistribution="multinomial" while using the
simplement la fonction gbm`.la source