Politikwissenschaftliche Statistik mit R
- (0) Willkommen
- (1) Grundlagen
- (3) Aufzeichnungen
- (4) Variablen
- (5) Univariate Maße
- (6) Visualisierung I
- (7) Bivariate Maße
- (8) Lineare Regression
- (9) Visualisierung II
- (10) Multiple Regression
- (11) Logistische Regression
- (12) Faktorenanalyse
- (13) Visualisierung III
- (14) Hilfe
Christoph Garwe, Philipp Meyer, Laura Brune y Christoph Hönnige
Institut für Politikwissenschaft, Leibniz Universität Hannover') });
Willkommen zu dieser Einführung in die politikwissenschaftliche Statistik.R
! In dieser ersten Sitzung werden wir:
- kenne das Programm
- Erfahren Sie, wie Sie es installieren und bedienen
- Erstellen und manipulieren Sie Objekte und Klassen.
- Laden Sie Funktionen und Pakete herunter und wenden Sie sie an.
R
ist ein leistungsstarkes statistisches Datenanalyseprogramm, das heute in wissenschaftlichen Anwendungen weit verbreitet ist. Sein besonderer Vorteil gegenüber anderen Standardprogrammen ist seine Flexibilität. Zum einen erhält es dies durch seine Paketstruktur. Verschiedene genannte Pakete (englPakete
) sind speziell für bestimmte Anwendungen konzipiert. Sie laden nur dann auf, wenn Sie sie brauchen. Für fast jeden Zweck, den man sich zwischenzeitlich vorstellen kann, liegenR
-Pakete vor. Seine Programmiersprache verleiht ihm außerdem Flexibilität. Um genau zu sein, ist esR
eigentlich eine (statistische) Programmiersprache, kein Statistikprogramm. Herkömmliche Statistikprogramme enthalten immer nur eingeschränkte Anwendungsmöglichkeiten, die von der Entwicklerfirma vorgegeben werden. Stattdessen gewährtR
Grundsätzlich unbegrenzte Anwendungsmöglichkeiten.
Die Pakete werden nicht von einer zentralen Softwarefirma entwickelt, sondern von einer Vielzahl von Anwendern weltweit. Vorteile davonR
der Intelligenz des Schwarms, während dieMittelgruppe R
übernimmt die Qualitätssicherung durch Überprüfung und Genehmigung neuer Pakete. Ebenso können Sie Schwarmintelligenz in einer Vielzahl von Hilfeforen wie zPaketüberflussnutzen, wo Hilfe und Lösungen angeboten werden. Oft hilft auch eine Google-Suche.
Ein weiterer Vorteil (insbesondere für Studenten) ist dasR
Es ist als Open-Source-Programm frei verfügbar. Es wird von der R Foundation for Statistical Computing über das CRAN (Comprehensive R Archive Network,https://cran.r-project.org/) zum Download bereit. Inzwischen trifft er sichRStudio
Zusätzlich steht kostenlos eine professionelle Oberfläche zur Verfügung, die die Bedienung deutlich vereinfacht.
Diese Vorteile kommen jedoch nicht ohne Nachteile: R-Code gilt als recht anspruchsvoll, und vieles erscheint auf den ersten Blick nicht besonders intuitiv. Außerdem ist esR
Es unterscheidet zwischen Groß- und Kleinschreibung (es wird zwischen Groß- und Kleinschreibung unterschieden) und verzeiht keine Tippfehler. Wenn etwas nicht (genau) richtig geschrieben ist, führt dies zu einer Fehlermeldung oder (schlimmer) zu unerwünschten oder unbemerkten Datenmanipulationen. hat damit zu tunR
basiert auf der Programmiersprache S. Damit umzugehen lernt manR
durch eine steile Lernkurve gekennzeichnet. Das heißt auch: Es ist ganz normal, wenn man etwas nicht gleich versteht. Gib nicht auf, es wird besser!
Ziel dieses Kurses ist die Vermittlung eines GrundverständnissesR
sowie alle für den Studiengang relevanten Anwendungen der statistischen Datenanalyse. So können Sie den Code, den Sie auf diese Weise lernen, für Ihre eigene Arbeit verwenden (ich vermeide es, hier "kopieren" zu sagen). Ein grundlegendes Verständnis des Codes und wie und warum er verwendet wird, ist jedoch unerlässlich. Dies sollte zunächst im Fokus stehen.
Damit SieR
auf Ihrem Computer müssen Sie es herunterladen und installieren. Gehen Sie darauf zuhttps://cran.r-project.org/und laden Sie die neueste Version für Ihr Betriebssystem (Linux, MacOS oder Windows) herunter. Wählen Sie einen möglichst wohnortnahen Standort (in Hannover, den Universitäten Göttingen oder Münster). Dann R installieren. Jetzt kann R geöffnet und bedient werden (es wird empfohlen, es einmal auszuprobieren), aber die Handhabung wird über seinRStudio
deutlich vereinfacht. also mach jetzt weiterhttps://www.rstudio.com/products/rstudio/download/und laden Sie die kostenlose Version herunter. Das ist erstmal wichtigR
und dannRStudio
dort installiert istRStudio
R
erfordert
2.1 SterbenKonsole
Jetzt können wirRStudio
offen, alsoR
es wird ebenfalls im Hintergrund geöffnet, jedoch mit der vereinfachten Benutzeransicht. Die Codeeingabe kann in der belassen werdenKonsole
auszuführen Als Beispiel setzen
Systemzeit()
## [1] "2021-10-21 21:04:09 MESZ"
drinKonsole
und bestätigen Sie mit Enter, wodurch das Systemdatum und die Uhrzeit angezeigt werden. (Wie Sie vielleicht bemerkt haben, ist die Funktion so intuitiv wie möglich gehalten. Tipp: Versuchen Sie immer, die Absicht hinter den Funktionsnamen zu erraten.)
hast du das mitbekommenRStudio
Hat es Ihnen Codehinweise gegeben? (Wenn nicht, schreib nochmalSchwester.
und sehen Sie, welche anderen Informationen Sie über das System abrufen können). Wenn wir nur Teile von Funktionen eingeben, versuchen Sie esRStudio
um sie zu vervollständigen.R
hätte uns in seiner klassischen Version nicht geholfen.
Nun wollen wir selbst kreativ werden und Objekten Inhalte in Form von Werten oder Strings (Zeichen oder Zeichenfolgen) zuweisen. zentral ist die<-
Operator, den Sie jetzt kennen und nie vergessen werden. Es ist eigentlich ganz einfach: was stimmt<-
bildet das ab, was sich links von ihm befindet (Schlüsselwort: intuitiv). Schreiben Sie in dieKonsole
X <- 1
und sende den Code mit Enter. Um zu sehen, ob das funktioniert hat, werfen wir einen Blick auf das Objekt.X
ausgeben (X
drinKonsole
schreiben und mit Enter senden).
X
## [1] 1
Wie gesagt, das funktioniert nicht nur mit Werten wie 1, sondern auch mit Strings:
y <- "Hallo" y
## [1] "Hallo"
Hinweis: Code wird im gesamten Kurs als Codeschnipsel (die leicht grau hinterlegten Bereiche) im Fließtext dargestellt. Bereiche mit weißem Hintergrund zeigen die Ausgabe. Senden Sie die Code-Snippets, während Sie sie lesen, und sehen Sie, ob Sie dasselbe Ergebnis erhalten.
2.2globale Umwelt
jGeschichte
die beiden ObjekteX
jj
Sie befinden sich oben rechts im Fenster.globale Umwelt
erschien. Erglobale Umwelt
es ist der Ort, woR
erstellte Objekte und geladene Daten während der Dauer von aR
-Sitzung speichert. Es ist gewissermaßen der Raum, in dem wir arbeiten – daher das SynonymArbeitsraum
die du finden wirstRStudio
gibt uns mit dem Fenster oben rechts einen direkten Überblick über alle von uns erstellten Objekte und die verfügbaren Daten. Im Gegenteil, wir können in derGeschichte
(die Registerkarte auf der rechten Seite), um den gesamten Code zu finden, den wir geschrieben haben (nicht nur in der aktuellen Sitzung) (jetzt dieGeschichte
nur der zu erstellende CodeX
jj
ebenso gut wieSystemzeit()
).
Das wird dringend empfohlenglobale Umwelt
am Ende einer Sitzung zu leeren, das heißt, dieArbeitsraum
Speichern Sie NICHT beim Schließen von R (R-Studie
fragt danach). Das scheint ungewöhnlich, aber die Änderungen sind nur vorübergehend und wir ändern das.globale Umwelt
nicht nachhaltig. Gleichzeitig möchten wir natürlich die Datenmanipulationen in einer späteren Sitzung wiederholen können. Daher speichern wir den Code als Text (nicht die Änderungen an derglobale Umwelt
, die davon abgeleitet sind) in aSkript R
.
2.3Skript R
öffne einsSkript R
über
Datei -> Neue Datei -> R-Skript
Ö
Strg+Umschalt+N
Ö.Befehl+Umschalt+N
.
Von nun an müssen Sie den gesamten Code in diese Skripte schreiben. Beginnen Sie damit: Wir können das vorhandene Objekt erstellenX
wie folgt überschreiben:
x<-2
Wenn wir jetzt Enter drücken, ändern wir nichts (vglglobale Umwelt
), scrollen wir einfach zur nächsten Codezeile im Skript. Wir können es jedoch
-> laufen
(oben rechts über dem Skript)
Ö
Strg+Einleitung
Ö.cmd+enter
Codezeilen aus dem Skript in dieKonsole
schicken. ein Blick hineinglobale Umwelt
bestätigt:X
ihm wurde der Wert 2 zugewiesen (wenn das nicht funktioniert hat, stellen Sie sicher, dass sich der Cursor auf der Zeile befindet, die mit dem endetKonsole
sollte gesendet werden, wenn Sie den Code senden).
Die Skripte speichern also den Code in Form von Text, damit wir ihn später wiederverwenden und überprüfen können. Sie sind nicht nur wichtig für die Erhaltung des Codes, sondern helfen uns auchReproduzierbarkeitum unsere Analyse zu bestätigen. Wissenschaftliche Zeitschriften verlangen heute regelmäßig, dass mit dem Manuskript eines Artikels reproduzierbares Material vorliegt, auf dessen Grundlage die Analyse reproduziert werden kann. Es wird auch erwartet, dass im Rahmen der Lehrveranstaltung empirische Arbeiten mit Replikatmaterial vorgestellt werden, um die darin berichteten Ergebnisse zu verifizieren.
Um dies zu erreichen, können wir unser Skript speichern. Wir speichern es zunächst manuellArchiv
und dannSpeichern als...
wählen. In Sitzung 13 werden wir lernen, einzelne Objekte zu speichern.
2.4 Hilfe und mehr
NebenSkript R
(oben links), dieKonsole
(unten links) und dieglobale Umwelt
oder derGeschichte
(oben rechts) gibt es unten rechts ein viertes Fenster, das vorher noch nicht erwähnt wurde. Tabs sind in der App wichtig.Raten
,Pakete
jHilfe
. NiedrigRaten
drin seinR
erstellte Bilder (mehr dazu in 4. und in den Sitzungen 6 und 8). NiedrigPakete
erhalten wir eine Übersicht über installierte und geladene Pakete (mehr dazu unter 4.). Endlich können wir unterHilfe
Zugriff auf Referenzhandbücher ("Bedienungsanleitungen") für einzelne Funktionen. Alles, was wir tun müssen, ist den Namen einer Funktion (ohne Klammern) in die Suchleiste einzugeben. Alternativ können wir ein Fragezeichen verwenden.?
zusammen mit der Funktion in derKonsole
eingeben (oder natürlich per Skript senden):
?mesa
Siehe Hilfeeintrag für die Funktion.mesa()
die dir jetzt gezeigt wird. ErR
- Referenzhandbücher sind im Allgemeinen wie dieser Eintrag mit den Elementen Beschreibung, Verwendung, Argumente usw. aufgebaut. Es ist oft nützlich, Informationen über die Funktionsargumente zu haben (mehr dazu in 4.), "Siehe auch" für verwandte oder alternative Informationen. Funktionen und insbesondere die "Beispiele". Diese Anwendungsbeispiele sind sehr hilfreich.R
- Verstehen Sie die Funktionen und wie Sie sie verwenden.
Nun wollen wir einen ersten Blick auf die Kodierung mit werfenR
erhalten. Dazu ist es unerlässlich, die „Klassen“ zu kennen, in denen Objekte existieren können.R
unterscheidet zwischen fünf einfachen (sogatomar
) Objektklassen:Charakter,numerisch,ganz,Komplexjlogisch. Vier davon sind für uns direkt relevant und werden im Folgenden näher betrachtet. Mit der Funktion können wir feststellen, zu welcher „Klasse“ die Objekte gehörenKlasse()
ausgeben lassen.
Figurensind Zeichen und Zeichenfolgen undR
Zeichenfolgendarstellung. Sie sind in doppelte Anführungszeichen eingeschlossen.""
markiert:
Klasse ("abc")
## [1] "Zeichen"
ganze Zahlensie sind ganze Zahlen auf einem diskreten Zahlenstrahl wie 1, 2, 3, ... Zwischen 1 und 2 zum Beispiel gibt es nichts. Um sie von fortlaufenden Zahlen zu unterscheiden, benötigen wir aL
Index.
Klasse (1L)
## [1] "Ganzzahl"
Zahlenstellen den fortlaufenden Zahlenstrahl dar mit 1, 1,5, 2,6345,... Zahlen werden normalerweise dargestellt alsZahlenGerettet.
Klasse 1)
## [1] "numerisch"
logischbezeichnet die logischen Wahr/Falsch-AussagenWAHR
jFALSCH
.
Klasse (WAHR)
## [1] "logisch"
Hälfteexpliziter Zwang(z. B. "explizite Einschränkung") können wir die Klasse von Objekten absichtlich ändern. Klassen können nur geändert werden, wenn genügend Informationen vorhanden sind, um die Objekte in anderen Klassen sinnvoll zu definieren. In der Praxis geht es oft nur um ZwangFiguren,Zahlenjlogischrelevant, weshalb hier nur auf diese drei Klassen eingegangen wird.
Ein Objekt der Klasse.logischwir können das verstehennumerisch
als.numeric(TRUE)
## [1] 1
as.numeric(FALSE)
## [1] 0
Das WieCharakterdefinieren.
als.Zeichen(TRUE)
## [1] "WAHR"
als.Zeichen (FALSE)
## [1] "FALSCH"
Logische Wahr/Falsch-Aussagen werden als angenommennumerischdie Werte 1 und 0 und asCharakterdie entsprechenden Zeichenfolgen der Wörter"WAHR"
j"FALSCH"
zugewiesen.
ZahlenlassenFigurenconvert , wodurch Zahlen in Zeichen reduziert werden.
als.Zeichen(1)
## [1] "1"
als.Zeichen(15)
## [1] "15"
Wir können auchZahlenAlogischKonvertieren. Allerdings geht damit ein Informationsverlust einher, da jede positive und negative Zahl zunimmtWAHR
und 0 bisFALSCH
gezwungen sein".
wie.logisch(1)
## [1] WAHR
wie.logisch(0)
## [1] FALSCH
wie.logisch(-15)
## [1] WAHR
Wir können es schließlich auchCharakter-Objekte auchnumerischkonvertieren, wenn es sich um Zahlen handelt. Abfolgen von oder mit Buchstaben sind dagegen numerisch sinnlos. Folglich ist aDAS
(„nicht verfügbar“) produziert.
as.numeric("1")
## [1] 1
como.numeric("1a")
## Warnung: Durch Konvertierung erstellte NAs
## [1] DAS
como.numeric("abc")
## Warnung: Durch Konvertierung erstellte NAs
## [1] DAS
Außerdem ist es nur möglichFigurenInlogischwenn es die Zeichenketten sind (exakt richtig geschrieben!)"WAHR"
Ö"FALSCH"
Fakten.
as.logical("WAHR")
## [1] WAHR
as.logical("TURE")
## [1] DAS
like.logical("1")
## [1] DAS
sie sind totalFigurenAlso das minimal budgetierte: alles kann seinCharakterausgedrückt werden.Zahlenannehmen, dass etwas als Zahl ausgedrückt werden kann.logischDie mutmaßlichsten schließlich sind: Sie erwarten Dichotomie. Folglich kann etwas existieren (WAHR
) oder abwesend (FALSCH
), mehr geht nicht. Das klingt alles umständlich, aber Objektklassen sind inR
direkt relevant für die Datenanalyse. Du sparst dir später viel Arbeit, wenn du es dir jetzt einprägst. Sie spielen beispielsweise im Zusammenhang mit Vektoren eine wichtige Rolle.
Vektoren sind die grundlegendsten und möglicherweise einfachsten Arten von Objekten inR
. Sie dienen zum Speichern von Werten oder Zeichenketten. Tatsächlich haben wir in den vorherigen Beispielen Vektoren erstellt.
x <- 2x
## [1] 2
die Klammern[1]
bezeichnen die Ausgabe von Vektoren und geben an, dass 2 der erste (und einzige) Wert innerhalb des Vektors istX
Ist. Vektoren können auch mehrere Elemente enthalten. der Doppelpunkt:
bedeutet „bis“.
x <- 4:38 # Der Vektor `x` enthält Zahlen von 4 bis 38x
## [1] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28## [26] 29 30 31 32 33 34 35 36 37 38
Aus den Klammern in der Ausgabe können wir erkennen, dass 4 das erste und 29 das 26. Element innerhalb des Vektors istX
Ist. 31 ist somit Element 28. Mit der Funktion können Vektoren gebildet und mehrere Elemente zu diesen kombiniert werdenC()
(zu "kombinieren" oder "verketten"). Vektoren nehmen immer die Klasse der in ihnen gespeicherten Objekte an:
x <- c(1, 2, 3)Klasse(x)
## [1] "numerisch"
x <- c("a", "b", "c")Klasse(x)
## [1] "Zeichen"
x <- c(WAHR, FALSCH, WAHR, WAHR, FALSCH) Klasse(x)
## [1] "logisch"
4.1 Vektoren und Klassen
Das Besondere an Vektoren: Sie können nur ein und dieselbe Klasse von Objekten enthalten. Sie können beispielsweise nur numerische Daten enthalten oder nurFigurenenthalten. Wenn wir versuchen, Elemente verschiedener Klassen in einem Vektor zu gruppieren, werden sie automatisch der Klasse mit den wenigsten Voraussetzungen zugeordnet.
x <- c(1, "a")Klasse(x)
## [1] "Zeichen"
x <- c(1, TRUE)Klasse(x)
## [1] "numerisch"
x <- c("a", TRUE)Klasse(x)
## [1] "Zeichen"
Dieser Vorgang wird aufgerufenangedeuteter Zwang("stillschweigender Zwang") und weil tückisch istR
es zeigt keine Fehlermeldung über den Klassenwechsel, obwohl es zu einem Informationsverlust kommt. Wir müssen also wissen, was wir tun. Daher ist es wichtig, die Klassen der Objekte zu kennen.
4.2 Auswahl von Elementen in Vektoren
Einzelne Elemente innerhalb von Vektoren können durch eckige Klammern getrennt werden[]
wählen. Dies ist besonders nützlich für längere Vektoren. Dazu erstellen wir zunächst einen VektorX
, die die ersten acht Buchstaben des Alphabets enthält. das ist also einerCharakter-Vektor. Danach wählen wir ein Element aus, indem wir es anhand seiner Position innerhalb des Vektors mit den eckigen Klammern identifizieren.
x <- c("a", "b", "c", "d", "e", "f", "g", "h")x[3] # Wähle das dritte Element
## [1] "c"
x[4:7] # Elemente vom vierten bis zum siebten auswählen
## [1] "d" "e" "f" "g"
Der BefehlC()
("combine", "concatenate") kann auch hier verwendet werden:
x[c(2, 5)] # Zweites und fünftes Element auswählen
## [1] "b" "e"
x[c(5, 5, 5)] # wähle das fünfte Element dreimal aus
## [1] "und" "und" "und"
Ebenso können wir negative Entscheidungen treffen und allesaußerWählen Sie die von uns angegebenen Elemente aus. Artikel, dieNEINwir auswählen wollen, fügen wir das Minuszeichen hinzu-
.
x[-5] # alle Elemente außer dem fünften auswählen
## [1] "a" "b" "c" "d" "f" "g" "h"
x[-c(2, 6)] # wählt alle Elemente außer dem zweiten und sechsten aus
## [1] "a" "c" "d" "e" "g" "h"
Schließlich können wir mithilfe eines logischen Vektors eine Auswahl treffen. Dieser muss dieselbe Länge haben wie der Vektor, den wir auswählen möchten. ansonsten verstehenR
nicht in welchem Element inX
bezieht sich auf welches Element im neuen Vektor. Den logischen Vektor bilden wir mitC()
innerhalb der Klammern vonX
.
x[c(WAHR, FALSCH, FALSCH, WAHR, WAHR, WAHR, FALSCH, WAHR)]
## [1] "a" "d" "e" "f" "h"
Hier wurde acht Mal eine Richtig/Falsch-Aussage gemacht, die so viele Elemente enthielt wieX
. Somit ist für jedes der Elemente vonX
eine entsprechende Aussage.
Diese Form der Selektion ist in der Praxis zu kompliziert. Dieses Beispiel hilft uns jedoch zu verstehen, wie logische Vergleiche funktionierenR
Funktion. Wenn wir zum Beispiel eine Namensliste haben und wissen wollten, ob „Christoph“ drauf steht, antworte unsR
in Form eines logischen Vektors:
nombres <- c("Helena", "Philipp", "Jakob", "Julia", "Christoph", "Johannes", "Nicole", "Kerstin") nombres == "Christoph"
## [1] FALSCH FALSCH FALSCH FALSCH RICHTIG FALSCH FALSCH FALSCH
als Ausgabe generiertR
ein logischer Vektor. Dies sagt uns, dass innerhalb des VektorsNamen
die Aussage, dassNamen
gleich "Christoph" ist "true" auf dem fünften Platz. Alles andere ist falsch.
Noch ergiebiger sind solche Vergleiche auf der Grundlage numerischer Daten. Wenn wir einen Vektor haben, der verschiedene Jahre speichert, können wir auf ähnliche Weise prüfen, ob er das Jahr 2010 enthält. Außerdem konnten wir vergleichende Zeichen verwenden, um zu prüfen, ob frühere oder spätere Jahre enthalten sind. wir gebrauchen==
"selbst",!=
"ungleich",<
"kleiner",>
"größer als",<=
"weniger als" und>=
"größer als oder gleich wie"
Jahre <- c(2013, 2005, 1995, 2017, 2021, 1989, 2010, 2018)Jahre == 2010 # Welche Elemente sind gleich dem Jahr 2010?
## [1] FALSCH FALSCH FALSCH FALSCH FALSCH FALSCH RICHTIG FALSCH
Jahre < 2010 # Welche Elemente sind kleiner (älter) als das Jahr 2010?
## [1] FALSCH RICHTIG RICHTIG FALSCH FALSCH RICHTIG FALSCH FALSCH
Jahre >= 2010 # Welche Elemente sind größer/gleich (vor oder gleich) dem Jahr 2010?
## [1] RICHTIG FALSCH FALSCH RICHTIG RICHTIG FALSCH RICHTIG RICHTIG
years != 2010 # Welche Elemente sind nicht gleich (nicht) Jahr 2010?
## [1] RICHTIG RICHTIG RICHTIG RICHTIG RICHTIG RICHTIG FALSCH RICHTIG
Wir können die logischen Vektoren nutzen, die die Ausgabe dieser Auswahlanforderungen darstellen. Wenn wir wissen wollen, welche Jahre seit 2010 enthalten sind, schreiben wir:
Auswahl <- Jahre >= 2010Jahre[Auswahl]
## [1] 2013 2017 2021 2010 2018
Folgendes ist effektiver, da der Code kürzer ist, aber das Ergebnis dasselbe ist:
Jahre[Jahre >= 2010]
## [1] 2013 2017 2021 2010 2018
Technisch gesehen passiert in beiden Fällen Folgendes:R
wendet den logischen Vektor in Klammern auf den Vektor anJahre
und spezifiziert die Elemente vonJahre
von wo der logische Vektor alsWAHR
identifiziert. Elemente wieFALSCH
identifiziert werden ignoriert. Dann haben wir eine Teilmenge vonJahre
Sie sind definiert.
InCharakter-Strings können solche Dur-Moll-Vergleiche nicht sinnvoll interpretiert werden (kein Name ist größer oder kleiner als ein anderer). Wenn wir mehrere Elemente in einem habenCharakter-Vektoren auswählen wollen, die anbietenlogische Operatoren |
(Alt+7
Ö.Option+7
) für „oder“ und&
für "und" in.
Namen[Namen == "Helena" | Namen == "Nicole"]
## [1] "Helena" "Nicole"
Namen[Namen == "Helena" & Namen == "Nicole"]
## Zeichen(0)
Namen[Namen != "Helena" | Namen != "Nicole"]
## [1] "Helena" "Philipp" "Jakob" "Julia" "Christoph" "Johannes" ## [7] "Nicole" "Kerstin"
Namen[Namen != "Helena" & Namen != "Nicole"]
## [1] "Philipp" "Jakob" "Julia" "Christoph" "Johannes" "Kerstin"
Die erste Codezeile fragt, ob ein Element inNamen
ist gleich "Helena" oder gleich "Nicole". Das gilt für „Helena“ und „Nicole“. Die zweite Zeile fragt, ob ein Element inNamen
entspricht "Helena" und "Nicole". Da jedes Element nur ein Name ist, ist es kein Element. Die dritte Zeile fragt, ob ein Element nicht „Helena“ oder „Nicole“ ist. Da kein Element beides sein kann, können alle Elemente beides sein. Schließlich fragt Zeile 4, ob ein Element weder „Helena“ noch „Nicole“ ist. Dies gilt für alle Artikel außer „Helena“ und „Nicole“. Wenn wir also eine Liste aller Namen außer Helena und Nicole haben wollen, machen wir das so:
andere <- Namen[Namen != "Helena" & Namen != "Nicole"]andere
## [1] "Philipp" "Jakob" "Julia" "Christoph" "Johannes" "Kerstin"
4.3 Einfache Operationen mit Vektoren
Schließlich können wir auch einfache mathematische Operationen mit Vektoren durchführen.R
erkennt die in einem Vektor gespeicherten Werte und verwendet diese zur Berechnung.
x <- 2x + x
## [1] 4
4-x
## [1] 2
y <- 3x * y
## [sechzehn
Jahr / 2
## [1] 1.5
x ^ 3
## [1] 8
R
Es hat auch einige mathematische Funktionen, die wir üblicherweise auf Vektoren anwenden:
sum(x, y) # Summe von x und y
## [15
sqrt(x) # Quadratwurzel von x
## [1] 1.414214
mean(c(x, y)) # arithmetisches Mittel von x und y (beachte die Verwendung von `c()`)
## [1] 2.5
median(c(x, y)) # Median von x und y
## [1] 2.5
Durch den Umgang mit Klassen, Vektoren und die Kenntnis des Programms sind wir Funktionen wieSystemzeit()
,C()
jKlasse()
getroffen. Bisher haben wir jedoch noch nicht im Detail darauf eingegangen, welche internen Strukturfunktionen sie haben und wie sie implementiert sindR
Werden erstellt.
5.1Base
-R und die Grundstruktur von Funktionen
Funktionen sind Paketen zugeordnet. Sie können nur genutzt werden, wenn wir das zugehörige Paket installiert und geladen haben. Wir können herausfinden, zu welchem Paket eine Funktion gehört, indem wir die Hilfsfunktion (siehe oben) für die Funktion aufrufen. Wir finden das Paket in der oberen linken Ecke zwischen geschweiften Klammern hinter dem Funktionsnamen.
?Zusammenfassung
Die FunktionZusammenfassung()
daher gehört es zum PaketBase
.Base
ist die OriginalverpackungR
und wird mit teilenR
Eingerichtet. Es enthält grundlegende Funktionen, ohne die eine Datenanalyse nicht erfolgreich durchgeführt werden kann. Für speziellere Anwendungen müssen wir jedoch spezielle Pakete installieren.
Funktionen haben Argumente, die wir angeben können oder manchmal müssen. So bestimmen wir wasR
die Funktion verwandt ist und wie genau sie ausgeführt werden soll. Die Argumente stehen in den eckigen Klammern.()
hinter dem Funktionsnamen und werden mit dem Gleichheitszeichen angegeben (einfach)=
auf einen bestimmten Wert fixiert oder mit Inhalt versehen. Mehr oder weniger:
Funktion (Argument1 = a, Argument2 = b)
.
Einige Argumente müssen explizit angegeben werden, während andere mit einer Standardeinstellung (dem "Standard") versehen sind.R
generiert eine Fehlermeldung, wenn keine erforderlichen Argumente angegeben werden.
summary(object = ) # Argument "object =" nicht angegeben
summary(object = years) # funktioniert jetzt
## Mindest. 1.Qu. Mediana Media 3erQu. max. ## 1989 2002 2012 2008 2017 2021
Auch müssen die Argumente nicht explizit deklariert werden. Da sie eine feste Reihenfolge haben, reicht es aus, wenn wir sinnvoll interpretierbare Eingaben in der richtigen Reihenfolge zwischen die Befehlsklammern setzen. Insbesondere bei Funktionen mit einem Argument wird normalerweise die Benennung des Arguments gespeichert.
Zusammenfassung (Jahre)
## Mindest. 1.Qu. Mediana Media 3erQu. max. ## 1989 2002 2012 2008 2017 2021
RStudio
hilft uns, indem es die Argumente einer Funktion vorschlägt, wenn wir den Cursor in die Klammern einer Funktion und setzenWimper
Drücken Sie. Auf diese Weise müssen Sie sich die Argumente verschiedener Funktionen nicht merken.
5.2 Installieren und Laden von Paketen
Als Beispiel für ein spezialisiertes Paket wollen wir jetzt das Paketggplot2
erfahren, dass wir uns zum Thema Datenvisualisierung wiedersehen werden. Wir installieren Pakete mit dem Befehlinstall.packages()
, wobei Paket in Anführungszeichen steht""
Es ist etabliert.
install.packages("ggplot2")
Ist jetztggplot2
auf unserem Rechner installiert. Werfen Sie einen Blick auf das Fenster unten rechtsPakete
wenn du es finden kannst. Damit wir es verwenden können, müssen wir es auch laden. MitBibliothek()
holen wir es bitte aus der Bibliothek (eigentlich finden Sie es unten rechts unterPakete
die BezeichnungSystembibliothek
für den Ort, an dem alle Pakete gelagert werden).
Bibliothek (ggplot2)
Jetzt wird das Paket geladen und wir können auf seine Funktionen zugreifen. Wenn du wieder unter ihm bistPakete
Sie werden feststellen, dass das Kästchen links neben dem Paket jetzt aktiviert ist. Alternativ hätten wir das Paket auch per Mausklick laden können.
Als nächstes wollen wir eine Funktion des Pakets.ggplot2
tragen. Mitqplot()
(für "schnelles Diagramm") ist es ziemlich einfach, gut aussehende Diagramme zu erstellen. Dazu verwenden wir den DatensatzMeilen pro Gallone
über den Kraftstoffverbrauch von Automodellenggplot2
zur Veranschaulichung geliefert (weitere Informationen untermpg
).Meilen pro Gallone
enthält unter anderem Informationen darüber, wie viele Meilen ein bestimmtes Modell mit einer Gallone (US-Flüssigkeitsmaß) Benzin fahren kannStadt
für Meilen in der Stadt undStraße
kilometerweit auf der Autobahn. Um herauszufinden, ob sich der Anstieg des Verbrauchs in städtischen und ländlichen Gebieten gleichermaßen widerspiegelt, können wir ein Streudiagramm dieser beiden Variablen zeichnen.
Um das Streudiagramm zu zeichnen, benötigen wir (mindestens) die ArgumenteX
- womit wir definieren, welche Variable auf die X-Achse abgebildet werden soll,j
- womit wir die Y-Achse definieren, undDaten
- mit dem wir den verwendeten Datensatz definieren - ermitteln. Wir wollen Konsum in der StadtStadt
zeigen auf der x-Achse den Verbrauch auf der StraßeStraße
auf der Y-Achse und verwenden Sie den DatensatzMeilen pro Gallone
.
qplot(x = Stadt, y = Autobahn, Daten = mpg)
Da die Reihenfolge der ersten beiden Argumente festgelegt ist, müssen wir sie nicht explizit benennen (siehe Reihenfolge der Argumente in?qplot
). Weil mehr Argumente (...
) möglich sind, wird die Bestellung storniert, damit wir dies tun könnenDaten
müssen explizit erwähnt werden.
qplot(Stadt, Autobahn, Daten = mpg)
Wie wir sehen, besteht ein (erwarteter) deutlicher Zusammenhang zwischen dem Konsum in der Stadt und dem Konsum auf dem Land. Eine eindeutige Vorhersage des Autobahnverbrauchs anhand eines Werts für den Stadtverbrauch ist jedoch nicht möglich: Verschiedene Modelle mit gleichem Stadtverbrauch unterscheiden sich im außerstädtischen Verbrauch um bis zu 8 Meilen pro Gallone (siehe cty == 15).
Diese Einführungsveranstaltung bot eine breite Einführung in die Datenanalyse.R
. der Code wird drin seinR
umKonsole
gesendet, während wir im warenSkript R
auf dem Computer speichern. AnArchiv
jSpeichern als...
Skripte werden gespeichert. Dies ist notwendig, damit unsere Analyse wiederverwendbar, kontrollierbar und reproduzierbar ist. Die dabei erstellten und geänderten Objekte werden im gespeichertglobale Umwelt
für die Dauer einer Sitzung gespeichertGeschichte
speichert alle jemals gesendeten Codes.Figuren,ganze Zahlen,Zahlenjlogischsind vier Klassen von häufig gefundenen Objekten. Klassenwechsel sind mit Informationsverlust verbunden und nur dann erfolgreich, wenn genügend Informationen vorhanden sind, um Objekte in anderen Klassen sinnvoll zu interpretieren. Vektoren enthalten immer Elemente derselben Klasse. Pakete enthalten Funktionen und sind auf unterschiedliche Weise spezialisiert. Einige Pakete sind vorinstalliert, andere müssen eingebunden werdeninstall.packages()
installiert und mit vor jedem GebrauchBibliothek()
Laden. Funktionen nehmen Argumente entgegen, von denen nur einige angegeben werden müssen. Solange die Reihenfolge eine eindeutige Zuordnung erlaubt, müssen die Argumente nicht explizit genannt werden.
- Installieren
R
jR-Studie
wie in 2 beschrieben. Führen Sie die Codeschnipsel aus 2 aus. - Erstellen Sie zwei numerische Vektoren mit jeweils fünf beliebigen Werten. Addiere die Vektoren und multipliziere sie. Erstellen Sie einen weiteren Vektor, indem Sie die beiden Vektoren miteinander kombinieren.
- Erstellen Sie einen Zeichenvektor, der die Buchstaben des Alphabets enthält. Erstellen Sie einen zweiten Zeichenvektor, der nur die Konsonanten als Teilmenge des ersten enthält.