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)
Phân tích bộ dữ
liệu thông qua các sơ đồ
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()

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 độ")

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.

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()

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")

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()

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")

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")

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")

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=