Quelle régression utiliser pour calculer le résultat d'une élection dans un système multipartite?

11

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?

Viktor
la source
Si vous êtes autorisé à changer votre sortie en binaire (selon la partie qui a gagné), la régression logistique multinomiale est un bon choix. Il considère toujours une sortie indépendante qui peut ne pas être ce que vous voulez.
Robert Smith

Réponses:

5

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.

Glen Moutrie
la source
3

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.

Bas
la source
2

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:

prob_1, prob_2, prob_3,..., prob_k

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 multinomcommande.

Comme alternative, vous pouvez également utiliser le package gbm dans R et appeler la gbmcommande. Pour créer un classificateur multi-classes, utilisez distribution="multinomial" while using thesimplement la fonction gbm`.

Nitesh
la source