Vergleichsaussagen zwischen verschiedenen Parteien

I need a proper explanation about:

Auch hier geht es wieder um das Thema “Wahlprognosen zur Bundestagswahl”.

Ich will zwei Parteien miteinander vergleichen also zB Sätze schreiben wie:

“Den neuesten Wahlumfragen zufolge liegt die SPD aktuell bei 30 Prozent und damit X Prozentpunkte hinter dem Wert der CDU/CSU (40 Prozent).”

Wie muss hierfür die Property lauten um die X Prozentpunkte Unterschied zu definieren?

"In der kombinierten Pollyvote Prognose geht die SPD als (klarer) Sieger hervor.

Wie kann ich hier regeln, dass bei einem so und so großen Abstand der beiden großen Parteien das Wörtchen “klarer” eingefügt wird?

"Die CDU/CSU erhält einen kombinierten Prozentwert von X Prozent und liegt damit nur knapp/deutlich hinter der SPD.

Wie definiere ich hier die Property für “nur knapp” bzw. “deutlich”?

Danke :slight_smile:

Hi Anna,

ich glaube, ich kann dir helfen. Ich antworten auf die Punkte einzeln. Ich ahbe die genauen Schreibweisen nicht im Kopf, die müsstest du in deinem eigenen Projekt nochmal genau prüfen. Zahlenwerte habe ich mir wild ausgedacht, also setz da bitte etwas passendes ein.

1.) du kannst eine neue Property anlegen.
Truth expression:
truth($DATA_SPD) and truth($DATA_CDU_CSU)
Mapping expression:
numeric($DATA_SPD) - numeric($DATA_CDU_CSU)
So kriegst du die Zahlen aus den Properties, die die Datenfelder am Anfang abholen.
Aber nur dann, wenn auch beide Parteien einen gültigen Wert haben. (Ob der gültig ist, prüfen die DATA-Properties automatisch)

Um es “roh” zu rechnen könntest du auch direkt mit den Datenfeldern rechnen:
Truth expression:
true
Mapping expression:
numeric(#SPD) - numeric(#CDU_CSU)

2.) Wir hatten im Kurs Sonntagsfrage 2 eine Property, die geprüft hat, ob die SPD regierungsfähig wäre.
Grundgedanke ist eine Property, die den Wert der jeweiligen Partei mit einem Grenzwert vergleicht.
bspw.:
Truth expression:
true
Mapping Expression:
numeric($MAX_Partei_Wert) > 40
Du müsstest aber bitte mal für dich rausschreiben, was du genau auswerten willst. Poste doch mal in Worten, wann du “klar” hinzufügen willst. Dann weiß ich besser, was die Regeln dafür bewirken sollen.

3.) Du musst drei Dinge lösen:

  • Du musst die erste Partei aus der sortierten Liste abholen (Das funktioniert wie MAX_Partei)
  • Du musst die zweite Partei aus der sortierten Liste abholen (@Peter !! Ne Idee?)
  • Du musst aus diesen Parteien die Zahlenwerte abholen ( mit collect() wie im Beispiel MAX_Partei_Wert)
    Dann kannst du in einer neuen Property die Werte vergleichen, und die Differenz auswerten.

Die Truth Expression dafür wäre dann (sinngemäß) (numeric($MAX_Partei_Wert) - numeric($Meine_zweite_Partei)) > 10

LG

Frank

Hi Frank,

vielen Dank :slight_smile:

Zu 1)
Kann ich da wirklich einfach SPD-CDU/CSU machen? Was ist, wenn die CDU/CSU mehr Prozent hat?

Zu 2)
Ich will “klar” hinzufügen, wenn der Unterschied mindestens 5% beträgt.

Zu 3)
Für die zweite Partei in der Liste habe ich schon selber eine Property angelegt (bin ganz stolz :smiley: :smiley: ) und zwar MAX2_Partei
<10 heißt in dem Fall, dass du für dich definiert hast, dass es ab 10% Unterschied “deutlich” ist? was mache ich mit “nur knapp” und wie entscheidet die Property was sie nehmen soll?

Hi Anna,
gerne.
1.) Du könntest nen Betrag vom Ergebnis rechnen. Formel dazu wäre a * a / a. Wenn du das in der Mapping Expression abbilden kannst, bzw. in einer weiteren Property, hast du eine positive Zahl, egal wie das Vorzeichen aussieht. Ich tippe mal auf etwas in Richtung numeric($a) * numeric($a) / numeric($a), nur eben mit deinen Benennungen oder Ausdrücken drin. :wink:
2.) Der Operator wäre dann >= und der Referenzwert 5
3.) High five! Dann bin ich ja umso stolzer.
Wenn du jetzt mehrere Vergleiche anlegen willst, (einen für knapp, einen für deutlich) empfehle ich dir, die erst mal in einzelnen Properties zu definieren.
Die sammelst du dann alle in einer Group Property (Logic Ruleset --> Add Group Property) und wenn du diese dann mit best(1) in den Text einbindest, steht immer das gerade zutreffende Ergebnis im Text.
Du hast dann quasi eine “Wippe” gebaut, die sich zwischen verschiedenen Formulierungen entscheiden kann.

zu 1)
Das versteh ich jetzt leider gar nicht mehr :smiley:

zu 2)
Jetzt kommt leider diese Fehlermeldung:

InvalidMappingExpressionException
The data type BooleanLiteral of the mapping expression of the property MAX_Partei_Wert_Pollyvote_SiegerAussage is not valid.

MissingPropertyException
The property ‘MAX_Partei_Wert_Pollyvote_SiegerAussage’ is not defined yet.

The property ‘MAX_Partei_Wert_Pollyvote_SiegerAussage’ is not defined yet.

zu 3)

Hier kommt leider auch eine Fehlermeldung:

The validation was not successful. Please check on errors in your test setup configuration.

Eigentlich find ich das sehr logisch was du erklärt hast und ich habe es auch gut durchführen können, aber wie gesagt Fehlermeldung…

Ich muss ja bei den beiden Möglichkeiten des Unterschieds als Vocabulary dann “nur knapp” bzw. “deutlich” angeben oder? Kannst du dir das bitte nochmal anschauen in meinem Projekt?

Liebe Grüße
Anna

Hi Anna,

ich habe für dieses Problem mit der Fehlermeldung einen neuen Thread angelegt.

Zu 1.) Rechne diesen Rechenweg mit Properties in der Mapping Expression einer neuen Property. Damit das klappt, musst du um die Namen der Properties, mit denen du rechnen willst, numeric() schreiben.

Zu 2.) In der besagten Property schreibst du
numeric($MAX_Partei_Wert_Pollyvote) >=5
Es fehlt ein Leerzeichen
numeric($MAX_Partei_Wert_Pollyvote) >= 5
Mittlerweile kann ich den Fehler nicht mehr reproduzieren. Hattest du noch was geändert?

LG

Hi Frank,

nochmal zu 1)

Mir ergibt sich der Sinn der Fomel numeric($a) * numeric($a) / numeric($a) nicht… mal und geteilt durch heben sich doch auf? was hat die Formel dann für einen Sinn, wenn ich bei allen drei Bestandteilen “a” einfüge?

Hi Anna,
damit rechnest du einen Betrag:
Nimm eine Zahl ins Quadrat, denn dabei verschwindet das Vorzeichen.
Dann teil wieder durch die Zahl, und du hast in jedem Fall einen Betrag mit positivem Vorzeichen.

LG

Peter sagte mir gerade beim Kaffee, dass du den Betrag auch mit der Formel abs(numeric($a)) rechnen kannst.

Hallo Frank!

Also sieht die Property dann so aus:

truth expression:
truth($DATA_SPD) and truth($DATA_CDU_CSU)
Mapping expression:
[numeric($DATA_SPD) * numeric($DATA_SPD) / numeric($DATA_SPD) - numeric($DATA_CDU_CSU) * numeric($DATA_CDU_CSU) / numeric($DATA_CDU_CSU)]

oder:
[abs(numeric($DATA_SPD) - abs(numeric($DATA_CDU_CSU)]

Stimmt das?
Und diese gibt mir dann den Abstand zwischen SPD und CDU/CSU aus egal welche von beiden mehr Prozent hat oder?

Hi Anna,

das stimmt im Großen und Ganzen. Zwei Sachen aber:
1.) du brauchst die eckigen Klammern nicht.
2.) du könntest die Einzelausdrücke noch einklammern (obwohl in der echten Welt alles mit Punkt vor Strich gesagt sein müssste, hat unser Parser manchmal eine eigene Meinung dazu ;))
(numeric($DATA_SPD) * numeric($DATA_SPD) / numeric($DATA_SPD)) - (numeric($DATA_CDU_CSU) * numeric($DATA_CDU_CSU) / numeric($DATA_CDU_CSU))

Die zweite ist nicht richtig geklammert: Hier müssen runde Klammern dazu, weil du jeweils die Klammer, die du für Abs aufmachst nicht wieder zumachst.

abs(numeric($DATA_SPD)) - abs(numeric($DATA_CDU_CSU))

LG