Global_active_power Global_reactive_power Voltage Global_intensity
1.0916150 0.1237145 240.8398580 4.6277593
sapply(df[, 3:6], median, na.rm=TRUE)
Global_active_power Global_reactive_power Voltage Global_intensity
0.602 0.100 241.010 2.600
sapply(df[, 3:6], min, na.rm=TRUE)
Global_active_power Global_reactive_power Voltage Global_intensity
0.076 0.000 223.200 0.200
sapply(df[, 3:6], max, na.rm=TRUE)
Global_active_power Global_reactive_power Voltage Global_intensity
11.122 1.390 254.150 48.400
summary(df[, 3:6])
Global_active_power Global_reactive_power Voltage Global_intensity
Min. : 0.076 Min. :0.0000 Min. :223.2 Min. : 0.200
1st Qu.: 0.308 1st Qu.:0.0480 1st Qu.:239.0 1st Qu.: 1.400
Median : 0.602 Median :0.1000 Median :241.0 Median : 2.600
Mean : 1.092 Mean :0.1237 Mean :240.8 Mean : 4.628
3rd Qu.: 1.528 3rd Qu.:0.1940 3rd Qu.:242.9 3rd Qu.: 6.400
Max. :11.122 Max. :1.3900 Max. :254.2 Max. :48.400
NA's :25979 NA's :25979 NA's :25979 NA's :25979
describe(df[, 3:6])
vars n mean sd median trimmed mad min max range skew kurtosis se
Global_active_power 1 2049280 1.09 1.06 0.60 0.90 0.59 0.08 11.12 11.05 1.79 4.22 0
Global_reactive_power 2 2049280 0.12 0.11 0.10 0.11 0.13 0.00 1.39 1.39 1.26 2.61 0
Voltage 3 2049280 240.84 3.24 241.01 240.93 2.88 223.20 254.15 30.95 -0.33 0.72 0
Global_intensity 4 2049280 4.63 4.44 2.60 3.83 2.67 0.20 48.40 48.20 1.85 4.60 0
round(stat.desc(df[, 3:6]), 1)
Global_active_power Global_reactive_power Voltage Global_intensity
nbr.val 2049280.0 2049280.0 2049280.0 2049280.0
nbr.null 0.0 481561.0 0.0 0.0
nbr.na 25979.0 25979.0 25979.0 25979.0
min 0.1 0.0 223.2 0.2
max 11.1 1.4 254.2 48.4
range 11.0 1.4 31.0 48.2
sum 2237024.9 253525.6 493548304.1 9483574.6
median 0.6 0.1 241.0 2.6
mean 1.1 0.1 240.8 4.6
SE.mean 0.0 0.0 0.0 0.0
CI.mean.0.95 0.0 0.0 0.0 0.0
var 1.1 0.0 10.5 19.8
std.dev 1.1 0.1 3.2 4.4
coef.var 1.0 0.9 0.0 1.0
Aus den Ausgaben der zusammenfassenden Statistiken kann abgelesen werden, dass die mittlere Spannung 240.84 und der Median der globale Wirkleistung 0.602 beträgt. Die Funktion summary() zeigt außerdem an, dass es pro Spalte 25979 fehlende Werte gibt (unter NA's).
Übung 2
library(palmerpenguins)
Attaching package: 'palmerpenguins'
The following objects are masked from 'package:datasets':
penguins, penguins_raw
dim(penguins) # 344 Zeilen, 8 Spalten
[1] 344 8
summary(penguins)
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
Adelie :152 Biscoe :168 Min. :32.10 Min. :13.10 Min. :172.0 Min. :2700 female:165
Chinstrap: 68 Dream :124 1st Qu.:39.23 1st Qu.:15.60 1st Qu.:190.0 1st Qu.:3550 male :168
Gentoo :124 Torgersen: 52 Median :44.45 Median :17.30 Median :197.0 Median :4050 NA's : 11
Mean :43.92 Mean :17.15 Mean :200.9 Mean :4202
3rd Qu.:48.50 3rd Qu.:18.70 3rd Qu.:213.0 3rd Qu.:4750
Max. :59.60 Max. :21.50 Max. :231.0 Max. :6300
NA's :2 NA's :2 NA's :2 NA's :2
year
Min. :2007
1st Qu.:2007
Median :2008
Mean :2008
3rd Qu.:2009
Max. :2009
Die Faktorspalten species und island haben jeweils drei Stufen, die Spalte sex hat zwei Stufen (wobei hier auch fehlende Werte vorkommen). Laut summary(penguins) gibt es in den Spalten 3–6 jeweils 2 fehlende Werte und in der 7. Spalte 11 fehlende Werte.
Shapiro-Wilk normality test
data: mtcars$mpg
W = 0.94756, p-value = 0.1229
Die Nullhypothese der Normalverteilung kann nicht verworfen werden (\(p = 0.123\)).
leveneTest(mtcars$mpg, mtcars$cyl)
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 2 5.5071 0.00939 **
29
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Die Nullhypothese der Varianzhomogenität kann verworfen werden (\(p = 0.009\)).
Übung 4
library(readr)df =read_tsv("lecturer.dat")
Versuchen wir zunächst, die Mittelwerte der numerischen Spalten mit der Funktion mean() zu berechnen:
by(df[, -(1:3)], df$job, mean)
Warning in mean.default(data[x, , drop = FALSE], ...): argument is not numeric or logical: returning NA
Warning in mean.default(data[x, , drop = FALSE], ...): argument is not numeric or logical: returning NA
df$job: 1
[1] NA
------------------------------------------------------------------------------------------
df$job: 2
[1] NA
Dies führt zu Warnungen sowie NA für die Ergebnisse beider Gruppen. Der Grund ist, dass die gruppierten Daten nach wie vor als Data Frame mit vier numerischen Spalten vorliegen. Die Funktion mean() funktioniert aber nur mit einem Vektor (bzw. einer einzigen Spalte eines Data Frames). Daher müssen wir eine andere Aggregierungsfunktion verwenden, die mit Data Frames umgehen kann. Eine Möglichkeit ist die Funktion colMeans():
set.seed(4) # stellt sicher, dass die Zufallszahlen reproduzierbar sindx =rnorm(5001)shapiro.test(x)
Error in shapiro.test(x): sample size must be between 3 and 5000
Die Funktion shapiro.test() funktioniert nur bis zu einer Stichprobengröße von 5000, darüber hinaus wird ein Fehler ausgegeben. Für dieses Verhalten gibt es zwei Gründe:
Es ist generell nicht sinnvoll, eine sehr große Stichprobe auf Normalverteilung zu testen, da die Teststatistik selbst bei geringsten Abweichungen von der Normalverteilung sehr wahrscheinlich signifikant wird.
Theoretisch könnte der Shapiro-Wilk-Test auch für Stichproben größer als 5000 gerechnet werden, dies wurde in der ursprünglichen Publikation des Tests sowie dessen Implementierung in der Programmiersprache FORTRAN jedoch nicht berücksichtigt. Die Funktion shapiro.wilk() in R basiert auf dieser FORTRAN-Implementierung und ist daher ebenfalls auf Stichproben bis zu einer Größe von 5000 beschränkt.
Eine detaillierte Erklärung von Ben Bolker ist hier zu finden.