Chcę przewidzieć wynik wyborów parlamentarnych. Mój wynik to% otrzymany przez każdą ze stron. Istnieje więcej niż 2 strony, więc regresja logistyczna nie jest realną opcją. Mógłbym dokonać osobnej regresji dla każdej ze stron, ale w takim przypadku wyniki byłyby w pewien sposób niezależne od siebie. Nie zapewniłoby to, że suma wyników wynosiłaby 100%.
Jakiej regresji (lub innej metody) powinienem użyć? Czy można używać tej metody w języku R lub Python za pośrednictwem określonej biblioteki?
Odpowiedzi:
Robert ma rację, wielomianowa regresja logistyczna jest najlepszym narzędziem do użycia. Chociaż musisz mieć wartość całkowitą reprezentującą imprezę jako zmienną zależną, na przykład:
1 = większość konserwatywna, 2 = większość robotnicza, 3 = większość liberalna .... (i tak dalej)
Możesz to zrobić w R, używając pakietu nnet. Oto dobre miejsce, aby szybko przekonać się, jak z niego korzystać.
źródło
Na czym chcesz oprzeć swoje prognozy? Próbowałem przewidzieć wyniki wyborów dla wielu osób na podstawie mojej pracy magisterskiej na podstawie poprzednich lat, a następnie wykorzystując wyniki dla niektórych lokali wyborczych z tego roku, przewidział wyniki we wszystkich innych lokalach wyborczych. W tym celu w modelu liniowym, z którym porównałem, oszacowano liczbę głosów, jaką każda partia uzyskałaby, cofając się względem głosów z poprzednich lat. Jeśli masz szacunkową liczbę głosów dla wszystkich stron, możesz obliczyć procent z tego. Zobacz Prognozy z nielosowych próbek dla odpowiedniego papieru, który rozszerza model liniowy.
źródło
To nie jest regresja, ale problem klasyfikacji wielu klas. Dane wyjściowe to zazwyczaj prawdopodobieństwa wszystkich klas dla dowolnej instancji testowej (wiersza testowego). W twoim przypadku dane wyjściowe dla dowolnego wiersza testowego z wyuczonego modelu będą miały postać:
gdzie prob_i oznacza prawdopodobieństwo i-tej klasy (w twoim przypadku i-tej strony), zakładając, że w zmiennej odpowiedzi istnieje k klas. Zauważ, że suma tych k prawdopodobieństw będzie wynosić 1. Prognozą klasy w tym przypadku będzie klasa o najwyższym prawdopodobieństwie.
Istnieje wiele klasyfikatorów w R, które dokonują klasyfikacji wielu klas. Można użyć regresji logistycznej z obsługą wielu klas poprzez pakiet nnet w R i wywoływanie
multinom
polecenia.Alternatywnie możesz również użyć pakietu gbm w R i wywołać
gbm
polecenie. Aby utworzyć klasyfikatordistribution="multinomial" while using the
wieloklasowy , wystarczy użyć funkcji gbm`.źródło