#Thực hành với mô hình thống kê
#cài đặt các gói nội dung thư viên
install.packages("tidyverse")
#1.Chạy các thư viện cần thiết cho dự án
library(tidyverse)
library(tidyr)
library(dplyr)
library(ggplot2)
library(readxl)
#2. Thao tác với dữ liệu
##2.1 Lấy dữ liệu từ 1 file excel
creditdata <- read_excel("creditdata.xlsx", sheet = 1)
##2.1.1 Qun sát dữ liệu
##2.1.2 Đánh giá tổng quan dữ liệu
summary(creditdata)
#3. Làm sạch dữ liệu
##3.1 Loại bỏ các dòng dữ liệu NA bằng hàm na.omit
creditdata <- na.omit(creditdata)
##3.2 Đổi tên cho các cột trong bảng bằng cách thay thế " " bằng "_"
names(creditdata) <- gsub(" ","_",names(creditdata))
#4. Khai thác dữ liệu
##4.1 Lọc các dữ liệu về điểm tín dụng
creditdata <- creditdata%>%
filter(Credit_Score < 1000)
creditdata_max <- creditdata%>%
filter(Credit_Score > 1000)
ggplot(creditdata, aes(x = Credit_Score)) +
geom_histogram()
#5. Thống kê
##5.1 So sánh các giá trị tương ứng
ggplot(creditdata, aes(x = Home_Ownership))+
geom_bar()
#5.2 Sự phân bổ bằng biểu đồ histogram
ggplot(creditdata, aes(x = Credit_Score)) +
geom_histogram(color = "blue", fill = "orange") +
labs( title = "Biểu đồ phân bổ điểm tín dụng",
x = "Điểm tín dung",
y = "Số lượng khách hàng")
##5.3 So sánh tương quan giữa thu nhập và điểm tín dụng
ggplot(creditdata, aes(x = Credit_Score, y = Annual_Income)) +
geom_point(color = "pink")
##5.4 Xác định những yếu tố ngoại lệ dựa vào biểu đồ hộp
###Điểm tín dụng theo chủ sở hữu
ggplot(creditdata, aes(x = Credit_Score, y = Home_Ownership)) +
geom_boxplot(color = "blue", fill = "orange") +
labs( title = "Biểu đồ phân bổ loại hình sở hữu",
x = "Điểm tín dung",
y = "Số lượng sở hữu")
##5.5 Thống kê theo nhóm
creditdata_kinhnghiem <- creditdata%>%
group_by(Years_in_current_job)%>%
summarise(soluong = n(),
thunhap_BT = mean(Annual_Income))
## So sánh độ tuổi theo số năm kinh nghiệm
ggplot(creditdata, aes(x = Years_in_current_job)) +
geom_bar(fill = "lightgreen")
#——————————————– #Phần 2: Phân tích chuẩn đoán và dự báo dựa theo các mô hình
#Mô hình hồi quy
## Mô hình hồi quy đơn biến
##Đánh giá mối quan hệ tương quan giữa A- B( thu nhập theo niêm và thanh toán tín dụng theo tháng)
ggplot(creditdata, aes(x = Annual_Income, y = Monthly_Debt)) +
geom_point(color = " blue") +
geom_smooth(method = "lm", color ="yellow")
##-> Có vẻ như có mối quan hệ tuơng quan , nên đưa vào phân tích
##Xét các điều kiện để phù hợp với phân tích tương quan không : các biến phải đảm bảo phân phối chuẩn
###Cách 1: Nhìn xem phân phối của các biến dựa theo biểu đồ phân bổ histogram
ggplot(creditdata,aes(x = Annual_Income))+
geom_histogram()
###Cách 2: Đánh giá phân phối chuẩn theo 1 số cách mở rộng
##Đánh gía phân phối chuẩn theo thu nhập theo năm
qqnorm(creditdata$Annual_Income)
qqline(creditdata$Annual_Income, col = "red")
##Đánh giá theo trả nợ hàng tháng
qqnorm(creditdata$Monthly_Debt)
qqline(creditdata$Monthly_Debt, col = "red")
### -> Đây không phải phân phối chuẩn, các nội dung phía sau khi xây dựng
##2.1.3 Xây dựng mô hình hồi quy tuyến tính
mohinh1 <- lm(creditdata$Monthly_Debt ~ creditdata$Annual_Income)
mohinh2 <- lm(Monthly_Debt ~ Annual_Income, creditdata)
summary(mohinh1)
##Residual standard error: 10k on 7563;p-value = 2.2e-16 < 0.5 -> giá trị chưa đạt nên tìm mô hình khác
#ÁP dụng mô hình mới
##Áp dụng mô hình mới
dulieutest <- read_csv("credit_test.csv")
dulieutest <- dulieutest%>%
na.omit(dulieutest)
names(dulieutest) <-gsub(" ", "_", names(dulieutest))
##2.5 Chạy dự báo kết quả từ mô hình
dubao_debtmonthly_annualincome <- dulieutest%>%
mutate(dubaogt_th = predict(mohinh2, newdata = dulieutest))
#3. Mô hình hồi quy logic
##Lưu ý: Trong dữ liệu phải có cột ở dữ liệu (0,1), TH k có cần bổ sụng, là phép chia /2
##3.1 Bổ sung cột trạng thái
creditdata$trangthai <- creditdata$Annual_Income %% 2
creditdata$trangthai <- factor(creditdata$trangthai, levels = c(0,1), labels = c("Không vỡ nợ","Có vỡ nợ"))
## Thống kê theo Term
tk_term <- creditdata %>%
group_by(Term) %>%
summarise (soluong = n())
##3.2 Xây dựng mô hình
Mohinhlogic <- glm(trangthai~Credit_Score, family = "binomial", data = creditdata)
summary(Mohinhlogic)
##3.3 Chạy mô hình dự báo với bộ dữ liệu test
Predict_datatest <- predict(Mohinhlogic, newdata = dulieutest, type ="response")
##3.4 Mô hình dự báo logic đa biến
predict_dabien <- glm(trangthai~ Credit_Score + Annual_Income + Current_Credit_Balance,
family = "binomial", data = creditdata)
dubaodabien <- predict(predict_dabien, newsdata = dulieutest, type = "response")
#—————————————————- #Mô hình ARIMA
superstore <- read_excel("3.SUPERSTORE.xlsx",sheet = 1)
names(superstore) <-gsub(" ", "_", names(superstore))
#thống kế tổng doanh số theo tháng năm
baocaotg <- superstore%>%
group_by( Thang = floor_date(Order_Date, "month"))%>%
summarise(Sales = sum(Sales))
##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_month <- ts(baocaotg$Sales, start = c(2018,1), frequency = 12)
plot(Doanhso_month)
#——————————————– ##5.2 Xây dựng mô hình dự báo theo thời gian
##5.2 Xây dựng mô hình dự báo theo thời gian
## Cài đặt gói forecast
install.packages("forecast")
library(forecast)
## Tạo mô hình arima
mohinh_tg <- auto.arima(Doanhso_month)
summary(mohinh_tg)
##5.3 Dự báo dựa theo mô hình
dubao_ds_6M_next <- forecast(mohinh_tg, h = 12)
plot(dubao_ds_6M_next)
## 6 Kmeams
##6.1 Thống kê giao dịch theo từng khách hàng
TK_gd <- superstore%>%
group_by(Customer_ID) %>%
summarise(
bill = n_distinct(Order_ID),
doanhso = sum(Sales),
loinhuan = sum(Profit)
)
##6.2 Biến đổi các giá trị cần phân cụm về giá trị nhị phân
TK_gd_bd <- scale(TK_gd[-1])
##6.3 Xây dựng mô hình Kmeams sau khi làm mịn
install.packages("factoextra")
library(factoextra)
mh_Kmeams <- kmeans(TK_gd_bd, centers = 3)
fviz_cluster(mh_Kmeams, data = TK_gd_bd)