Шаблон отчёта по ЛР №2 (R)

Базовый анализ данных в R (mtcars)

Author

ФИО студента: Примак Владимир Владимирович

Published

December 24, 2025

1. Краткое описание данных

Содержит данные из американского журнала Motor Trend US, выпущенного в 1974 году, о различных моделях автомобилей 1973-1974 годов. 32 наблюдения по 11 переменным: mpg - расход топлива в миль/галлон cyl - количество цилиндров disp - рабочий объём цилиндров двигателя (куб. дюйм) hp - мощность в лошадиных силах drat - передаточное число задней оси wt - вес (1000 фунтов) qsec - время прохождения 1/4 мили vs - двигатель (0 = V-образный, 1 = прямой) am - трансмиссия (0 = автоматическая, 1 = механическая) gear - количество передач переднего хода carb - количество карбюраторов

2. Алгоритм работы и ключевые шаги

Выполнен анализ данных mtcars от первичного осмотра до визуализации. Проведена предобработка , фильтрация, группировки с агрегацией и построение ключевых графиков для анализа зависимостей. Лучшие визуализации сохранены в отчёте.

3. Результаты по заданиям

Часть A

library(tidyverse)
Warning: пакет 'tidyverse' был собран под R версии 4.3.3
Warning: пакет 'ggplot2' был собран под R версии 4.3.3
Warning: пакет 'tibble' был собран под R версии 4.3.2
Warning: пакет 'tidyr' был собран под R версии 4.3.3
Warning: пакет 'readr' был собран под R версии 4.3.3
Warning: пакет 'purrr' был собран под R версии 4.3.2
Warning: пакет 'dplyr' был собран под R версии 4.3.2
Warning: пакет 'stringr' был собран под R версии 4.3.2
Warning: пакет 'forcats' был собран под R версии 4.3.2
Warning: пакет 'lubridate' был собран под R версии 4.3.2
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.0     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data("mtcars")
head(mtcars, 12)
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
tail(mtcars, 6)
                mpg cyl  disp  hp drat    wt qsec vs am gear carb
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6  1  1    4    2
str(mtcars)
'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 ...
summary(mtcars)
      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  
glimpse(mtcars)
Rows: 32
Columns: 11
$ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,…
$ cyl  <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,…
$ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 16…
$ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180…
$ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92,…
$ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.…
$ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18…
$ vs   <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,…
$ am   <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
$ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3,…
$ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,…
mtcars$cyl <- as.factor(mtcars$cyl)
mtcars$am <- factor(mtcars$am, levels = c(0, 1), labels = c("auto", "manual"))
mtcars$power_to_weight <- mtcars$hp / mtcars$wt
mtcars$efficiency <- mtcars$mpg / mtcars$wt
mtcars_sorted <- mtcars[order(-mtcars$efficiency), ]
head(mtcars_sorted, 10)
                mpg cyl  disp  hp drat    wt  qsec vs     am gear carb
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1 manual    5    2
Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1 manual    4    2
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1 manual    4    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1 manual    4    1
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1 manual    4    1
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0 manual    5    2
Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1 manual    4    1
Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1   auto    3    1
Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0 manual    4    4
Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1 manual    4    2
               power_to_weight efficiency
Lotus Europa          74.68605  20.092531
Honda Civic           32.19814  18.823529
Toyota Corolla        35.42234  18.474114
Fiat 128              30.00000  14.727273
Fiat X1-9             34.10853  14.108527
Porsche 914-2         42.52336  12.149533
Datsun 710            40.08621   9.827586
Toyota Corona         39.35091   8.722110
Mazda RX4             41.98473   8.015267
Volvo 142E            39.20863   7.697842

Часть B

mtcars$model <- rownames(mtcars)
filtered_cars <- mtcars[mtcars$mpg > 25 & mtcars$wt < 2.5, c("model", "mpg", "wt")]
print(filtered_cars)
                        model  mpg    wt
Fiat 128             Fiat 128 32.4 2.200
Honda Civic       Honda Civic 30.4 1.615
Toyota Corolla Toyota Corolla 33.9 1.835
Fiat X1-9           Fiat X1-9 27.3 1.935
Porsche 914-2   Porsche 914-2 26.0 2.140
Lotus Europa     Lotus Europa 30.4 1.513
mtcars_selection <- mtcars[, c("model", "mpg", "hp", "cyl", "am")]
write.csv(mtcars_selection, "mtcars_selection.csv")

Часть C

result <- mtcars %>%
  group_by(cyl, am) %>%
  summarise(
    count = n(),
    mean_mpg = mean(mpg, na.rm = TRUE),
    median_hp = median(hp, na.rm = TRUE)
  )
`summarise()` has grouped output by 'cyl'. You can override using the `.groups`
argument.
print(result)
# A tibble: 6 × 5
# Groups:   cyl [3]
  cyl   am     count mean_mpg median_hp
  <fct> <fct>  <int>    <dbl>     <dbl>
1 4     auto       3     22.9      95  
2 4     manual     8     28.1      78.5
3 6     auto       4     19.1     116. 
4 6     manual     3     20.6     110  
5 8     auto      12     15.0     180  
6 8     manual     2     15.4     300. 
gear_mpg <- mtcars %>%
  group_by(gear) %>%
  summarise(
    mean_mpg = mean(mpg, na.rm = TRUE)
  )
print(gear_mpg)
# A tibble: 3 × 2
   gear mean_mpg
  <dbl>    <dbl>
1     3     16.1
2     4     24.5
3     5     21.4
ggplot(gear_mpg, aes(x = factor(gear), y = mean_mpg)) +
  geom_col(fill = "steelblue") +
  geom_text(aes(label = round(mean_mpg, 1)), vjust = -0.5) +
  labs(x = "Количество передач", 
       y = "Средний MPG")

Часть D

p1 <- ggplot(mtcars, aes(x = wt, y = mpg, color = cyl, shape = am)) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(x = "Вес", y = "Мили на галлон", 
       color = "Цилиндры", shape = "Трансмиссия") +
  theme_minimal()
p2 <- ggplot(mtcars, aes(x = am, y = mpg, fill = am)) +
  geom_boxplot() +
  facet_wrap(~ cyl, scales = "free") +
  labs(x = "Трансмиссия", y = "Мили на галлон") +
  theme_minimal() +
  theme(legend.position = "none")
print(p2)

4. Выводы

  1. Вес - ключевой фактор эффективности, так как наблюдается отрицательная корреляция между весом автомобиля и расходом топлива.
  2. МКПП эффективнее. В среднем автомобили на ручной трансмиссии показывают меньший расход топлива.
  3. Чем меньше цилиндров двигателя, тем лучше энергоэффективность, а если наоборот, то выше мощность.
  4. Наилучшую эффективность в соотношении mpg/wt показывают легковесные спорткары с МКПП и 4-цилиндровыми двигателями.