Homework

HW_.R

Author: Bohdan Ilnitskyi

library(car)
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Vypočítať priemernú spotrebu paliva automobilov
priemer_mpg_auta <- mean(mtcars$mpg)
print(paste("Priemerná spotreba paliva automobilov:", priemer_mpg_auta))
## [1] "Priemerná spotreba paliva automobilov: 20.090625"
# Postaviť lineárny model pre spotrebu paliva vs. zdvihový objem
model_mpg_auta <- lm(mpg ~ disp, data = mtcars)

# Vizualizácia modelu
ggplot(mtcars, aes(x = disp, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(x = "Zdvihový objem valcov", y = "Spotreba paliva (MPG)")
## `geom_smooth()` using formula = 'y ~ x'

# Postaviť lineárny model pre spotrebu paliva vs. zdvihový objem a počet valcov
model_s_valcami_mpg_auta <- lm(mpg ~ disp + cyl, data = mtcars)

# Vizualizácia modelu s počtom valcov
ggplot(mtcars, aes(x = disp, y = mpg, color = factor(cyl))) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(x = "Zdvihový objem valcov", y = "Spotreba paliva (MPG)", color = "Počet valcov")
## `geom_smooth()` using formula = 'y ~ x'

# Postaviť interakčný model
model_interakcia_mpg_auta <- lm(mpg ~ disp * cyl, data = mtcars)

# Vizualizácia interakcie
ggplot(mtcars, aes(x = disp, y = mpg, color = factor(cyl))) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, aes(group = cyl)) +
  labs(x = "Zdvihový objem valcov", y = "Spotreba paliva (MPG)", color = "Počet valcov")
## `geom_smooth()` using formula = 'y ~ x'

# Predpoveď spotreby paliva pre automobily
mtcars$predikované_mpg <- predict(model_interakcia_mpg_auta, mtcars)
najvyššia_mpg_auta <- mtcars[which.max(mtcars$predikované_mpg), ]
print(paste("Priemerná spotreba paliva štvorvalcového automobilu:", mean(najvyššia_mpg_auta$mpg)))
## [1] "Priemerná spotreba paliva štvorvalcového automobilu: 33.9"
# Načítať dáta, ak existujú
if(file.exists("./auto/auto-mpg.data")) {
  auto_mpg_all <- read.table("./auto/auto-mpg.data", header = FALSE, sep = "", na.strings = "?")
  colnames(auto_mpg_all) <- c("mpg", "cylinders", "displacement", "horsepower", "weight", "acceleration", "model_year", "origin", "car_name")
  
  # Postaviť interakčný model pre celý dataset
  model_interakcia_all <- lm(mpg ~ displacement * cylinders, data = auto_mpg_all)
  auto_mpg_all$predikované_mpg <- predict(model_interakcia_all, auto_mpg_all)
  max_mpg_auto_all <- auto_mpg_all[which.max(auto_mpg_all$predikované_mpg), ]
  print(paste("Priemerná spotreba paliva štvorvalcového automobilu (komplexný dataset):", mean(max_mpg_auto_all$mpg)))
  
  # Vypočítať RMSE hodnoty pre všetky modely
  rmse_hodnoty_all <- c(
    sqrt(mean((predict(model_mpg_auta, mtcars) - mtcars$mpg)^2)),
    sqrt(mean((predict(model_s_valcami_mpg_auta, mtcars) - mtcars$mpg)^2)),
    sqrt(mean((predict(model_interakcia_mpg_auta, mtcars) - mtcars$mpg)^2)),
    sqrt(mean((predict(model_interakcia_all, auto_mpg_all) - auto_mpg_all$mpg)^2))
  )
  
  # Usporiadaj modely podľa RMSE
  usporiadané_modely_all <- c("Model 1", "Model 2", "Model 3", "Model 4")
  names(rmse_hodnoty_all) <- usporiadané_modely_all
  print(rmse_hodnoty_all)
  
  # Predpoveď spotreby paliva pre konkrétny automobil
  predikované_mpg_all <- predict(model_interakcia_all, data.frame(displacement = 160, cylinders = 4))
  print(paste("Predikovaná spotreba paliva štvorvalcového automobilu so zdvihovým objemom 160 kubických palcov:", predikované_mpg_all))
  
  # Postaviť model pre spotrebu paliva vs. log(zdvihový objem) pre celý dataset
  model_závislosti_mpg_all <- lm(mpg ~ log(displacement), data = auto_mpg_all)
  
  # Vizualizácia modelu
  ggplot(auto_mpg_all, aes(x = displacement, y = mpg)) +
    geom_point() +
    geom_smooth(method = "lm", formula = y ~ log(x), se = FALSE) +
    labs(x = "Zdvihový objem valcov", y = "Spotreba paliva (MPG)")
} else {
  print("Súbor './auto/auto-mpg.data' neexistuje.")
}
## [1] "Súbor './auto/auto-mpg.data' neexistuje."