Autor des Abschnitts: Danielle J. Navarro and David R. Foxcroft

Logische Ausdrücke in jamovi

Ein Schlüsselkonzept, auf das sich viele Datentransformationen in jamovi stützen, ist die Idee eines logischen Wertes. Ein logischer Wert ist eine Behauptung darüber, ob etwas wahr oder falsch ist. Dies wird in jamovi auf ziemlich einfache Weise implementiert. Es gibt zwei logische Werte, nämlich TRUE und FALSE. Trotz ihrer Einfachheit sind logische Werte sehr nützlich. Schauen wir uns an, wie sie funktionieren.

Beurteilen mathematischer Wahrheiten

In George Orwells klassischem Buch 1984 lautet einer der Slogans der totalitären Partei „zwei plus zwei gleich fünf“. Der Gedanke dahinter ist, dass die politische Beherrschung der menschlichen Freiheit vollständig wird, wenn es möglich ist, selbst die grundlegendsten Wahrheiten zu untergraben. Ein erschreckender Gedanke, vor allem, wenn der Protagonist Winston Smith schließlich unter der Folter zusammenbricht und dem Satz zustimmt. „Der Mensch ist unendlich formbar“, heißt es im Buch. Ich bin mir ziemlich sicher, dass das nicht auf den Menschen zutrifft.[1] und schon gar nicht auf jamovi. jamovi ist nicht unendlich formbar, sondern hat eine ziemlich feste Meinung darüber, was wahr ist und was nicht, zumindest was die Grundrechenarten angeht. Wenn ich es bitte, 2 + 2,[2] zu berechnen, gibt es immer die gleiche Antwort, und es ist nicht die verdammte 5!

Natürlich führt jamovi bisher nur die Berechnungen durch. Ich habe es nicht darum gebeten, ausdrücklich zu behaupten, dass 2 + 2 = 4 eine wahre Aussage ist. Wenn ich möchte, dass jamovi ein explizites Urteil fällt, kann ich einen Befehl wie diesen verwenden: 2 + 2 == 4

Ich habe hier den Gleichheitsoperator, == verwendet, um jamovi zu zwingen, ein „TRUE oder FALSE“ Urteil zu fällen.[3] Lass uns sehen, was jamovi über den Parteislogan denkt, also gib das in das Feld Formula einer neuen Variable ein:

2 + 2 == 5

Und was erhalten Sie? Es sollte eine ganze Reihe von FALSE Werten in der Spalte für Ihre neu berechnete Variable in der Datentabelle sein. Booyah! Freiheit und Ponys für alle! Oder so ähnlich. Wie auch immer, es lohnt sich, einen Blick darauf zu werfen, was passiert, wenn ich versuche, jamovi zu zwingen, zu glauben, dass zwei plus zwei gleich fünf ist, indem ich eine Aussage wie 2 + 2 = 5 mache. Ich weiß, dass, wenn ich dies in einem anderen Programm tue, sagen wir R, eine Fehlermeldung ausgegeben wird. Aber warte, wenn Sie das in jamovi machen, bekommen Sie einen ganzen Satz von FALSE Werten. Was ist hier also los? Nun, es scheint, dass jamovi ziemlich schlau ist und erkennt, dass Sie testen, ob es TRUE oder FALSE ist, dass 2 + 2 = 5, unabhängig davon, ob Sie den korrekten Gleichheitsoperator, ==, oder das Gleichheitszeichen = verwenden.

Logische Operationen

Jetzt haben wir also gesehen, wie logische Operationen funktionieren. Aber bisher haben wir nur das einfachste mögliche Beispiel gesehen. Es wird Sie wahrscheinlich nicht überraschen, dass wir logische Operationen mit anderen Operationen und Funktionen auf kompliziertere Weise kombinieren können, etwa so:

3 * 3 + 4 * 4 == 5 * 5

oder so:

SQRT(25) == 5

Darüber hinaus gibt es, wie Tab. 3 zeigt, mehrere andere logische Operatoren, die Sie entsprechend einigen grundlegenden mathematischen Konzepten verwenden können. Hoffentlich sind diese alle ziemlich selbsterklärend. Der Operator weniger als ` <` prüft zum Beispiel, ob die Zahl auf der linken Seite kleiner ist als die Zahl auf der rechten Seite. Wenn sie kleiner ist, gibt jamovi die Antwort TRUE, aber wenn die beiden Zahlen gleich sind oder wenn die Zahl rechts größer ist, gibt jamovi die Antwort FALSE.

Tab. 3 Andere logische Operatoren. Wenn ich sie technisch völlig korrekt beschreiben sollte, würde ich sie „binäre relationale Operatoren“ nennen, aber ehrlich gesagt will ich das nicht. Es ist mein Buch, also kann mich niemand zwingen.

Operation

Operator

Beispiel-Eingabe

Ausgabe

weniger als

<

2 < 3

TRUE

kleiner als oder gleich

<=

2 <= 2

TRUE

größer als

>

2 > 3

FALSE

größer als oder gleich

>=

2 >= 2

TRUE

gleich

==

2 == 3

FALSE

ungleich

!=

2 != 3

TRUE

Im Gegensatz dazu tut der kleiner als oder gleich Operator <= genau das, was er sagt. Er gibt einen Wert von TRUE zurück, wenn die Zahl auf der linken Seite kleiner oder gleich der Zahl auf der rechten Seite ist. An dieser Stelle ist es hoffentlich ziemlich offensichtlich, was der größer als Operator > und der größer oder gleich Operator >= tun!

Der nächste auf der Liste der logischen Operatoren ist der Operator ungleich !=, der, wie alle anderen auch, das tut, was er sagt. Er gibt einen Wert von TRUE zurück, wenn die Dinge auf beiden Seiten nicht gleich sind. Da also 2 + 2 nicht gleich 5 ist, würden wir TRUE als Wert für unsere neu berechnete Variable erhalten. Probieren Sie es aus und sehen Sie selbst:

2 + 2 != 5

Wir sind noch nicht ganz fertig. Es gibt noch drei weitere logische Operationen, die es wert sind, kennengelernt zu werden, und die in Tab. 4 aufgeführt sind. Dies sind der Nicht-Operator !, der and-Operator sowie der or-Operator. Wie die anderen logischen Operatoren verhalten sie sich mehr oder weniger genau so, wie man es aufgrund ihres Namens erwarten würde. Wenn ich Sie zum Beispiel bitte, die Behauptung zu beurteilen, dass „entweder 2 + 2 = 4 or (oder) 2 + 2 = 5“ wahr ist, würden Sie sagen, dass sie wahr ist. Da es sich um eine „Entweder-oder“-Aussage handelt, muss nur einer der beiden Teile wahr sein. Das ist es, was der Operator or tut:[4]

(2 + 2 == 4) or (2 + 2 == 5)
Tab. 4 Einige weitere logische Operatoren.

Operation

Operator

Beispiel-Eingabe

Ausgabe

not (nicht)

NOT

NOT(1==1)

FALSE

or (oder)

or

(1==1) or (2==3)

TRUE

and (und)

and

(1==1) and (2==3)

FALSE

Wenn ich Sie dagegen bitte, die Behauptung zu bewerten, dass „sowohl 2 + 2 = 4 als auch 2 + 2 = 5“ ist, würden Sie sagen, dass sie falsch ist. Da dies eine and-Aussage (und) ist, müssen beide Teile wahr sein. Und genau das tut der and Operator:

(2 + 2 == 4) and (2 + 2 == 5)

Schließlich gibt es noch den not-Operator (nicht), der einfach, aber lästig zu beschreiben ist. Wenn ich Sie bitte, meine Behauptung zu bewerten, dass „es nicht wahr ist, dass 2 + 2 = 5“, dann würden Sie sagen, dass meine Behauptung wahr ist, denn eigentlich ist meine Behauptung, dass „2 + 2 = 5 falsch ist“. Und ich habe Recht. Wenn wir dies in jamovi schreiben, verwenden wir dies:

NOT(2 + 2 == 5)

Mit anderen Worten: Da 2 + 2 == 5 eine FALSE-Aussage ist, muss NOT(2 + 2 == 5) eine TRUE-Aussage sein. Im Grunde haben wir nur behauptet, dass „nicht falsch“ dasselbe ist wie „wahr“. Das ist im wirklichen Leben offensichtlich nicht ganz richtig. Aber jamovi lebt in einer viel schwarz-weißeren Welt. Für jamovi ist alles entweder TRUE oder FALSE. Grautöne sind nicht erlaubt.

In unserem Beispiel 2 + 2 = 5 war es natürlich nicht nötig, den „nicht“-Operator NOT und den „gleich“-Operator == als zwei separate Operatoren zu verwenden. Wir hätten einfach den „ungleich“-Operator != wie folgt verwenden können:

2 + 2 != 5

Logische Operationen auf Text anwenden

Ich möchte auch kurz darauf hinweisen, dass man diese logischen Operatoren sowohl auf Text als auch auf logische Daten anwenden kann. Wir müssen nur etwas vorsichtiger sein, um zu verstehen, wie jamovi die verschiedenen Operationen interpretiert. In diesem Abschnitt werde ich darüber sprechen, wie der Gleichheitsoperator == auf Text angewendet wird, da dies der wichtigste Operator ist. Offensichtlich gibt der ungleich-Operator != genau die gegenteiligen Antworten zu ==, so dass ich implizit auch über diesen spreche, aber ich werde keine spezifischen Befehle verwenden, welche die Verwendung von != zeigen.

Okay, sehen wir uns an, wie es funktioniert. In einer Hinsicht ist es sehr einfach. Ich kann zum Beispiel jamovi fragen, ob das Wort cat dasselbe ist wie das Wort dog, zum Beispiel so:

"cat" == "dog"

Das ist ziemlich offensichtlich, aber es ist gut zu wissen, dass sogar jamovi das herausfinden kann. In ähnlicher Weise erkennt jamovi, dass eine cat eine cat ist:

"cat" == "cat"

Auch das ist genau das, was wir erwarten würden. Was Sie jedoch beachten müssen, ist, dass jamovi überhaupt nicht tolerant ist, wenn es um Grammatik und Abstände geht. Wenn sich zwei Zeichenketten in irgendeiner Weise unterscheiden, wird jamovi sagen, dass sie nicht gleich sind, wie zum Beispiel im folgenden Fall:

" cat" == "cat"
"cat" == "CAT"
"cat" == "c a t"

Sie können auch andere logische Operatoren verwenden. Mit jamovi können Sie zum Beispiel auch die Operatoren < und > verwenden, um zu bestimmen, welcher von zwei Text-„Strings“ alphabetisch an erster Stelle steht. So in etwa. Eigentlich ist es ein bisschen komplizierter, aber fangen wir mit einem einfachen Beispiel an:

"cat" < "dog"

In jamovi wird dieses Beispiel als TRUE ausgewertet. Das liegt daran, dass cat alphabetisch vor dog steht, so dass jamovi die Aussage für wahr hält. Wenn wir jedoch jamovi bitten, uns zu sagen, ob cat vor anteater steht, dann wird es den Ausdruck als FALSE bewerten. So weit, so gut. Aber Textdaten sind ein bisschen komplizierter, als das Wörterbuch vermuten lässt. Was ist mit cat und CAT? Welcher dieser Ausdrücke kommt zuerst? Probieren Sie es aus und finden Sie es heraus:

"CAT" < "cat"

Dies ergibt in der Tat TRUE. Mit anderen Worten: jamovi geht davon aus, dass Großbuchstaben vor Kleinbuchstaben kommen. Das ist in Ordnung. Das wird wohl niemanden überraschen. Was Sie vielleicht überraschen könnte, ist, dass jamovi davon ausgeht, dass alle Großbuchstaben vor allen Kleinbuchstaben kommen. Das heißt, während "anteater" < "zebra" eine wahre Aussage ist, und das Äquivalent in Großbuchstaben "ANTEATER" < "ZEBRA" ebenfalls wahr ist, ist es nicht wahr, zu sagen, dass "anteater" < "ZEBRA", wie der folgende Auszug zeigt. Versuchen Sie dies:

"anteater" < "ZEBRA"

Die Auswertung ergibt FALSE, was etwas kontraintuitiv erscheinen mag. Vor diesem Hintergrund kann es hilfreich sein, einen kurzen Blick auf die verschiedenen Textzeichen in der Reihenfolge zu werfen, in der sie von jamovi verarbeitet werden:

! " # $ % & ' ( ) * + , - . /  0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]  ^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z } | {