Git Product home page Git Product logo

modar's Introduction

Moderne Datenanalyse mit R

Eine Einführung in moderne Techniken der Datenanalyse mit R

Sebastian Sauer, 2018

Bezug

Material

  • Syntax: Die R-Syntax aller Kapitel
  • Diagramme: Die Diagramme aller Kapitel
  • Folien: Folien eines Beispiel-Curriculums auf Basis des Buches
  • Errata

Überblick

Das Buch 'Datenanalyse mit R' gibt eine Einführung zu aktuellen Techniken der Datenanalyse mit R. Der Schwerpunkt liegt auf der Anwendung, weniger auf den theoretischen Hintergründen. Zielgruppe sind Studierenden und Praktiker, die gängige Fragestellungen der Datenanalyse bearbeiten möchten. Anhand des typischen Ablaufs von Datenanalyse-Projekten werden wichtige Probleme besprochen und Lösungen demonstriert. Leser sollen befähigt werden, die vorgestellten Fragestellungen selber lösen zu können - und zwar lösen in dem Sinne, dass nicht (nur) ein theoretisches Verständnis vorliegt, sondern dass aus echten Daten Ergebnisse von statistischen Modellen berechnet und interpretiert werden können. Dabei werden die Phasen des Daten einlesen, Daten aufbereitens, Daten visualisieren, Daten modellieren und Ergebnisse kommunizieren diskutiert. Mehrere Datensätzen aus angewandten wirtschaftlichen Kontexten fließen ein; jedes Problem wird an echten Daten diskutiert. R wird als reichhaltige Analyseumgebung eingeführt und konsequent genutzt; der Stil der R-Verwendung ist von aktuellen Konzepten wie denen des "tidyverse" geprägt. Es werden sowohl grundlegende, einfache als auch partikulare, komplexere Themen besprochen. Zu jedem Kapitel liegen Übungsaufgaben vor, um das Gelernte zu vertiefen. Neben klassischen statistischen Themen wie explorative Datenanalyse und inferenzstatistische Konzepte und Teste fließen moderne Verfahren wie baumbasierte Methoden, Textmining und statistisches Lernen reichhaltig ein.

Inhalt

Vorwort

I Rahmen 1
1 Statistik heute
2 Hallo, R
3 R starten
4 ERRRstkontakt

II Daten einlesen
5 Datenstrukturen
6 Datenimport

III Daten aufbereiten

7 Datenjudo
8 Deskriptive Statistik
9 Praxisprobleme der Datenaufbereitung
10 Fallstudie: Datenjudo

IV Daten visualisieren

11 Grundlagen der Datenvisualisierung mit ggplot2
12 Fortgeschrittene Themen der Visualisierung
13 Fallstudie: Visualisierung
14 Geovisualisierung

V Modellieren

15 Grundlagen des Modellierens
16 Inferenzstatistik
17 Simulation der Stichprobenverteilung

VI Geleitetes Modellieren

18 Lineare Modelle
19 Klassifizierende Regression
20 Fallstudie: Titanic
21 Baumbasierte Verfahren
22 Prädiktive Modellierung von Kreditwürdigkeit mit caret

VII Ungeleitetes Modellieren

23 Clusteranalyse
24 Grundlagen des Textmining
25 Fallstudie: Twitter-Mining

VIII Kommunizieren

26 RMarkdown

IX Rahmen 2

27 Fallstudie zum Projektmanagement
28 Programmieren mit R
29 Programmieren mit dplyr

Anhang

Datensätze


ALLE CSV-DATENSÄTZE als Zip-Archiv

ALLE Rdata-DATENSÄTZE als Zip-Archiv

Diagramme

Download

Lizenz

R-Syntax

Download

Lizenz

Beispielkurs

Webseite eines Kurs zu Inhaltes des Buches

modar's People

Contributors

sebastiansauer avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

modar's Issues

9.3.4 Spaltennamen ändern - Aufgepaßt-Textbox

Seite 134 unten steht in der Aufgepasst-Box:

Übrigens kann man den gleichen Effekt mit dplyr::select() auch erreichen ... Probieren Sie mal rename(stat_test, Punkte = score) und vergleichen Sie das Ergebnis.

Die rename Funktion wurde in den Zeilen oberhalb der Box bereits geschrieben, insofern ist dies ein identisches Duplikat. Was wohl gemein ist, ist die Umbenennung von Spaltennamen in folgender Art:
select( "Punkte" = "score", everything() ## sicherstellen, dass alle anderen Spalten unverändert bleiben )

Gruß, Lothar B. Blum

Doppelte Zeile auf S.75

Kap 7, Seite 75 unten:
Zeile doppelt im Codeabschnitt "In diesem Kapitel werden folgende Pakete und Daten benötigt":
data(stats_test, package = "pradadata")

Gruß, Lothar B. Blum

Lösung Deskriptive Statistik

Hallo,
zu den Aufgaben auf Seite 114 gibt´s "nur" 9 Lösungen - aber 10 Fragen.
Ich bin mir nicht sicher, ob die Lösung für die Aufgabe 9 oder 10 vergessen wurde. Ich hätte nämlich gesagt, dass die 9 ein 'F' sein müsste und 10 ein 'R' ist.

Wie lautet denn die Lösung? :-)

Aufgabenliste - eine Aufgabe separieren

Kapitel 7.6, Seite 101, Aufgabenblock 'Richtig oder falsch?'
Unter Punkt 4) sind zwei Aufgaben zusammen dargestellt, die eigentlich getrennt gehören. Eine Aussage zum join() und eine zweite Aussage zum left_join()

Damit würde auch die Unstimmigkeit behoben, dass in der zugehörigen Fussnote 8mal Antworten gegeben werden, in der Liste aber nur (numerische) 7 Aufgaben ausgewiesen sind.

Gruß, Lothar B. Blum

9.2.1 Doppelte Fälle löschen - Falsche Aussage im Text

In 9.2.1 Doppelte Fälle löschen steht auf S. 126:

In dem Datensatz gibt es offenbar keine Dubletten. Alle Werte von date_time sind verschieden.

Dieses ist nicht richtig. Wie der vorherige Code Chunk auf S. 125 zeigt, gibt R bei der Evaluierung den Wert 1645 zurück, also eins weniger als die 1646 Zeilen des gesamten Datensatzes.
Es gibt eine Dublette in date_time. Dieses ist der Wert 06.02.2016 11:18:15, der sowohl in row number 90 als auch 91 auftaucht.

mfG
Lothar B. Blum

12.1.1 Fehler im Fließtext

Kap. 12.1.1, S. 190:
Im Fließtext steht:

"...zuständig ist, hier sex, eine Farbe ..."

Richtig ist:
"...zuständig ist, hier dest, eine Farbe ..."

Gruß, Lothar B. Blum

11.4 ggplot(), Seite 186

Auf S. 186 steht der letzte Aufgabenblock "Richtig oder falsch" zum Kap. 11.4:
Der Aufgabenblock umfasst 9 Fragen. In der Fußnote 27) sind aber 10 Lösungen angegeben.

Gruß, Lothar B. Blum

9.2.2 Nach Anomalien suchen - Code Chunk deckt sich nicht mit referenzierter Abbildung im Text

Kap. 9.2.2, S. 126:

Wer mag, kann sich für diesen Zweck ein Diagramm ausgeben lassen.

Es folgt ein Code mit dem Datensatz stats_test

Schauen wir uns noch die Verteilungen der Item-Antworten an (s. Abb. 9.2); ...

Die Abbildung 9.2 zeigt aber die Verteilung für die Items i01 ... i10 aus dem Datensatz extra.
Dies ist nicht notwendigerweise falsch, da im Text der Zusammenhang zwischen Code und Abbildung nur lose hergestellt wird. Der Leser würde diesen Zusammenhang allerdings erwarten.

Fußnotenlösung zu Aufgaben S. 114 unstimmig

Auf S. 114 werden 10 Aufgaben gestellt. Die Lösungen dazu stehen als Fußnote ebenfalls auf S.114. Sie umfassen jedoch nur 9 Richtig/ Falsch Angaben. Die ersten 6 sind korrekt, danach wird es unübersichtlich.

9.1.6. Fehlende Werte ersetzen - Codes verändern Datentyp

zu 9.1.6 Fehlende Werte ersetzen (S.122 f)
der für die Anwendung der beiden Funktionen replace_na() und replace() vorgeschlagene Code:

  • führt im ersten Fall zu einer Fehlermeldung: ! Can't convert from replace$interest to data$interest due to loss of precision.
  • führt im zweiten Fall dazu, dass die Variable interest vom Datentyp float zu Datentyp integer konvertiert.
    In beiden Fällen ist der Grund, dass die Berechnung des Mittelwertes zur Imputation mittels mean() eine Dezimalzahl ergibt. Dieses tut im zweiten Fall replace() noch nicht weh, ist aber nicht mehr konsistent mit den anderen Spalten im Dataframe.
    Lösung in beiden Fällen ist die Umwandlung der Dezimalzahl in eine Integer mittels as.integer().

11.2.3 Eine oder zwei nominale Variablen

S.172 in der R-Pseudo-Syntax:

Der horizontale Strich heißt "oder".

Gemeint ist das Zeichen: |
Daher muss natürlich heißen:

Der vertikale Strich heißt "oder".

Genauer: das Zeichen heißt nicht 'oder', sondern bedeutet 'oder'. Der Name dieses Zeichens ist "Pipe", was aber an dieser Stelle zu weit führt bzw. für den Lernenden verwirrend ist.

Gruß, Lothar B. Blum

10.1 Deskriptive Statistiken …

S.148 unten:

Dabei definieren Sie substanziell als $|r| = .2$

Es muss natürlich heißen $|r| > .2$ , so wie es auch im darauf folgenden Code Chunk steht.

Gruß, Lothar B. Blum

13.2.5 Text-Labels

Kap. 13.2.5, S. 208:
Im Fließtext steht:
"Die Funktion rev(levels(data2$items) dreht die Reihenfolge ...

Diese Textstelle referenziert den vorherigen Code. In diesem steht aber folgender Funktionswert:
labels = rev(levels(extra_items_long_rev$items)

Gruß, Lothar B. Blum

Druckfehler im Buch S.87

Druckfehler in Kapitel 7.2, S.87:

Im Text steht:
"Ergänzt man den Parameter nr.rm = TRUE, so ignoriert R fehlende Werte"
Der Parameter lautet korrekt: na.rm = TRUE
Im darunter dargestellten Codebeispiel ist der Parameter korrekt abgedruckt.

Gruß, Lothar B. Blum

"profiles" Datensatz vom "okcupiddata" Paket ist nicht mehr verfügbar

Hallo,

Bin neu auf GitHub und hoffe, dass die Vorgehensweise bzw. meine Angaben so passen.

Arbeite mich aktuell durch das Buch und bin nun bei Kapitel 7 "Datenjudo" angekommen.

Darin wird u.a. der "profiles" Datensatz vom "okcupiddata" Paket benötigt.
Das Paket dürfte seit 27.07.2021 nicht mehr existieren (https://cran.r-project.org/web/packages/okcupiddata/index.html).

Es gibt offenbar eine überarbeitete Version auf GitHub (https://github.com/rudeboybert/JSE_OkCupid).
Habe mir den Datensatz (profiles_revised.csv.zip) geladen und zumindest die ersten im Buch angeführten Filter in Kapitel 7.2 funktionieren nach wie vor (selbe Bezeichnungen der Spalten, usw.).

Ob der Umfang des Datensatzes nun größer/kleiner geworden ist und/oder die weiteren Befehle im Verlauf des restlichen Buches funktionieren, kann ich noch nicht bestätigen :)

Code Chunk auf Seite 122

Am Ende von Kap. 9.1.5 (S.122) wird der nächste Schritt der Analyse zu fehlenden Werten in den Spalten i01 bis i10 eingeleitet mit "... so dass wir wissen, bei welchem item (Spalte) und welcher Zeile (Teilnehmer) ein Wert fehlt."
Der nachfolgende Code Chunk filtert aber die NA-Werte aus und man kann die entsprechenden Teilnehmer genau nicht mehr sehen:
extra %>%
drop_na(code, i01:i10)
Dies ist auch an den Ergebnissen des Code Chunks ablesbar, in dem keine NA-Werte auftauchen.

Zum erwarteten Ergebniss führt beispielsweise der folgende Code:
extra %>%
filter(if_any(i01:i10, is.na))

Gruß, Lothar B. Blum

code for plots

hello - would it be possible to provide the code for the plots in static/images?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.