Druga tura

Co jakiś czas dobiegają mnie, zarówno na FB, jak i od znajomych w pracy informacje o kolejnych „przełomach”. A to miazga w debacie, a to sufler, a to coś. I z utęsknieniem czekam, aż się to wszystko skończy. Nawet wiem, jak się skończy, ale o tym za chwilę.

Nie żebym się zupełnie wyborami nie interesował. Nawet dopisałem się do komisji wyborczej, czyli głosować pójdę. Ale żeby się tak podniecać? IMO nie ma sensu. Mieliśmy prezydenta z PiS, nic nie wybuchło (choć niektórzy twierdzą, że trotyl). Zresztą, prezydent to głównie funkcja reprezentacyjna. Ale jest jeszcze inny aspekt.

PO i PiS, wbrew temu, jak się je kreuje w mediach podkreślając różnice, to partie w praktyce dość podobne. Oczywiście w obietnicach przedwyborczych zawsze wielkie zmiany i złote góry, ale… kto pamięta zapowiedź likwidacji obowiązku meldunkowego? Się nie dało. Religia w szkole (zamiast w kościołach!) jest? Jest. Aborcja, legalizacja narkotyków – bez zmian. Znaczy: wybory prezydenckie wygra PO-PiS. I przez kolejne 5 lat nic się – przynajmniej w zakresie prezydenta – nie zmieni. Bo w ostatnich latach poglądy partii (w UK, u nas pewnie podobnie; wszystkich partii) przesunęły się mocno w prawo i w stronę autorytaryzmu.

Jakby ktoś dorwał listę oficjalnych poglądów politycznych partii/kandydatów, to jest dobra strona z mapą polityczną. I można sprawdzić swoje poglądy, przy okazji. No i jakby były „oficjalne” partyjne, to w sumie lepsze, niż to, co proponował Latarnik Wyborczy.  Mi się nie chce, szczególnie, że do poprawionego algorytmu Latarnika Wyborczego zajrzało raptem kilkanaście osób (a tak ładnie się zapowiadało po krytyce…). I w ogóle polecam ten wpis.

Nie, żeby w ogóle się nic nie działo, bo jakieś drobne zmiany są. Np. inicjatywa, którą rozkręcił przy okazji wyborów prezydenckich VaGla dot. publikacji umów cywilnoprawnych przez partie. No ale to jakby obok, przy okazji i jednak pozostaje póki co (i niestety stawiam, że tak zostanie, za duża stawka…) niszowym bólem w tylnej części ciała obu partii.

UPDATE Przypomniało mi się, że mam kawałek idealnie pasujący na tę okoliczność.

Na kogo głosować czyli Latarnik Wyborczy DIY

W poprzednim wpisie pokazałem, czemu nie należy zbytnio sugerować się wynikami zwracanymi przez Latarnika Wyborczego. Postanowiłem zrobić własną wersję algorytmu, która będzie wolna od opisanych wad. Z różnych względów (zajęcia poza kompem, cisza wyborcza, która jest bez sensu i pewnie nie ma zastosowania, ale dmucham na zimne) zeszło mi więcej czasu z publikacją, niż planowałem, więc wypuszczam as is. Całość zajęła nie 45 minut, tylko bardziej 1,5h (bardziej myślenie, niż klepanie), po poprawkach błędów różnych.

Założenia

  • KISS
  • Brak odpowiedzi na pytanie jest traktowany tak samo jak neutralność w danej kwestii lub nie mam zdania.
  • Wynik jest wartością -100% do 100% (lub, w wersji drugie, bardziej zgodnej z LW 0-100%).
  • Waga pytania nie powoduje drastycznej zmiany wyniku

Rozwiązanie

Stwierdziłem, że tak naprawdę da się to sprowadzić do liczenia korelacji. Czyli nie programowanie, tylko arkusz kalkulacyjny. Zresztą łatwiej debugować błędy. Kwestię prostoty i neutralności łatwo osiągnąć przez przypisanie wartości -1 (nie), 0 (brak zdania), 1 (tak). Zarówno dla odpowiedzi kandydatów, jak i odpowiadających. Ciocia matematyka zapewni, że zwykły iloczyn użytkownika i kandydata da 1 dla zgodności, -1 dla wartości przeciwnych i 0, jeśli którakolwiek ze stron nie ma zdania.

Powstał wiec arkusz z czterema zakładkami

Odpowiedzi kandydatów

Przepisane żywcem z wyników zebranych i publikowanych przez Latarnika Wyborczego (prośba o sprawdzenie, przepisywanie do arkusza to nudna część i łatwo o pomyłkę, więc nie wykluczam błędów, choć starałem się wypełnić rzetelnie). Część stała, nie wymaga żadnej ingerencji.

Odpowiedzi i istotność

To jest część, którą tak naprawdę wypełnia użytkownik odpowiadając na pytania w Latarniku Wyborczym. Brzydka forma, bo nie o UI mi chodziło. Dla każdego pytania podawana jest odpowiedź [-1, 0, 1] oraz istotność (po prostu mnożnik, zakres tak naprawdę dowolny[1], intencją był zakres 0-2, przyjąłem zmianę o 20%, nie musi być równa dla wszystkich pytań). Pola wypełnione na żółto wypełnia użytkownik (w arkuszu wypełnione są przykładowymi, losowymi danymi).

Obliczenia wyników

Tu zaszyty jest algorytm. Prosty, bo po prostu jest to iloczyn uzyskanego wyniku (suma ilorazów wagi, odpowiedzi kandydata i użytkownika) i maksymalnej teoretycznej zgodności[1]. Część stała, nie wymaga ingerencji.

Wynik

Tu jest to, co użytkownik dostaje na koniec. Podaję w dwóch równoważnych wersjach, różnią się tak naprawdę tylko zakresem. Pierwszy to -100% (zdanie przeciwne do kandydata dla każdego pytania) do 100% (wszystkie odpowiedzi jak kandydat), 0% oznacza wynik neutralny. Drugi wariant to po prostu rzutowanie na 0-100%. 50% oznacza brak jakiejkolwiek zbieżności poglądów z kandydatem, 0% – poglądy dokładnie przeciwne, 100% – poglądy zupełnie zgodne. Mniej więcej odpowiednik tego, co jest teraz w Latarniku Wyborczym (dla neutralnej wagi pytań). Część stała, nie wymaga ingerencji.

Sposób użytkowania

Pobrać arkusz ze strony (format ods, działa w darmowym Libre Office), uruchomić. Przejść do arkusza Odpowiedzi i istotność, wypełnić żółte pola. Po wypełnieniu wynik odczytujemy w zakładce Wynik. Oczywiście całość jest open source, czyli każdy może wprowadzić swoje poprawki i modyfikacje. Oraz poszukać błędów, których nie wykluczam.

Uwagi proszę zgłaszać w komentarzach pod wpisem. Spam, także wyborczy AKA agitacja będzie tępiony.

[1] I tu, kończąc wpis, widzę pierwszy błąd mojego rozwiązania. Powinienem jeszcze przemnożyć odpowiedzi kandydatów przez mnożnik podany przez użytkownika, gdy liczę maksymalny wynik dla kandydata. Teraz możliwe jest uzyskanie wyniku ponad 100%, zwł. dla wyższych mnożników. Błąd znany, poprawka trywialna, ale nie chce mi się teraz tego robić, jak będzie zainteresowanie to poprawię.

Latarnik Wyborczy – nie ufaj wynikom

Już w najbliższy weekend wybory prezydenckie. Kampania z przyległościami w toku, tradycyjnie niewiele się dzieje merytorycznego, bardziej plebiscyt popularności kandydatów. Media się cieszą, bo „to ważne”. Ponieważ ludzie mało naprawdę (AKA dogłębnie) interesują się polityką, powstały narzędzie mające pomóc w wyborze kandydata. Chyba najpopularniejszy jest Latarnik Wyborczy.

Już 22 kwietnia VaGla na Twitterze pokazał coś, co mną wstrząsnęło. Dla nie mam zdania dla wszystkich kwestii system pokazuje kandydata. W twittnięciu jest napisane, że wynik mylący, bo B. Komorowski nie wziął udziału[1], ale zupełnie nie o to chodzi. Wyniki są mylące, bo traktują nie mam zdania kandydata i nie mam zdania ankietowanego jako zbieżność poglądów. To błąd, bo nie mam zdania nie wskazuje tylko brak stosunku do danej rzeczy, ale obejmuje także zupełną niewiedzę o jej istnieniu oraz totalnie inne rozwiązania.

Weźmy na przykład stwierdzenie (nie ma takiego w pytaniach LW i celowo takie biorę) podatek VAT powinien być obniżony. W tym momencie odpowiedź nie mam zdania obejmuje zarówno niewiedzę co to podatek VAT, zmianę zasad opodatkowania w ogóle (np. likwidacja VAT) jak i faktyczną obojętność.

Żeby sobie unaocznić jak fatalny jest algorytm Latarnika Wyborczego, proponuję spojrzeć na wyniki (dziś rano), gdzie dla wszystkich pytań jest nie mam zdania oraz kwestia mało ważna:

Latarnik Wyborczy nie mam zdania, mało ważne

To samo, tylko ze zmianą wagi kwestii na ważna:

Latarnik Wyborczy nie mam zdania, ważne

I wisienka na torcie. Wszędzie nie mam zdania, a kwestia bardzo ważna:

Latarnik Wyborczy nie mam zdania, bardzo ważne

Nie chodzi zatem o samą kwestię doboru pytań, choć tu oczywiście jest największe pole do wypaczenia wyników. Zakładam, że pytania są sensowne. Oczywiście ciężko jest zredukować całe spektrum poglądów kandydata do raptem 20 kwestii, ale taki urok tego typu ankiet.

Natomiast to, co się dzieje w algorytmie LW jest IMO co najmniej dziwne. Po pierwsze to, o czym pisałem wyżej. Nie mam zdania powoduje przewagę określonych kandydatów. Ja bym po prostu odrzucił te odpowiedzi i normalizował wagę pozostałych (najprostsze, nieidealne).

Po drugie, ustawienie bardzo ważne powoduje jak widać wypłaszczenie wykresu. To też słabość algorytmu, bo jeśli działa tak jak przypuszczam, to sprowadza się do przesunięcia wyniku. No i niska istotność danego pytania to spadek wprowadzenie mnożnika 0,5 dla zgodności, a wysoka istotność – wprowadzenie mnożnika 2. Czyli tak naprawdę zmiana istotności w górę jest bardziej znacząca, niż zmiana w dół. Może zamierzone, ale IMO bezpieczniej byłoby przesuwać o stałą wartość. Typu mało istotne pytanie to 75%, bardzo istotne – 125%. Czy tam 50% i 150%, odpowiednio, ale nie nagły boost do 200%…

Last but not least… Teoretycznie między mało ważne a ważne jest po prostu mnożnik, przynajmniej tak wygląda dla większości kandydatów. Ale już JKM w pierwszym ma 26%, w drugim 50% (podobnie jak ci kandydaci, którzy mieli w pierwszym 25%), natomiast w trzecim spada na 95%. Jako jedyny. Bug w algorytmie? A może cichy nerf JKM?

Pozytyw jest taki, że LW dostarcza gotowe odpowiedzi poszczególnych sztabów. Jeśli ktoś ma ochotę, to łatwo można przerzucić do tabeli i zrobić własną, niezależną, poprawioną wersję LW. Choćby w arkuszu kalkulacyjnym. Tymczasem nie sugerowałbym się zbytnio wynikami LW…

[1] Obecne wyniki są inne, bo 24. kwietnia Latarnik Wyborczy dodał odpowiedzi B. Komorowskiego.

UPDATE: Latarnik Wyborczy przyjął do wiadomości uwagi nt. algorytmu i wyjaśnia (może niezupełnie mnie to przekonuje, ale zapewne przyczyna jest trafnie wskazana, a moje niezrozumienie pewnie rozbija się o detale algorytum) z czego wynika różnica w przypadku JKM. Szczegóły w dyskusji na Twitterze.

UPDATE2: Siadłem i popełniłem własną wersję. Oparta o arkusz kalkulacyjny, brzydka (bez frontendu, bez odporności na błędy), ale algorytm wydaje się działać poprawnie. Czas realizacji (wliczając przeklepanie odpowiedzi kandydatów z LW, na co zeszła większość czasu – 45 min). Publikacja prawdopodobnie jutro.