1 Giới thiệu tổng quát về bộ dữ liệu

  • Bộ dữ liệu cardata.csv gồm 301 quan sát và 8 biến. Bộ dữ liệu này chứa thông tin về những chiếc xe đã qua sử dụng. Dữ liệu này có thể được sử dụng cho nhiều mục đích như dự đoán giá để minh họa việc sử dụng hồi quy tuyến tính trong Machine Learning.

  • Các biến trong dữ liệu gồm:

    • Car_Name: Tên xe
    • Year: Năm sản xuất
    • Selling_Price: Giá bán
    • Present_Price: Giá khuyến mãi
    • Kms_Driven: Số km đã chạy
    • Fuel_Type: Loại nhiên liệu
    • Seller_Type: Loại người bán
    • Transmission: Hộp số
  • Bộ dữ liệu được lấy từ: https://www.kaggle.com/datasets/nehalbirla/vehicle-dataset-from-cardekho

car <- read.csv(file.choose(), header = T)
library(DT)
## Warning: package 'DT' was built under R version 4.3.3
datatable(car)

2 Phân tích bộ dữ liệu thông qua các sơ đồ

2.1 Sơ đồ 1: Biểu đồ phân phối số lượng xe theo từng loại nhiên liệu

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── 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.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ 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
car %>%  group_by(Fuel_Type) %>%  summarise(n = n()) %>% #Nhóm dữ liệu theo cột "fuel" và tính số lượng xe trong mỗi nhóm
  ggplot(aes(x = "", y = n, fill = Fuel_Type)) + #Tạo biểu đồ ggplot với trục x rỗng, trục y là số lượng xe (n) và màu sắc theo loại nhiên liệu
  geom_col(color = "black") + 
  coord_polar("y") +
  geom_text(aes(x = 1.3, label = n), position = position_stack(vjust = 0.5)) +
  labs(y = "Số lượng xe", fill = "Loại nhiên liệu") +
  theme_void()

2.2 Sơ đồ 2: Biểu đồ phân phối số lượng xe theo số km đã chạy

car %>%  group_by(Kms_Driven) %>%  summarise(n = n()) %>%
ggplot(aes(x = Kms_Driven)) +
  geom_density(fill = 'red') +
  labs(title = "Biểu đồ phân phối số lượng xe theo số km đã chạy",
       x = "Số km đã chạy (km)",
       y = "Mật độ")

2.3 Sơ đồ 3: Biểu đồ tương quan giữa giá xe và số km đã chạy

ggplot(car, aes_string(x = "Kms_Driven", y = "Selling_Price")) +
  geom_point() +
  labs(title = "Biểu đồ tương quan giữa giá xe và số km đã chạy",
       x = "Số km đã chạy (km)",
       y = "Giá xe (VNĐ)") +
  theme_minimal()
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

2.4 Sơ đồ 4: Biểu đồ phân phối giá xe theo từng loại hộp số

ggplot(car, aes(x = Transmission, y = Selling_Price)) +
  geom_bar(stat = "identity") +
  labs(title = "Biểu đồ phân phối giá xe theo từng loại hộp số",
       x = "Loại hộp số",
       y = "Giá xe") +
  theme_minimal()

2.5 Sơ đồ 5: Biểu đồ phân bố theo hãng xe

ggplot(car, aes(x = Car_Name)) +
  geom_bar(stat = "count") +
  labs(title = "Phân bố theo hãng xe", x = "Hãng xe", y = "Số lượng")

2.6 Sơ đồ 6: Biểu đồ phân bố giá xe

ggplot(car, aes(x = Selling_Price)) +
  geom_histogram(binwidth = 100000) +
  labs(x = "Giá xe (VNĐ)", y = "Số lượng xe") +
  theme_minimal()

2.7 Sơ đồ 7: Biểu đồ xu hướng giá xe theo thời gian

ggplot(car, aes(x = Year, y = Selling_Price)) +
  geom_line() +
  labs(x = "Năm", y = "Giá xe trung bình")

2.8 Sơ đồ 8: Biểu đồ phân bố theo năm sản xuất

ggplot(car, aes(x = Year)) +
  geom_bar(stat = "count") +
  labs(x = "Năm sản xuất", y = "Số lượng xe")

2.9 Sơ đồ 9: Biểu đồ phân bố theo số km đã chạy

ggplot(car, aes(x = Kms_Driven)) +
  geom_bar(stat = "count") +
  labs(title = "Phân bố xe theo số km đã chạy",
       x = "Số km đã chạy",
       y = "Số lượng xe")

2.10 Sơ đồ 10: Biểu đồ tương quan giữa giá xe và năm sản xuất

ggplot(car, aes_string(x = "Year", y = "Selling_Price")) +
  geom_point() +
  labs(x = "Năm sản xuất", y = "Giá xe") +
  theme_minimal()

LS0tDQp0aXRsZTogIk5ISeG7hk0gVuG7pCA1Ig0KYXV0aG9yOiAiVHLhuqduIE5o4bqtdCBMaW5oIg0KZGF0ZTogIlwiYHIgZm9ybWF0KFN5cy50aW1lKCksICclSDolTTolUywgJWQgLSAlbSAtICVZJylgXCIiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdG9jX2Zsb2F0X3BsYWNlbWVudDogcmlnaHQNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCi0tLQ0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyAqKkdp4bubaSB0aGnhu4d1IHThu5VuZyBxdcOhdCB24buBIGLhu5kgZOG7ryBsaeG7h3UqKg0KDQoqIELhu5kgZOG7ryBsaeG7h3UgY2FyZGF0YS5jc3YgZ+G7k20gMzAxIHF1YW4gc8OhdCB2w6AgOCBiaeG6v24uIELhu5kgZOG7ryBsaeG7h3UgbsOgeSBjaOG7qWEgdGjDtG5nIHRpbiB24buBIG5o4buvbmcgY2hp4bq/YyB4ZSDEkcOjIHF1YSBz4butIGThu6VuZy4gROG7ryBsaeG7h3UgbsOgeSBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY2hvIG5oaeG7gXUgbeG7pWMgxJHDrWNoIG5oxrAgZOG7sSDEkW/DoW4gZ2nDoSDEkeG7gyBtaW5oIGjhu41hIHZp4buHYyBz4butIGThu6VuZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCB0cm9uZyBNYWNoaW5lIExlYXJuaW5nLg0KDQoqIEPDoWMgYmnhur9uIHRyb25nIGThu68gbGnhu4d1IGfhu5NtOiANCg0KICAqIENhcl9OYW1lOiBUw6puIHhlDQogICogWWVhcjogTsSDbSBz4bqjbiB4deG6pXQNCiAgKiBTZWxsaW5nX1ByaWNlOiBHacOhIGLDoW4NCiAgKiBQcmVzZW50X1ByaWNlOiBHacOhIGtodXnhur9uIG3Do2kNCiAgKiBLbXNfRHJpdmVuOiBT4buRIGttIMSRw6MgY2jhuqF5DQogICogRnVlbF9UeXBlOiBMb+G6oWkgbmhpw6puIGxp4buHdQ0KICAqIFNlbGxlcl9UeXBlOiBMb+G6oWkgbmfGsOG7nWkgYsOhbg0KICAqIFRyYW5zbWlzc2lvbjogSOG7mXAgc+G7kQ0KIA0KKiBC4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIGzhuqV5IHThu6s6IGh0dHBzOi8vd3d3LmthZ2dsZS5jb20vZGF0YXNldHMvbmVoYWxiaXJsYS92ZWhpY2xlLWRhdGFzZXQtZnJvbS1jYXJkZWtobw0KDQpgYGAge3J9DQpjYXIgPC0gcmVhZC5jc3YoZmlsZS5jaG9vc2UoKSwgaGVhZGVyID0gVCkNCmxpYnJhcnkoRFQpDQpkYXRhdGFibGUoY2FyKQ0KYGBgDQoNCiMgKipQaMOibiB0w61jaCBi4buZIGThu68gbGnhu4d1IHRow7RuZyBxdWEgY8OhYyBzxqEgxJHhu5MqKg0KDQojIyAqKlPGoSDEkeG7kyAxOiBCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIHPhu5EgbMaw4bujbmcgeGUgdGhlbyB04burbmcgbG/huqFpIG5oacOqbiBsaeG7h3UqKg0KDQpgYGAge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmNhciAlPiUgIGdyb3VwX2J5KEZ1ZWxfVHlwZSkgJT4lICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lICNOaMOzbSBk4buvIGxp4buHdSB0aGVvIGPhu5l0ICJmdWVsIiB2w6AgdMOtbmggc+G7kSBsxrDhu6NuZyB4ZSB0cm9uZyBt4buXaSBuaMOzbQ0KICBnZ3Bsb3QoYWVzKHggPSAiIiwgeSA9IG4sIGZpbGwgPSBGdWVsX1R5cGUpKSArICNU4bqhbyBiaeG7g3UgxJHhu5MgZ2dwbG90IHbhu5tpIHRy4bulYyB4IHLhu5duZywgdHLhu6VjIHkgbMOgIHPhu5EgbMaw4bujbmcgeGUgKG4pIHbDoCBtw6B1IHPhuq9jIHRoZW8gbG/huqFpIG5oacOqbiBsaeG7h3UNCiAgZ2VvbV9jb2woY29sb3IgPSAiYmxhY2siKSArIA0KICBjb29yZF9wb2xhcigieSIpICsNCiAgZ2VvbV90ZXh0KGFlcyh4ID0gMS4zLCBsYWJlbCA9IG4pLCBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSkgKw0KICBsYWJzKHkgPSAiU+G7kSBsxrDhu6NuZyB4ZSIsIGZpbGwgPSAiTG/huqFpIG5oacOqbiBsaeG7h3UiKSArDQogIHRoZW1lX3ZvaWQoKQ0KYGBgDQoNCiMjICoqU8ahIMSR4buTIDI6IEJp4buDdSDEkeG7kyBwaMOibiBwaOG7kWkgc+G7kSBsxrDhu6NuZyB4ZSB0aGVvIHPhu5Ega20gxJHDoyBjaOG6oXkqKg0KDQpgYGAge3J9DQpjYXIgJT4lICBncm91cF9ieShLbXNfRHJpdmVuKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUNCmdncGxvdChhZXMoeCA9IEttc19Ecml2ZW4pKSArDQogIGdlb21fZGVuc2l0eShmaWxsID0gJ3JlZCcpICsNCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIHPhu5EgbMaw4bujbmcgeGUgdGhlbyBz4buRIGttIMSRw6MgY2jhuqF5IiwNCiAgICAgICB4ID0gIlPhu5Ega20gxJHDoyBjaOG6oXkgKGttKSIsDQogICAgICAgeSA9ICJN4bqtdCDEkeG7mSIpDQpgYGANCg0KIyMgKipTxqEgxJHhu5MgMzogQmnhu4N1IMSR4buTIHTGsMahbmcgcXVhbiBnaeG7r2EgZ2nDoSB4ZSB2w6Agc+G7kSBrbSDEkcOjIGNo4bqheSoqDQoNCmBgYCB7cn0NCmdncGxvdChjYXIsIGFlc19zdHJpbmcoeCA9ICJLbXNfRHJpdmVuIiwgeSA9ICJTZWxsaW5nX1ByaWNlIikpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgdMawxqFuZyBxdWFuIGdp4buvYSBnacOhIHhlIHbDoCBz4buRIGttIMSRw6MgY2jhuqF5IiwNCiAgICAgICB4ID0gIlPhu5Ega20gxJHDoyBjaOG6oXkgKGttKSIsDQogICAgICAgeSA9ICJHacOhIHhlIChWTsSQKSIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KIyMgKipTxqEgxJHhu5MgNDogQmnhu4N1IMSR4buTIHBow6JuIHBo4buRaSBnacOhIHhlIHRoZW8gdOG7q25nIGxv4bqhaSBo4buZcCBz4buRKioNCg0KYGBgIHtyfQ0KZ2dwbG90KGNhciwgYWVzKHggPSBUcmFuc21pc3Npb24sIHkgPSBTZWxsaW5nX1ByaWNlKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBsYWJzKHRpdGxlID0gIkJp4buDdSDEkeG7kyBwaMOibiBwaOG7kWkgZ2nDoSB4ZSB0aGVvIHThu6tuZyBsb+G6oWkgaOG7mXAgc+G7kSIsDQogICAgICAgeCA9ICJMb+G6oWkgaOG7mXAgc+G7kSIsDQogICAgICAgeSA9ICJHacOhIHhlIikgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQojIyAqKlPGoSDEkeG7kyA1OiBCaeG7g3UgxJHhu5MgcGjDom4gYuG7kSB0aGVvIGjDo25nIHhlKioNCg0KYGBgIHtyfQ0KZ2dwbG90KGNhciwgYWVzKHggPSBDYXJfTmFtZSkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJjb3VudCIpICsNCiAgbGFicyh0aXRsZSA9ICJQaMOibiBi4buRIHRoZW8gaMOjbmcgeGUiLCB4ID0gIkjDo25nIHhlIiwgeSA9ICJT4buRIGzGsOG7o25nIikNCmBgYA0KDQojIyAqKlPGoSDEkeG7kyA2OiBCaeG7g3UgxJHhu5MgcGjDom4gYuG7kSBnacOhIHhlKioNCg0KYGBgIHtyfQ0KZ2dwbG90KGNhciwgYWVzKHggPSBTZWxsaW5nX1ByaWNlKSkgKw0KICBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IDEwMDAwMCkgKw0KICBsYWJzKHggPSAiR2nDoSB4ZSAoVk7EkCkiLCB5ID0gIlPhu5EgbMaw4bujbmcgeGUiKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCiMjICoqU8ahIMSR4buTIDc6IEJp4buDdSDEkeG7kyB4dSBoxrDhu5tuZyBnacOhIHhlIHRoZW8gdGjhu51pIGdpYW4qKg0KDQpgYGAge3J9DQpnZ3Bsb3QoY2FyLCBhZXMoeCA9IFllYXIsIHkgPSBTZWxsaW5nX1ByaWNlKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGxhYnMoeCA9ICJOxINtIiwgeSA9ICJHacOhIHhlIHRydW5nIGLDrG5oIikNCmBgYA0KDQojIyAqKlPGoSDEkeG7kyA4OiBCaeG7g3UgxJHhu5MgcGjDom4gYuG7kSB0aGVvIG7Eg20gc+G6o24geHXhuqV0KioNCg0KYGBgIHtyfQ0KZ2dwbG90KGNhciwgYWVzKHggPSBZZWFyKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImNvdW50IikgKw0KICBsYWJzKHggPSAiTsSDbSBz4bqjbiB4deG6pXQiLCB5ID0gIlPhu5EgbMaw4bujbmcgeGUiKQ0KYGBgDQoNCiMjICoqU8ahIMSR4buTIDk6IEJp4buDdSDEkeG7kyBwaMOibiBi4buRIHRoZW8gc+G7kSBrbSDEkcOjIGNo4bqheSoqDQoNCmBgYCB7cn0NCmdncGxvdChjYXIsIGFlcyh4ID0gS21zX0RyaXZlbikpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJjb3VudCIpICsNCiAgbGFicyh0aXRsZSA9ICJQaMOibiBi4buRIHhlIHRoZW8gc+G7kSBrbSDEkcOjIGNo4bqheSIsDQogICAgICAgeCA9ICJT4buRIGttIMSRw6MgY2jhuqF5IiwNCiAgICAgICB5ID0gIlPhu5EgbMaw4bujbmcgeGUiKQ0KYGBgDQoNCiMjICoqU8ahIMSR4buTIDEwOiBCaeG7g3UgxJHhu5MgdMawxqFuZyBxdWFuIGdp4buvYSBnacOhIHhlIHbDoCBuxINtIHPhuqNuIHh14bqldCoqDQoNCmBgYCB7cn0NCmdncGxvdChjYXIsIGFlc19zdHJpbmcoeCA9ICJZZWFyIiwgeSA9ICJTZWxsaW5nX1ByaWNlIikpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh4ID0gIk7Eg20gc+G6o24geHXhuqV0IiwgeSA9ICJHacOhIHhlIikgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQoNCg0KDQo=