Management Summary

Fragestellung

  • Welches aus drei zufaellig gewaehlten Autos verbraucht pro 100km am wenigsten Liter Benzin? Die Wahl erfolgt nach der Gruppierung von Zylindern.

Antwort

Die nach Anzahl Zylinder gruppierten Autos mit dem geringsten Literverbrauch auf 100km in der zufaellig generierten Stichprobe sind:

  • 4 Zylinder: Fiat 128 (7.26l/100km)
  • 6 Zylinder: Ferrari Dino (11.94l/100km)
  • 8 Zylinder: Dodge Challenger (15.18l/100km)

 

Herleitung

Datenvorbereitung

Pakete laden

library(tidyverse) # Tidyverse-Universum ist eine Sammlung von Best Practice DS Paketen für R
# Details gibt's auf https://www.tidyverse.org/
library(summarytools) # visuelle Darstellung statistischer Kennzahlen und Verteilungen
library(magrittr) # Nutzung von %<>% Operator in Pipes

 

  • Daten werden geladen
  • Wie sehen meine Daten aus?
(d <- as_tibble(mtcars))
## # A tibble: 32 x 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##  * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
## # ... with 22 more rows
# Codebook anzeigen falls noetig
# ?mtcars

str(d)
## Classes 'tbl_df', 'tbl' and 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
# ein wenig bessere Darstellung als str()
glimpse(d)
## Observations: 32
## Variables: 11
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19....
## $ cyl  <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, ...
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1...
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ...
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9...
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3...
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...
## $ vs   <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, ...
## $ am   <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, ...
## $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, ...
## $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, ...
summary(d)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
# Bessere Darstellung statistischer Kennzahlen inkl. Diagramme
view(dfSummary(d))
## Method 'viewer' only valid within RStudio. Switching method to 'browser'.
## Output file written: C:\Users\u219084\AppData\Local\Temp\RtmpSETH6m\filee3c1ba577ca.html
# mehr Moeglichkeiten zu summarytools: https://github.com/dcomtois/summarytools

 

Daten vorbereiten

  • Umwandlung Miles per Gallon in Literverbrauch auf 100km (1 Meile entspricht rund 1.61km und eine Gallone rund 3.79l)
  • Reproduzierbares Datensample gruppiert nach Zylinder generieren
  • Passende Attribute selektieren
# Attribut Benzinverbrauch in l auf 100km erstellen
reihen_namen <- rownames(d)
d %<>% # entspricht d <- d %>% ...
  mutate(carname = reihen_namen, 
         lbp100km = round((100 * 3.785411784)/(1.609344 * mpg),2)) 
  # https://www.calculateme.com/gas-mileage/us-mpg-to-liters-per-100-km
  

# Zufaelliges Datensubset generieren
set.seed(22) # sorgt fuer eindeutige Ergebnisse trotz Zufallsfunktion
(d_sample <- d %>% 
  group_by(cyl) %>% 
  sample_n(3) %>% 
  ungroup(cyl))
## # A tibble: 9 x 13
##     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb carna~
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> 
## 1  32.4     4  78.7    66  4.08  2.2   19.5     1     1     4     1 Fiat ~
## 2  30.4     4  75.7    52  4.93  1.62  18.5     1     1     4     2 Honda~
## 3  26       4 120.     91  4.43  2.14  16.7     0     1     5     2 Porsc~
## 4  18.1     6 225     105  2.76  3.46  20.2     1     0     3     1 Valia~
## 5  17.8     6 168.    123  3.92  3.44  18.9     1     0     4     4 Merc ~
## 6  19.7     6 145     175  3.62  2.77  15.5     0     1     5     6 Ferra~
## 7  15.5     8 318     150  2.76  3.52  16.9     0     0     3     2 Dodge~
## 8  15.2     8 304     150  3.15  3.44  17.3     0     0     3     2 AMC J~
## 9  10.4     8 472     205  2.93  5.25  18.0     0     0     3     4 Cadil~
## # ... with 1 more variable: lbp100km <dbl>
# passende Attribute auswaehlen
(d_sample %<>%
  select(carname, lbp100km, mpg, cyl))
## # A tibble: 9 x 4
##   carname            lbp100km   mpg   cyl
##   <chr>                 <dbl> <dbl> <dbl>
## 1 Fiat 128               7.26  32.4     4
## 2 Honda Civic            7.74  30.4     4
## 3 Porsche 914-2          9.05  26       4
## 4 Valiant               13     18.1     6
## 5 Merc 280C             13.2   17.8     6
## 6 Ferrari Dino          11.9   19.7     6
## 7 Dodge Challenger      15.2   15.5     8
## 8 AMC Javelin           15.5   15.2     8
## 9 Cadillac Fleetwood    22.6   10.4     8

Datenanalyse

# Datenstichprobe alle Elemente
d_sample
## # A tibble: 9 x 4
##   carname            lbp100km   mpg   cyl
##   <chr>                 <dbl> <dbl> <dbl>
## 1 Fiat 128               7.26  32.4     4
## 2 Honda Civic            7.74  30.4     4
## 3 Porsche 914-2          9.05  26       4
## 4 Valiant               13     18.1     6
## 5 Merc 280C             13.2   17.8     6
## 6 Ferrari Dino          11.9   19.7     6
## 7 Dodge Challenger      15.2   15.5     8
## 8 AMC Javelin           15.5   15.2     8
## 9 Cadillac Fleetwood    22.6   10.4     8
# Datenstichprobe tiefster Literverbrauch/100km-Wert pro Gruppe Zylinder
(d_tiefster_verbraucht <- d_sample %>% 
  group_by(cyl) %>%  # gruppieren nach Zylinder
  top_n(-1, wt=lbp100km) %>% # - waehlt tiefstes Element aus Gruppe, wt definiert zu filternde Spalte
  ungroup()) # Gruppierung aufheben
## # A tibble: 3 x 4
##   carname          lbp100km   mpg   cyl
##   <chr>               <dbl> <dbl> <dbl>
## 1 Fiat 128             7.26  32.4     4
## 2 Ferrari Dino        11.9   19.7     6
## 3 Dodge Challenger    15.2   15.5     8

Ergebnis / Bewertung

Die Autos mit dem geringsten Literverbrauch auf 100km in der zufaellig generierten Stichprobe sind:

  • 4 Zylinder: Fiat 128 (7.26l/100km)
  • 6 Zylinder: Ferrari Dino (11.94l/100km)
  • 8 Zylinder: Dodge Challenger (15.18l/100km)