Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basics des Fragen-Samplings bzw -Vorauswahl näher erörtern bzw. quertesten #75

Open
simlei opened this issue May 23, 2019 · 4 comments

Comments

@simlei
Copy link

simlei commented May 23, 2019

Statistisch interessiert ja schon eher richtung "brennend", wie "fair" die Fragenvorauswahl ist, oder?

Einfach gefragt, ist das rückwärts gelesene Spektum über die Parteien fair, so dass je nach Ja/Nein-Konstellation theoretisch jede der Parteien weit oben auf dem "stimmt mit deiner Einstellung überein"-Treppchen stehen könnte? Oder anders, wie ist das Spektrum max_{answers} rating(Partei, answers) verteilt (z.B. gewichtet nach representativität der Antworten vs. nicht gewichtet, oder stichproben nach PCA des bisher recordeten Stimmungsbildes (kann man ja anonym gestalten und weder Daten noch Eigensystem veröffentlichen, nur intern samplen)).

Generaell würde es mich freuen, wenn man mehr zur Vorauswahl auf der Seite erfahren würde (derzeit: https://deinwal.de/faq#eu_auswahl nach subjektiven Kriterien). Und eine statistische Auswertung nach genannten Gesichtspunkten wäre schon sehr schön. Würde einen Boost an credibility geben, denke ich.

@tomthe
Copy link
Member

tomthe commented May 24, 2019

Ich bin mir nicht sicher, ob ich dich richtig verstehe, aber folgendes kann ich schonmal sagen:

  • jede Partei kann weit oben stehen, wenn man ähnlich abstimmt wie jene Partei

  • Es gibt Parteien, die generell öfter mit Nein gestimmt haben - Das sind Parteien, die selber weniger Anträge eingebracht haben oder generell europäischen Vorhaben kritisch gegenüberstehen.

  • wir sammeln keine Daten über das Abstimmverhalten der deinwal-Benutzer. Deswegen können wir auch nicht auswerten, welche Antworten überwiegend gegeben werden.

Für die Fragenauswahl haben wir aus den vielen Abstimmungen nach folgenden Kriterien Fragen ausgewählt:

  • Gab es eine große Divergenz? Also: Fragen wo alle Abgeordneten mit Ja abgestimmt haben bringen keinen Mehrwert in der Auswertung bezüglich der Differenzierung zwischen den Parteien. Solche Fragen wurden nur Ausgewählt wenn sie besonders viel Informationen über die Arbeitsweise des Parlaments offenbaren / besonders interessant sind.

  • Sind die Abstimmungen interessant? Gab es eine Medienberichterstattung dazu? Wurde kontrovers diskutiert?

  • Lässt sich die Abstimmung ohne zu große Verfälschung in eine einfache, kurze Frage formulieren? Der Haushaltsentwurf 2015 mag kontrovers, interessant und interessant vom Abstimmungsergebniss gewesen sein - aber ist unmöglich auf zwei Sätze zu verkürzen.

Wie könnte man denn Fragen auswählen, um bestimmte Parteien zu bevorzugen?

@simlei
Copy link
Author

simlei commented May 24, 2019

Hallo,
die Antworten sind sehr informativ.

Wie könnte man denn Fragen auswählen, um bestimmte Parteien zu bevorzugen?

Nun ja, ich dachte da zum Beispiel daran, dass von den verschiedenen Parteien die Ja/Nein - Stimmen irgendwo im Kontinuum zwischen 0 und 1 verteilt sind und dass der Score basierend auf der Nähe der Userantwort (diskret 0 oder 1) zu jenem Wert berechnet würde. Da wäre dann eine gewisser Spielraum vorhanden, wo eine Partei bei einer sehr zustimmungsfreundlichen Frage dauernd besser abschneidet. Das wäre zwar im Endeffekt auch nicht von den Tatsachen entrückt, aber eben Platz zum spielen. Bei einer erneuten Lektüre eurer FAQ musste ich mir eingestehen, dass ich noch nicht das volle Bild hatte -- die Parteien werden also auch auf 0 oder 1 heruntergebrochen. Im Prinzip könnte ich aber eine ähnliche Vorgehensweise entwerfen -- fraktionsintern umstrittene Entscheidungen suchen (nahe der 50%) und die Fragen nehmen wo's bei der hypothetischen Opferpartei knapp auf die Seite gefallen ist die prinzipiell weniger gern genommen wird. Hier würde man dann quasi den Rundungsfehler ausnutzen.

Ich gebe ja zu, solche Fraktionsunentschlossenheit kommt mir selber zu selten vor als dass man da wirklich was ausnutzen könnte (uneducated guess, no expert). Von daher danke für die Antwort. Schick dass alles bei Github steht, gute Arbeit.

@binfalse
Copy link
Member

Hi @simlei

wie @tomthe schon gesagt hat, haben wir die Fragen eher nach schwammigen Kriterien plus viel Diskussion und Intuition ausgewaehlt. Wir haben zum Beispiel Fragen, bei denen (fast) alle gleich abgestimmt haben, eher rausgeschmissen, weil die nicht helfen die Parteienlandschaft zu trennen. Auf der anderen Seite haben wir uns Fragen mit grosser Varianz in den Antworten nochmal genauer angesehen. Siehe dazu auch https://wahlbilanz.de/2019/04/europawal/
Insgesamt haben wir hier aber eher weniger datascience gemacht.

Aber du hast natuerlich Recht und eine spannende Frage aufgeworfen - Danke!

Ich hatte es vor der Wahl nicht mehr geschafft, aber habe heute mal ein bisschen rumprobiert. Aus Zeitgruenden (bin auch ab morgen ein paar Tage afk) dump ich die Results mal nur weitestgehend uninterpretiert hier rein. Weiss auch nicht ob das hier der richtige Platz dafuer ist, wuerde mich aber riesig ueber eine kritische Diskussion freuen! :)

PCA

Ich hab aus unserer votes.json eine Matrix m extrahiert mit m[i,j] = (ja[i,j] - nein[i,j])/gesamt[j] der Partei_j mit gesamt[j] Abgeordneten zur Abstimmung_i. Neutral abgestimmt zaehlt also wie abwesend. Jede Zelle ist irgendwas in [-1,+1], mit -1 = alle stimmen dagegen und +1 = alle stimmen dafuer.

Die CSV hab ich mal hier hingedumpt: https://gist.github.com/binfalse/0886f1bdf464a282c2719595ad4e6e77#file-results-csv

Darauf dann PCA (https://gist.github.com/binfalse/0886f1bdf464a282c2719595ad4e6e77#file-pca-r) gemacht, mit folgenden Ergebnissen:

deinwal-pca
deinwal-pca-var
deinwal-pca-andersrum
deinwal-pca-andersrum-var

Venn

Vielleicht noch spannend die einzelnen Uebereinstimmungen in den Parteien anzusehen? -> Venn Diagramme (code: https://gist.github.com/binfalse/0886f1bdf464a282c2719595ad4e6e77#file-venn-r)

venn-1st5
venn-2nd5
venn-3rd5
venn-biggest

Sind noch konkrete Konstellationen spannend? Kann ich mittels https://gist.github.com/binfalse/0886f1bdf464a282c2719595ad4e6e77#file-venn-r gern einfach nachliefern

Brute force :P

Der Raum moeglicher Antworten ist natuerlich relativ gross - 4 Optionen (ja/nein/neutral/abwesend) bei 27 fragen: 4^27 ~1.80144e+16
Hab mal ein zufaelliges Subset aus 20 fragen gegen ein paar CPUs geworfen um ein ungefaehres Gefuehl fuer die Verteilung der Parteien zu bekommen.
Hab mich dabei aber auch auf ja/nein/egal beschraenkt, also abwesend nicht betrachtet. Wenn ich fuer jede moegliche Antwort auf die 20 fragen gucke, welche Partei(en) oben steh(t|en) (bei einigen antworten koennen natuerlich mehrere parteien den top-score erziehlen), sieht das ungefaehr so aus:

auswertung-wins

Stark! Wir konnten offentsichtlich mit DeinWal ganz gut das Gegenteil des vorlaeufigen Europawahlergnisses vorhersagen :P

Die Abbildung wirkt aber erstmal erschreckend. Zumindest gingen bei mir alle Alarmglocken - ist unsere Fragenauswahl wirklich so manipulativ!?

Aber das laesst sich doch relativ einfach erklaeren:

  • anders als du oben geschrieben hast, sind die Abstimmungsergebnisse der Parteien fuer uns in der Tat typischer Weise irgendwo in [0,1]
  • bsp du stimmst mit ja -- Partei stimmt mit 14ja 2nein 3egal 1abwesend -- dann ist die uebereinstimmung (14+1.5)/20 = 77.5% wie du gestimmt -- im code hier so ungefaehr:
    description = "(Ja + 1/2 · Enthaltung) / Gesamt = ("
  • abwesende Abgeordnete stimmen also nicht wie du

Das bedeutet, wenn jemand nicht abstimmt:

  • bei 1-mep-parteien heisst das 0 Uebereinstimmung bei der jeweiligen Frage (wenn einer nicht da ist, ist niemand von der Partei da) - egal wie du abgestimmt hast
  • bei grossen Parteien fehlt sehr oft jemand, dass heisst sie haben selten genau 100% Uebereinstimmung, auch wenn alle anderen der Partei wie du stimmen

Also, wenn CDU und Piraten beide wie du stimmen, aber bei der CDU einer schwaenzt, gewinnen die Piraten mit 100% Uebereinstimmung vor der CDU mit 97% (33/34) -> in der Grafik oben kriegen in diesem Fall die Piraten einen Punkt, aber CDU kriegt keinen Andersherum, wenn die Abgeordnete der Piraten einmal fehlt und die CDU nicht komplett gegen dich stimmt, ist die CDU in vielen Antwortvektoren weit vor den Piraten!

Die Grafik zeigt halt nur, wer jeweils am Besten war bei einem Antwortvektor. Bei diesen 20 Fragen haben die Piraten immer eine Stimme abgegeben, waehrend die Gruenen bspw 13x gefehlt haben, damit konnten die Gruenen nur selten die hoechste Uebereinstimmung mit dir haben (nur ~500k mal), sind aber trotzdem oft oben mit dabei. Dazu kommen natuerlich noch so Effekte, wenn die Partei nicht geschlossen abstimmt, sondern sich einige enthalten oder so...

In unserer Auswertungstabelle zeigen wir daher auch Logos der Parteien, wenn die Partei mehrheitlich wie du gestimmt hat. Mehrheitlich heisst 2/3-Mehrheit.

Wenn ich im Beispiel oben zaehle, wie oft eine Partei mehrheitlich wie ein jeweiliger Antwortvektor gestimmt hat, sieht die Abbildung wesentlich fairer aus:

auswertung-wins23

Aber das ist auch gerade nur kurz zusammengehackt und fix ueberlegt plus/minus denk- und programmierfehler ;-)

Vielleicht hast du noch andere/bessere Ideen zur Auswertung? Vielleicht hast du auch eine Idee wie wir einen Test implementieren koennen, der sicher stellt, dass eine bestimmt Fragensequenz, die wir uns ueberlegt haben, keine der Parteien statistisch benachteiligt..?

-> Was koennen wir hier lernen und in Zukunft besser machen?

Vielleicht ist ein PCA auf allen vorhandenen Daten nochmal spannend (also nicht nur die fragen, die wir ausgewaehlt haben)!? Aber das schaffe ich fruehestens naechste woche...

@simlei
Copy link
Author

simlei commented May 29, 2019

Fantastisch. Ich muss das mal auf mich wirken lassen. Also, nachdem ich schon eine gute Stunde dabei bin, hoch und runter zu scrollen.

Ich sehe kein konsistentes Muster zwischen den PCA-Grafiken und den unterschiedlichen Pole-Positions-Häufigkeiten. Die Analyse mit den Enthaltungen als entscheidender Faktor klingt zumindest ziemlich einleuchtend.

Zu den letzten Abbildungen:
So wie ich es verstanden habe, sind die Grafiken über viele zufällige Antwortvektoren über 20 Fragen erstellt. Dann wurde jeweils das Rating gemacht und für Chart 1) gezählt, wie oft eine Partei auf No. 1 war. Für Chart 2) habe ich es noch nicht verstanden.

[...] zaehle, wie oft eine Partei mehrheitlich wie ein jeweiliger Antwortvektor gestimmt hat

Dann zeigt die Grafik, wie zufällige Antworten für jede der Parteien in gleichem Maß >50% und <50% Ähnlichkeit mit der Stimmenabgabe repräsentieren? Wenn ich damit richtig liege: Ist diese Ähnlichkeit gleich (sensibly exact speaking) der %-Angabe auf dem "Treppchen", d.h. dem Rating, das man für jede Partei am Ende des Questionnaire angezeigt bekommt?

Wenn du den Code/die Samples für diese Charts noch irgendwo hochladen könntest, brauche ich gar keine großartig detaillierte Antwort. Aber insgesamt bin ich schon mehr als zufrieden mit dem Ausmaß der Antwort auf dieses kleine Issue. Ich finde das eine äußerst aufmerksame Aktion und fühle mich etwas geehrt :)
Werde die nächsten Tage drüber nachdenken und mich noch mal melden. Am liebsten wäre mir, ich wäre in der Lage, Geschwistergraphen der von dir geposteten Abbildungen zu generieren, aber bitte um Minimalaufwand deinerseits (code dump)-- und wünsche viel Spaß beim afk vorerst.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants