BÀI 2: THỰC HÀNH CÁC MÔ HÌNH THỐNG KÊ TRONG R

#Các gói đã cài đặt không cần cài lại, chạy các thư viện cần thiết cho dự án

library(tidyverse)
library(tidyr)
library(dplyr)
library(ggplot2)
library(readxl)

1.Thao tác với dữ liệu

1.1. Lấy dữ liệu từ file excel


credita_data <- read_excel("creditdata.xlsx", sheet = 1)

View(credita_data)

1.2. Làm sạch dữ liệu

1.2.1. Làm sạch dữ liệu: loại bỏ giá trị NA

credita_data <- na.omit(credita_data)

1.2.2. Làm sạch dữ liệu: thay ” ” trong tên cột thành “_”

names(credita_data) <- gsub(" ", "_", names(credita_data))

1.2.3. Làm sạch dữ liệu: Lọc các giá trị ngoại lai

ggplot(data = credita_data, aes (x=Credit_Score)) + 
  geom_histogram()

Dữ liệu đang bị chia thành 2 khoảng điểm tín dụng < 1000 và > 6000

credita_data_nho <- credita_data %>% 
                    filter (Credit_Score < 1000)

View(credita_data_nho)

credita_data_lon <- credita_data %>% 
                    filter (Credit_Score > 1000)

View(credita_data_lon)

Chọn dữ liệu < 1000 do số lượng lớn hơn

credita_data <- credita_data %>% 
                    filter (Credit_Score < 1000)

View(credita_data)

1.3. Thống kê mô tả

summary(credita_data)

1.3.1. Nhóm theo loại sở hữu nhà

Loai_sh_nha <- credita_data %>% 
              group_by(Home_Ownership) %>%
              summarise(So_luong = n(), Thu_nhap_TB = mean(Annual_Income))

View (Loai_sh_nha)

1.3.2. Biểu đồ

Thêm title và đổ màu

ggplot(credita_data, aes(x = Home_Ownership, fill = Term)) + 
  geom_bar() + labs(title = "Số lượng KH theo loại hình sở hữu nhà", x = "Sở hữu nhà", y = "Số lượng")

1.3.3. Biểu đồ phân bổ

ggplot(credita_data, aes(x = Annual_Income)) + 
  geom_histogram()

Đổ màu

ggplot(credita_data, aes(x = Credit_Score)) + 
  geom_histogram( color = "cyan", fill = "blue")

Thêm tiêu đề

ggplot(credita_data, aes(x = Credit_Score)) +
  geom_histogram(colors= 'white', fill = "orange")
labs(title = "Biểu đồ phân bổ điểm tín dụng",
     x = "Điểm tín dụng",
     y = "Số lượng khách hàng")

1.4. So sanh tuong quan giua Thu nhap nam va diem tin dung

ggplot(credita_data, aes(x = Credit_Score, y = Annual_Income)) +
  geom_point()

Đổ màu

ggplot(credita_data, aes(x = Credit_Score, y = Annual_Income)) +
  geom_point(color = "darkblue")

1.5. Xac dinh cac yeu to ngoai lai dua vao cac bieu do hop

Diem tin dung theo loai hinh so huu: de ra diem bat thuong

ggplot(credita_data, aes(x = Credit_Score, y = Home_Ownership))+
  geom_boxplot()

Thêm tiêu đề

ggplot(credita_data, aes(x = Home_Ownership, y = Credit_Score))+
  geom_boxplot(color = "red", fill = "lightgreen")
  labs(title = "Phân bổ giữa các loại hình sở hữu")

So sanh so luong khach hang theo so nam di lam

ggplot(credit_data, aes(x = Years_in_current_job))+
  geom_bar(fill = "darkblue")

—–PHẦN 2——–

2.1. Mo hinh hoi quy don bien

2.2. Danh gia moi quan he tuong quan giua A va B (thu nhap nam - thanh toan tin dung theo thang)

ggplot(credita_data, aes(x = Annual_Income, y = Monthly_Debt))+
  geom_point(color = "blue")+
  geom_smooth(method = "lm", color = "red")

mohinh2 <- lm(Monthly_Debt ~ Annual_Income, credita_data)

2.4. Áp dụng mô hình cho mẫu mới

library(readr)

2.4.1. Gọi dữ liệu mới credit_test.csv

dulieutest <- read.csv("credit_test.csv")

2.4.2. Làm sạch dữ liệu

dulieutest <- dulieutest %>% 
              na.omit()
summary(dulieutest)

View(dulieutest)

names(dulieutest) <- gsub("\\.", "_", names(dulieutest))

Thêm \ trước . để nhận ra . là dạng ký tự (chứ không xuất hiện ở định dạng khác)

mohinh2 <- lm(Monthly_Debt ~ Annual_Income, credita_data)

Dubaochitrahangthang_theothunhapnam <- dulieutest %>%
  `mutate(Dubaogiatri_Tha = predict(mohinh2, newdata = dulieutest))

View(Dubaochitrahangthang_theothunhapnam)

—PHẦN 3 MÔ HÌNH HỒI QUY LOGIC———-

LƯU Ý: Trong dữ liệu phải có cột ở định dạng 0-1

Trường hợp không có cần tìm bổ sung

Trong trường hợp minh họa bổ sung thêm dữ liệu 1 cột trạng thái là phần dư phép chia cho 2

3.1. Bổ sung cột trạng thái có định dạng 0-1

credita_data$trang_thai <- credita_data$Annual_Income %%2

credita_data$trang_thai <- factor(credita_data$trang_thai, level = c(0,1), labels = c ("Không vỡ nợ", "Có"))

tk_term <- credita_data %>%
            group_by(Term) %>%
            summarise(so_luong = n())

tk_term

3.2. Xây dựng mô hình

Mohinhlogic <- glm(trang_thai ~ Credit_Score, family = "binomial", data = credita_data)

summary(Mohinhlogic)

3.3. Chạy mô hình dự báo với bộ dữ liệu mới

Dubaotheologic <- predict(Mohinhlogic, newdata = dulieutest, type = "response")

summary(Dubaotheologic)

View(Dubaotheologic)

3.4. Mô hình hồi quy logic đa biến

Mohinhlogicdabien <- glm(trang_thai ~ Credit_Score + Annual_Income + Current_Loan_Amount, family = "binomial", data = credita_data)

summary(Mohinhlogicdabien)

Dubaotheologicdabiendabien <- predict(Mohinhlogicdabien, newdata = dulieutest, type = "response")

summary(Dubaotheologicdabiendabien)

View(Dubaotheologicdabiendabien)

—PHẦN 4 MÔ HÌNH ARIMA———-

4.1. Đọc file dữ liệu

sieuthi <- read_excel("3.SUPERSTORE.xlsx", sheet = 1)

View(sieuthi)

4.2. Thống kê tổng doanh số theo tháng năm

baocaoTG <- sieuthi %>%
            group_by( Thang = floor_date(`Order Date`, "month")) %>%
            summarise(Sales = sum(Sales))

View(baocaoTG)

Thiết lập tạo chuỗi thời gian tuần tự theo tháng cho các giá trị doanh số

Doanhso_thang <- ts(baocaoTG$Sales, start = c(2018,1), frequency = 12)

Doanhso_thang

plot(Doanhso_thang)

4.3. Xây dựng mô hình dự báo theo thời gian

Cài đặt gói dự báo forecast

install.packages("forecast")
library(forecast)

Tạo mô hình dự báo arima


mohinh_thoigian <- auto.arima(Doanhso_thang)

summary(mohinh_thoigian)

Dubaodoanhso_6thangtoi <- forecast(mohinh_thoigian, h = 6)

plot(Dubaodoanhso_6thangtoi)

—–PHẦN 5 MÔ HÌNH K-MEANS———–

View(sieuthi)

5.1. Thống kê thông tin về giao dịch theo từng khách hàng

Tkgiaodich <- sieuthi %>%
              group_by(`Customer ID`) %>%
              summarise(
                so_don = n_distinct(`Order ID`),
                DS = sum(Sales),
                LN = sum(Profit)
              )

View(Tkgiaodich)

5.2. Biến đổi các giá trị cần phân cụm về giá trị nhị phân 0-1

Tkgiaodich_biendoi <- scale(Tkgiaodich[-1])

View(Tkgiaodich_biendoi)

5.3. Xây dựng mô hình K-mean sau khi làm mịn

mohinhKmean <- kmeans(Tkgiaodich_biendoi, centers = 3)

install.packages("factoextra")

library(factoextra)

fviz_cluster (mohinhKmean, data = Tkgiaodich_biendoi)

View(mohinhKmean)