Sitzung 6

Wiederholung

Das Wichtigste vom letzten Mal

Tabellen verknüpfen

cbind()
rbind()

Faktoren und NAs

a <- c(1, 2, 3, 4, 5, 4, 3, 5, NA, 4, 2, 1, 2, 3, 3, 6, 4)
b <- factor(a)
b
##  [1] 1    2    3    4    5    4    3    5    <NA> 4    2    1    2    3    3   
## [16] 6    4   
## Levels: 1 2 3 4 5 6
anyNA(b)
## [1] TRUE
b <- na.omit(b)
length(b) == length(a) - 1
## [1] TRUE

Pakete und mehr Statistik

Viel Tipparbeit

length(a)
## [1] 16
mean(a)
## [1] 3.25
sd(a)
## [1] 1.437591
median(a)
## [1] 3
mad(a)
## [1] 1.4826
min(a)
## [1] 1
max(a)
## [1] 6
range(a)
## [1] 1 6

Wenig Tipparbeit (mit Paketen)

psych::describe(a)
##    vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 16 3.25 1.44      3    3.21 1.48   1   6     5 0.09    -1.01 0.36

Pakete installieren

Pakete installieren (muss nur einmal gemacht werden):

install.packages("psych")

Pakete einbinden, damit die darin enthaltenen Funktionen verwendet werden können (muss in jeder neuen R-Session gemacht werden; am besten an den Anfang des Skripts schreiben)

library(psych)
psych::describe(a)
##    vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 16 3.25 1.44      3    3.21 1.48   1   6     5 0.09    -1.01 0.36

Interlude: Mein Skiptanfang

Meine Skipte fangen in der Regel so an wie unten.

Einige der Pakete werdet ihr im Laufe dieses Semesters kennenlernen; andere sind für euch entweder nicht wichtig, oder die enthaltenen Funktionen übersteigen den (statistischen) Seminarstoff.

### %#################################################################################%###
#                                                          #
######                     <<Titel>>                      ######
#                                                          #
### %#################################################################################%###


rm(list = ls()) # empty environment
options(scipen = 999) # no scientific number notation


library(ez)
library(tidyverse)
library(psych) # describeBy
library(gridExtra) # grid.arrange for plots
library(ggpubr) # theme_pubr(margin = F) + labs_pubr()
library(data.table)
library(ordinal) # used for the glmm
library(lme4)
library(ggthemes)
library(tikzDevice) # ggplot-latex
library(xtable) # table-latex

describeBy()

Gibt die wichtigsten deskriptiv-statistischen Berechnungen (in unserem Fall idR für eine abhängige Variable) wieder. Da man es jedoch oft mit Experimenten zu tun hat, in denen mindestens zwei Bedingungen einer unanhängigen Variable Einfluss auf die Messung nehmen, gibt es außerdem describeBy

describeBy(diamonds$price, diamonds$cut)
## 
##  Descriptive statistics by group 
## group: Fair
##    vars    n    mean      sd median trimmed     mad min   max range skew
## X1    1 1610 4358.76 3560.39   3282 3695.65 2183.13 337 18574 18237 1.78
##    kurtosis    se
## X1     3.07 88.73
## ------------------------------------------------------------ 
## group: Good
##    vars    n    mean      sd median trimmed     mad min   max range skew
## X1    1 4906 3928.86 3681.59 3050.5 3251.51 2853.26 327 18788 18461 1.72
##    kurtosis    se
## X1     3.04 52.56
## ------------------------------------------------------------ 
## group: Very Good
##    vars     n    mean      sd median trimmed     mad min   max range skew
## X1    1 12082 3981.76 3935.86   2648 3243.22 2855.49 336 18818 18482  1.6
##    kurtosis    se
## X1     2.24 35.81
## ------------------------------------------------------------ 
## group: Premium
##    vars     n    mean     sd median trimmed     mad min   max range skew
## X1    1 13791 4584.26 4349.2   3185 3822.23 3371.43 326 18823 18497 1.33
##    kurtosis    se
## X1     1.07 37.03
## ------------------------------------------------------------ 
## group: Ideal
##    vars     n    mean     sd median trimmed     mad min   max range skew
## X1    1 21551 3457.54 3808.4   1810 2656.14 1630.86 326 18806 18480 1.84
##    kurtosis    se
## X1     2.98 25.94

describeBy()

Um den Output ein bisschen besser lesbar zu machen, eignen sich diese beiden optionalen Parameter:

  • Anzahl der Nachkommastellen bestimmten: digits = Zahl
  • Ouput der Funktion als Matrix: mat = TRUE
describeBy(diamonds$price, diamonds$cut, digits = 2, mat = T)
##     item    group1 vars     n    mean      sd median trimmed     mad min   max
## X11    1      Fair    1  1610 4358.76 3560.39 3282.0 3695.65 2183.13 337 18574
## X12    2      Good    1  4906 3928.86 3681.59 3050.5 3251.51 2853.26 327 18788
## X13    3 Very Good    1 12082 3981.76 3935.86 2648.0 3243.22 2855.49 336 18818
## X14    4   Premium    1 13791 4584.26 4349.20 3185.0 3822.23 3371.43 326 18823
## X15    5     Ideal    1 21551 3457.54 3808.40 1810.0 2656.14 1630.86 326 18806
##     range skew kurtosis    se
## X11 18237 1.78     3.07 88.73
## X12 18461 1.72     3.04 52.56
## X13 18482 1.60     2.24 35.81
## X14 18497 1.33     1.07 37.03
## X15 18480 1.84     2.98 25.94

describeBy()

Falls mehr als nur ein Faktor mit einbezogen werden sollen, muss das zweite Argument der Funktion eine list sein, die sämtliche dieser Faktoren enthält

describeBy(diamonds$price, list(diamonds$cut, diamonds$color),
  digits = 2, mat = T)
##      item    group1 group2 vars    n    mean      sd median trimmed     mad min
## X11     1      Fair      D    1  163 4291.06 3286.11 3730.0 3703.96 2043.02 536
## X12     2      Good      D    1  662 3405.38 3175.15 2728.5 2859.30 2674.61 361
## X13     3 Very Good      D    1 1513 3470.47 3523.75 2310.0 2774.01 2373.64 357
## X14     4   Premium      D    1 1603 3631.29 3711.63 2009.0 2881.00 1893.28 367
## X15     5     Ideal      D    1 2834 2629.09 3001.07 1576.0 1929.83 1184.60 367
## X16     6      Fair      E    1  224 3682.31 2976.65 2956.0 3164.34 2311.37 337
## X17     7      Good      E    1  933 3423.64 3330.70 2420.0 2799.42 2542.66 327
## X18     8 Very Good      E    1 2400 3214.65 3408.02 1989.5 2514.87 2014.11 352
## X19     9   Premium      E    1 2337 3538.91 3794.99 1928.0 2719.40 1712.40 326
## X110   10     Ideal      E    1 3903 2597.55 2956.01 1437.0 1904.70 1003.72 326
## X111   11      Fair      F    1  312 3827.00 3223.30 3035.0 3255.46 2404.04 496
## X112   12      Good      F    1  909 3495.75 3202.41 2647.0 2932.24 2403.29 357
## X113   13 Very Good      F    1 2164 3778.82 3786.12 2471.0 3052.83 2581.95 357
## X114   14   Premium      F    1 2331 4324.89 4012.02 2841.0 3605.12 2802.11 342
## X115   15     Ideal      F    1 3826 3374.94 3766.64 1775.0 2561.01 1481.12 408
## X116   16      Fair      G    1  314 4239.25 3609.64 3057.0 3537.06 2097.14 369
## X117   17      Good      G    1  871 4123.48 3702.50 3340.0 3473.04 3177.21 394
## X118   18 Very Good      G    1 2299 3872.75 3861.38 2437.0 3166.19 2610.86 354
## X119   19   Premium      G    1 2924 4500.74 4356.57 2745.0 3738.69 2919.24 382
## X120   20     Ideal      G    1 4884 3720.71 4006.26 1857.5 2948.86 1686.46 361
## X121   21      Fair      H    1  303 5135.68 3886.48 3816.0 4489.27 2544.14 659
## X122   22      Good      H    1  702 4276.25 4020.66 3468.5 3546.09 3231.33 368
## X123   23 Very Good      H    1 1824 4535.39 4185.80 3734.0 3820.86 3670.92 337
## X124   24   Premium      H    1 2360 5216.71 4466.19 4511.0 4551.71 4312.88 368
## X125   25     Ideal      H    1 3115 3889.33 4013.38 2278.0 3121.10 2493.73 357
## X126   26      Fair      I    1  175 4685.45 3730.27 3246.0 4015.75 1792.46 735
## X127   27      Good      I    1  522 5078.53 4631.70 3639.5 4353.21 3814.73 351
## X128   28 Very Good      I    1 1204 5255.88 4687.10 3888.0 4519.71 3925.18 336
## X129   29   Premium      I    1 1428 5946.18 5053.75 4640.0 5303.56 5278.06 334
## X130   30     Ideal      I    1 2093 4451.97 4505.15 2659.0 3643.44 3068.98 348
## X131   31      Fair      J    1  119 4975.66 4050.46 3302.0 4280.01 2277.27 416
## X132   32      Good      J    1  307 4574.17 3707.79 3733.0 4039.28 3546.38 335
## X133   33 Very Good      J    1  678 5103.51 4135.65 4113.0 4574.19 3936.30 336
## X134   34   Premium      J    1  808 6294.59 4788.94 5063.0 5833.48 4679.09 363
## X135   35     Ideal      J    1  896 4918.19 4476.21 4096.0 4194.51 4272.85 340
##        max range skew kurtosis     se
## X11  16386 15850 1.90     3.81 257.39
## X12  18468 18107 2.03     5.42 123.41
## X13  18542 18185 1.91     3.92  90.59
## X14  18575 18208 1.78     2.96  92.70
## X15  18693 18326 2.55     6.92  56.37
## X16  15584 15247 1.88     4.00 198.89
## X17  18236 17909 1.91     4.09 109.04
## X18  18731 18379 1.99     4.21  69.57
## X19  18477 18151 1.92     3.36  78.50
## X110 18729 18403 2.58     7.18  47.32
## X111 17995 17499 2.04     4.85 182.48
## X112 18686 18329 2.07     5.34 106.22
## X113 18777 18420 1.73     2.88  81.39
## X114 18791 18449 1.46     1.65  83.10
## X115 18780 18372 1.92     3.25  60.89
## X116 18574 18205 1.80     3.01 203.70
## X117 18788 18394 1.63     2.80 125.45
## X118 18818 18464 1.56     2.17  80.53
## X119 18741 18359 1.28     0.89  80.57
## X120 18806 18445 1.59     1.93  57.33
## X121 18565 17906 1.46     1.58 223.27
## X122 18640 18272 1.58     2.25 151.75
## X123 18803 18466 1.39     1.54  98.01
## X124 18795 18427 1.13     0.62  91.94
## X125 18760 18403 1.58     2.19  71.91
## X126 18242 17507 1.73     2.67 281.98
## X127 18707 18356 1.16     0.39 202.72
## X128 18500 18164 1.16     0.43 135.08
## X129 18823 18489 0.89    -0.26 133.74
## X130 18779 18431 1.34     0.97  98.47
## X131 18531 18115 1.54     1.66 371.30
## X132 18325 17990 1.20     1.16 211.61
## X133 18430 18094 0.99     0.16 158.83
## X134 18710 18347 0.74    -0.44 168.47
## X135 18508 18168 1.20     0.72 149.54

Eigene Funktionen schreiben

Standardfehler-Funktion

Eine eigene Funktion lässt sich wie folgt schreiben:

name <- function(argument){Berechnung}

Hier ein Beispiel für den Standardfehler des Stichprobenmittelwerts:

\[s_{\bar{x}} = \frac{s}{\sqrt{n}}\]

std.error <- function(x) {
  sd(x) / sqrt(length(x))
}
sample <- c(1, 1, 2, 2, 4, 6, 9)
std.error(sample) == sd(sample) / sqrt(length(sample))
## [1] TRUE
std.error(sample)
## [1] 1.13089

Mehr Beispiele

# celsius nach kelvin konvertieren
celsius.kelvin <- function(temp) {
  temp + 273.15
}

# fahrenheit nach kelvin konvertieren
fahrenheit.celsius <- function(temp) {
  (temp - 32) * 5 / 9
}

# celsius nach fahrenheit konvertieren
celsius.fahrenheit <- function(temp) {
  temp * 9 / 5 + 32
}

celsius.kelvin(36)
## [1] 309.15
fahrenheit.celsius(96.8)
## [1] 36
celsius.fahrenheit(36)
## [1] 96.8

Übungen

  1. Schreibt eine Funktion, die aus einer gegebenen Zahl ihr Quadrat berechnet
  2. Schreibt eine Funktion, die den describeBy-Befehl auf ihre Argumente anwendet und die Matrix als data frame ausgibt
  3. Schreibt eine Funktion, die den Mittelwert ihres Arguments berechnet (ohne mean!)

\[\bar{x}= {\frac {1}{n}}\sum _{i=1}^{n}a_{i}={\frac {a_{1}+a_{2}+\cdots +a_{n}}{n}}\]

  1. Schreibt eine Funktion, die das erste und das letzte Element eines Vektors ausgibt
  2. Schreibt eine Funktion, die den Mittelwert, die Standardabweichung und den Median eines Vektors berechnet und als Vektor ausgibt.

Lösungen

  1. Schreibt eine funktion, die aus einer gegebenen Zahl ihr Quadrat berechnet
my.square <- function(n) {
  n * n
}
my.squaretwo <- function(n) {
  n^2
}
my.square(10)
## [1] 100
my.squaretwo(10)
## [1] 100

Lösungen

  1. Schreibt eine Funktion, die den describeBy-Befehl auf ihre Argumente anwendet und die Matrix als data frame ausgibt
describeByDF <- function(x, y) {
  d <- describeBy(x, y, mat = T)
  d <- as.data.frame(d)
  d
}
descrip <- describeByDF(diamonds$price,
  list(diamonds$cut, diamonds$color))
is.data.frame(descrip)
## [1] TRUE
head(descrip)
##     item    group1 group2 vars    n     mean       sd median  trimmed      mad
## X11    1      Fair      D    1  163 4291.061 3286.114 3730.0 3703.962 2043.023
## X12    2      Good      D    1  662 3405.382 3175.149 2728.5 2859.296 2674.610
## X13    3 Very Good      D    1 1513 3470.467 3523.753 2310.0 2774.014 2373.643
## X14    4   Premium      D    1 1603 3631.293 3711.634 2009.0 2880.995 1893.280
## X15    5     Ideal      D    1 2834 2629.095 3001.070 1576.0 1929.827 1184.597
## X16    6      Fair      E    1  224 3682.312 2976.652 2956.0 3164.344 2311.373
##     min   max range     skew kurtosis        se
## X11 536 16386 15850 1.902602 3.810324 257.38833
## X12 361 18468 18107 2.033159 5.424658 123.40566
## X13 357 18542 18185 1.914574 3.923597  90.59120
## X14 367 18575 18208 1.782423 2.964122  92.70398
## X15 367 18693 18326 2.554160 6.920157  56.37365
## X16 337 15584 15247 1.876280 4.002687 198.88590

Lösungen

  1. Schreibt eine Funktion, die den Mittelwert ihres Arguments berechnet (ohne mean!)
mein.mittelwert <- function(x) {
  sum(x) / length(x)
}
mein.mittelwert(sample) == mean(sample)
## [1] TRUE
mein.mittelwert(sample)
## [1] 3.571429

Lösungen

  1. Schreibt eine Funktion, die das erste und das letzte Element eines Vektors ausgibt
sample
## [1] 1 1 2 2 4 6 9
my.ends <- function(vector) {
  answer <- c(vector[1], vector[length(vector)])
  answer
}
my.ends2 <- function(x) {
  c(head(x, 1), tail(x, 1))
}
a <- 1:15
my.ends2(sample)
## [1] 1 9
my.ends(sample)
## [1] 1 9

Lösungen

  1. Schreibt eine Funktion, die den Mittelwert, die Standardabweichung und den Median eines Vektors berechnet und als Vektor ausgibt.
my.desc <- function(vector) {
  mean <- mean(vector)
  sd <- sd(vector)
  median <- median(vector)
  desc <- c(mean, sd, median)
  desc
}
my.desc(sample)
## [1] 3.571429 2.992053 2.000000
standard <- c(mean(sample), sd(sample), median(sample))
my.desc(sample) == standard
## [1] TRUE TRUE TRUE
my.desc2 <- function(vector) {
  a <- c(mean(vector), sd(vector), median(vector))
  a
}
my.desc2(sample) == my.desc(sample)
## [1] TRUE TRUE TRUE

Tabellen transponieren

reshape2

install.packages("reshape2")
library(reshape2)
melt() # wide zu long
cast() # long zu wide

Von Wide zu Long

Einlesen der Datei

br <- read.table("docs/data/tut6/Briefe.csv", header = T, sep = ";", dec = ",")
head(br)
##                              Filename Segment  WC   WPS Sixltr Pronoun   I  We
## 1 m-Rollet_Alexander-BR-1844_1906.txt       1 500 19.23   32.4     4.0 0.0 0.4
## 2 m-Rollet_Alexander-BR-1844_1906.txt       2 500 18.52   32.8     7.6 3.6 0.6
## 3 m-Rollet_Alexander-BR-1844_1906.txt       3 500 41.67   28.8     9.2 0.0 5.6
## 4 m-Rollet_Alexander-BR-1844_1906.txt       4 500 31.25   36.2     5.8 0.0 1.2
## 5 m-Rollet_Alexander-BR-1844_1906.txt       5 500 23.81   34.8     5.0 0.0 0.6
## 6 m-Rollet_Alexander-BR-1844_1906.txt       6 500 25.00   36.0     8.4 4.8 0.6
##   Self You
## 1  0.4 2.2
## 2  4.2 1.6
## 3  5.6 0.8
## 4  1.2 1.8
## 5  0.6 2.2
## 6  5.4 1.6

Von Wide zu Long

Transponieren der Tabelle ins Long-Format:

brlong <- melt(br, id.vars = c("Filename", "Segment"))
head(brlong, 15)
##                               Filename Segment variable value
## 1  m-Rollet_Alexander-BR-1844_1906.txt       1       WC   500
## 2  m-Rollet_Alexander-BR-1844_1906.txt       2       WC   500
## 3  m-Rollet_Alexander-BR-1844_1906.txt       3       WC   500
## 4  m-Rollet_Alexander-BR-1844_1906.txt       4       WC   500
## 5  m-Rollet_Alexander-BR-1844_1906.txt       5       WC   500
## 6  m-Rollet_Alexander-BR-1844_1906.txt       6       WC   500
## 7  m-Rollet_Alexander-BR-1844_1906.txt       7       WC   500
## 8  m-Rollet_Alexander-BR-1844_1906.txt       8       WC   500
## 9  m-Rollet_Alexander-BR-1844_1906.txt       9       WC   500
## 10 m-Rollet_Alexander-BR-1844_1906.txt      10       WC   500
## 11 m-Rollet_Alexander-BR-1844_1906.txt      11       WC   500
## 12 m-Rollet_Alexander-BR-1844_1906.txt      12       WC   500
## 13 m-Rollet_Alexander-BR-1844_1906.txt      13       WC   500
## 14 m-Rollet_Alexander-BR-1844_1906.txt      14       WC   500
## 15 m-Rollet_Alexander-BR-1844_1906.txt      15       WC   500

Von Long zu Wide

brwide <- dcast(brlong, Filename + Segment ~ variable,
  value.var = "value")
head(brwide)
##                             Filename Segment  WC   WPS Sixltr Pronoun   I  We
## 1 f-Bachmann_Ingeborg-BR-1948_61.txt       1 500 13.16   14.6    16.2 6.8 0.6
## 2 f-Bachmann_Ingeborg-BR-1948_61.txt       2 500 17.86   14.4    18.8 8.4 0.6
## 3 f-Bachmann_Ingeborg-BR-1948_61.txt       3 500 15.15   14.0    20.2 8.2 2.2
## 4 f-Bachmann_Ingeborg-BR-1948_61.txt       4 500 18.52   15.0    18.4 8.6 0.8
## 5 f-Bachmann_Ingeborg-BR-1948_61.txt       5 500 19.23   12.8    15.2 8.8 0.8
## 6 f-Bachmann_Ingeborg-BR-1948_61.txt       6 500 16.13   16.8    17.2 9.8 0.8
##   Self You
## 1  7.4 5.8
## 2  9.0 5.6
## 3 10.4 6.4
## 4  9.4 6.0
## 5  9.6 3.4
## 6 10.6 3.8

Übungen II

  1. Lest die Datei “implicated_lies.csv” ein
  2. Entscheidet, ob die Datensortierung long oder wide ist und transponiert die Daten ins jeweils andere Format
  3. Speichert die Daten auf eurem Computer ab
  4. Benutzt describeBy, um statistische Berechnungen für jedes Item separat zu bekommen

Lösungen II

  1. Lest die Datei “implicated_lies.csv” ein
dlies <- read.csv("docs/data/tut6/implicated_lies.csv", header = T)
head(dlies)
##                           id age stage af1 af2 af3 af4 af5 af6 aw1 aw2 aw3 aw4
## 1 0kcc8m19m6e46i2ojjomvjre91  53 adult   1   1   1   1   1   1   5   5   5   5
## 2 4fg5ka3ppabgnnfd1k65ei6ar5  25 adult   1   1   1   1   1   1   5   5   5   5
## 3 77njs4ij7pstnrbe7d7eao33j5  24 adult   5   1   1   1   1   1   5   5   5   5
## 4 fauj5blp14kgovr221aac53p64  23 adult   1   1   1   1   1   1   5   5   5   5
## 5 ubqoiq93qbg3fcarse9e54qmi0  26 adult   1   1   5   1   1   1   5   5   5   5
## 6 398ovonqku33iadqkoorvju9s0  20 adult   1   1   1   1   1   1   5   5   5   5
##   aw5 aw6 gf1s gf2s gf3s gf4n gf5n gf6n gw1s gw2s gw3s gw4n gw5n gw6n pf1 pf2
## 1   5   5    2    1    1    5    5    1    5    5    5    5    5    5   5   5
## 2   5   5    3    5    1    5    1    2    5    5    5    5    5    5   5   1
## 3   5   5    1    4    4    4    4    1    5    5    5    5    5    5   4   2
## 4   5   5    1    1    1    1    4    2    5    5    4    5    5    5   1   1
## 5   5   5    1    1    1    4    2    1    2    5    5    5    5    5   2   4
## 6   4   5    2    2    2    3    4    3    5   NA    5    5    5    5   3   2
##   pf3 pf4 pf5 pf6 pw1 pw2 pw3 pw4 pw5 pw6
## 1   5   5   2   5   5   2   5   5   2   2
## 2   5   1   3   5   5   5   5   5   4   5
## 3   4   3   2   3   5   5   5   5   4   5
## 4   1   1   1   4   5   5   5   5   4   4
## 5   5   1   2   4   5   5   5   3   5   5
## 6   2   3   3   3   4   5   4   3   4   4

Lösungen II

  1. Entscheidet, ob die Datensortierung long oder wide ist und transponiert die Daten ins jeweils andere Format
dlieslong <- melt(dlies, id.vars = c("id", "stage", "age"),
  value.name = "judgment", variable.name = "item")
# sorting: dlieslong sorted first by the id column and then,
# provided id stays constant, by item
dlieslong <- dlieslong[order(dlieslong$id, dlieslong$item), ]

head(dlieslong, 8)
##                             id stage age item judgment
## 21  02dfkhe0rsj9q8abs2skfci9h0 adult  31  af1        1
## 123 02dfkhe0rsj9q8abs2skfci9h0 adult  31  af2        1
## 225 02dfkhe0rsj9q8abs2skfci9h0 adult  31  af3        1
## 327 02dfkhe0rsj9q8abs2skfci9h0 adult  31  af4        1
## 429 02dfkhe0rsj9q8abs2skfci9h0 adult  31  af5        1
## 531 02dfkhe0rsj9q8abs2skfci9h0 adult  31  af6        1
## 633 02dfkhe0rsj9q8abs2skfci9h0 adult  31  aw1        5
## 735 02dfkhe0rsj9q8abs2skfci9h0 adult  31  aw2        5

Lösungen

  1. Speichert die Daten auf eurem Computer ab
write.csv(dlieslong, file = "implicated_lies_long.csv",
  row.names = F, quote = F, na = "keine Angabe")

Lösungen

  1. Benutzt describeBy, um statistische Berechnungen für jedes Item separat zu bekommen
describeBy(dlieslong$judgment, dlieslong$item, mat = T, digits = 1)
##      item group1 vars   n mean  sd median trimmed mad min max range skew
## X11     1    af1    1 101  2.0 1.5      1     1.7 0.0   1   5     4  1.3
## X12     2    af2    1 100  1.2 0.8      1     1.0 0.0   1   5     4  4.4
## X13     3    af3    1 100  1.1 0.6      1     1.0 0.0   1   5     4  6.2
## X14     4    af4    1 101  1.1 0.4      1     1.0 0.0   1   4     3  5.3
## X15     5    af5    1 101  1.1 0.6      1     1.0 0.0   1   5     4  5.8
## X16     6    af6    1 101  1.1 0.3      1     1.0 0.0   1   2     1  3.3
## X17     7    aw1    1 101  4.8 0.8      5     5.0 0.0   1   5     4 -3.7
## X18     8    aw2    1 100  4.7 0.9      5     5.0 0.0   1   5     4 -3.3
## X19     9    aw3    1 101  4.9 0.6      5     5.0 0.0   1   5     4 -5.6
## X110   10    aw4    1  99  4.8 0.8      5     5.0 0.0   1   5     4 -3.6
## X111   11    aw5    1  99  4.8 0.6      5     5.0 0.0   1   5     4 -5.0
## X112   12    aw6    1 101  4.8 0.8      5     5.0 0.0   1   5     4 -3.9
## X113   13   gf1s    1  33  1.6 1.0      1     1.4 0.0   1   5     4  1.7
## X114   14   gf2s    1  33  1.8 1.2      1     1.6 0.0   1   5     4  1.4
## X115   15   gf3s    1  33  2.1 1.3      2     1.9 1.5   1   5     4  0.9
## X116   16   gf4n    1  33  3.6 1.5      4     3.7 1.5   1   5     4 -0.6
## X117   17   gf5n    1  33  2.7 1.3      3     2.6 1.5   1   5     4  0.2
## X118   18   gf6n    1  33  1.9 1.4      1     1.7 0.0   1   5     4  1.2
## X119   19   gw1s    1  33  4.6 0.8      5     4.7 0.0   2   5     3 -1.7
## X120   20   gw2s    1  32  5.0 0.2      5     5.0 0.0   4   5     1 -5.1
## X121   21   gw3s    1  33  4.8 0.4      5     4.8 0.0   4   5     1 -1.1
## X122   22   gw4n    1  33  5.0 0.0      5     5.0 0.0   5   5     0  NaN
## X123   23   gw5n    1  33  4.8 0.9      5     5.0 0.0   1   5     4 -3.6
## X124   24   gw6n    1  33  4.7 0.8      5     4.9 0.0   1   5     4 -3.7
## X125   25    pf1    1 101  2.9 1.5      3     2.9 3.0   1   5     4  0.1
## X126   26    pf2    1 101  3.2 1.5      3     3.3 3.0   1   5     4 -0.1
## X127   27    pf3    1 101  2.1 1.3      2     1.9 1.5   1   5     4  1.1
## X128   28    pf4    1 102  2.6 1.6      2     2.5 1.5   1   5     4  0.5
## X129   29    pf5    1  99  2.3 1.3      2     2.2 1.5   1   5     4  0.6
## X130   30    pf6    1 102  3.4 1.4      3     3.5 1.5   1   5     4 -0.3
## X131   31    pw1    1 100  4.6 0.9      5     4.8 0.0   1   5     4 -2.4
## X132   32    pw2    1 100  4.9 0.5      5     5.0 0.0   2   5     3 -4.4
## X133   33    pw3    1 102  4.7 0.8      5     4.9 0.0   1   5     4 -3.5
## X134   34    pw4    1  99  4.8 0.7      5     4.9 0.0   2   5     3 -3.0
## X135   35    pw5    1 100  4.5 0.9      5     4.8 0.0   1   5     4 -2.2
## X136   36    pw6    1 101  4.6 0.8      5     4.8 0.0   1   5     4 -2.7
##      kurtosis  se
## X11       0.0 0.2
## X12      18.4 0.1
## X13      38.8 0.1
## X14      30.2 0.0
## X15      33.5 0.1
## X16       9.3 0.0
## X17      13.3 0.1
## X18       9.6 0.1
## X19      32.9 0.1
## X110     12.2 0.1
## X111     26.3 0.1
## X112     13.9 0.1
## X113      2.5 0.2
## X114      0.8 0.2
## X115     -0.6 0.2
## X116     -1.2 0.3
## X117     -1.3 0.2
## X118      0.0 0.2
## X119      1.9 0.1
## X120     25.2 0.0
## X121     -0.7 0.1
## X122      NaN 0.0
## X123     11.9 0.1
## X124     14.6 0.1
## X125     -1.4 0.2
## X126     -1.5 0.2
## X127     -0.1 0.1
## X128     -1.3 0.2
## X129     -0.8 0.1
## X130     -1.3 0.1
## X131      5.3 0.1
## X132     20.1 0.1
## X133     12.2 0.1
## X134      8.6 0.1
## X135      4.4 0.1
## X136      7.4 0.1

Nur Kurz: Plots

Ein Plot zum Abschluss

# boxplot der letzten vier spalten in briefe.csv
p1 <- boxplot(br[, 7:length(br)], main = "Briefdatensatz",
  xlab = "Spaltenname", ylab = "Wert")

Ein Plot zum Abschluss

library(ggplot2)
p2 <- ggplot(br, aes(y = I)) +
  geom_boxplot() +
  labs(title = "Briefdatensatz",
    x = "I", y = "Wert")

Ein Plot zum Abschluss

p2

F*ck die Uni

Schönes Wochenende!