data()
install.packages("tidyverse")
# chạy các thư viện cần thiết cho dự án
library(tidyverse)
library(tidyr)
library(dplyr)
library(ggplot2)
library(readxl)
creditdata <- read_excel("creditdata.xlsx",sheet =1)
## 2.1.1. Quan sát dữ liệu
View(creditdata)
## 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 có giá trị NA xuất hiện
creditdata <- na.omit()
## 3.2. thay thế dấu cách bằng _
names(creditdata) <-gsub(" ", "_", names(credit_data))
# 4, Khai thác dữ liệu
##4.1 Lọc các thông tin về điểm tín dụng
creditdata <- creditdata%>%
filter(Credit_Score <1000)
creditdatamax <- creditdata%>%
filter(Credit_Score>1000)
View (creditdata)
#————————PHẦN 1: PHÂN TÍCH MÔ TẢ———
ggplot(creditdata, aes(x=Home_Ownership)) +
geom_bar()
## 5.2 Phân bổ
ggplot(creditdata, aes(x= Credit_Score)) +
geom_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 dụng",
y="số lượng khách hàng")
## 5.3 So sánh tương quan giữa Thu nhập năm và điểm tín dụng
ggplot(creditdata, aes(x=Credit_Score, y = Annual_Income)) +
geom_point()
ggplot(creditdata, aes(x=Credit_Score, y = Annual_Income)) +
geom_point(color ="darkblue")
## 5.4 Xác định ngoại lai dựa vào biểu đồ hộp
## Điểm tín dụng theo loại hình sở hữu
ggplot(creditdata,aes(x=Credit_Score, y= Home_Ownership))+
geom_boxplot()
ggplot(creditdata,aes(x=Credit_Score, y= Home_Ownership))+
geom_boxplot(color="red",fill='lightgreen')+
labs(title="Phân bổ các loại hình sở hữu")
## 5.5 Thống kê theo nhóm(thống kê theo nhóm xong thì bảng mới chỉ có 12 cột 3 dòng)
creditdata.theotuoidilam <- creditdata%>%
group_by(Years_in_current_job)%>%
summarise(soluong = n(),
thunhap_BT = mean(Annual_Income))
## so sánh sô lượng KH theo số năm đi làm
ggplot(creditdata, aes(x=Years_in_current_job)) +
geom_bar(color="darkblue")
View(creditdata)
#—-PHẦN 2: PHÂN TÍCH CHUẨN ĐOÁN VÀ DỰ BÁO DỰA THEO CÁC MÔ HÌNH———
creditdata %>%
filter(!is.na(Credit_Score), !is.na(Annual_Income)) %>%
ggplot(aes(x = Credit_Score, y = Annual_Income)) +
geom_point(color = "darkblue") +
geom_smooth(method = "lm")
ggplot(creditdata, aes(x= Annual_Income, y= Monthly_Debt))+
geom_point(color="blue")
geom_smooth(method="lm")
##--> có vẻ như có mối quan hệ tương quan, nên đưa vào phân tích
## xét các điều kiện xem có phù hợp với phân tích tương quan không: Các biến phải phân phối chuẩn
## cần xác định có phân phối chuẩn hay không
### cách 1: nhìn xem phân phối của các biến dựa theo phân bổ histogram
ggplot(creditdata, aes(x=Annual_Income))+
geom_histogram()
###cách 2: đánh giá phân phối chuẩn theo một số cách mở rộng
## đánh giá phân phối chuẩn của Thu nhập năm
qqnorm(creditdata$Annual_Income)
qqline(creditdata$Annual_Income, col='red')
## --> Nếu các mẫu không phân phối chuẩn thì các nội dung phía sau khi xây dựng mô hình đưa ra không chính xác
## 2.1.3. Xây dựng mô hình hồi quy tuyến tính đơn biến
mohinh1 <- lm(creditdata$Monthly_Debt ~ creditdata$Annual_Income)
mohinh2 <- lm(Monthly_Debt ~ Annual_Income, data =creditdata)
mohinh1
View(mohinh1)
summary(mohinh1)
-----
#2.4 Áp dụng mô hình cho mẫu mới
dulieutest <- read.csv("credit_test.csv")
dulieutest <- dulieutest%>%
na.omit(dulieutest)
names(dulieutest) <- gsub("\\.","_",names(dulieutest))
View(dulieutest)
#2.5 Chạy dự báo kết quả từ mô hình
Dubaochitrahangthang_theothunhapnam <- dulieutest%>%
mutate(Dubaogiatri_Tha = predict(mohinh2,newdata = dulieutest ))
Dubaochitrahangthang_theothunhapnam
View(Dubaochitrahangthang_theothunhapnam)
#3 MÔ HÌNH HỒI QUY LOGIC ## lưu ý trong dữ liệu phải có cột ở định dạng 0 1 ## 3.1 Th không có thì thêm 1 cột trạng thái là phần dư phép chia hết cho 2
creditdata$Trangthai <- creditdata$Annual_Income %% 2
creditdata$Trangthai <- factor(creditdata$Trangthai, level = c(0,1),labels = c("Không vỡ nợ","Có"))
View(creditdata)
#xây dụng mô hình logic
## thống kê theo nhóm Term
tk_term <- creditdata%>%
group_by(Term)%>%
summarise(soluong= n())
ggplot(creditdata, aes(x=Term,y=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 mới
Dubaotheologic <- predict(Mohinhlogic, newdata = dulieutest, type="response")
summary(Dubaotheologic)
View(Dubaotheologic)
## 3.4 mô hình logic hồi quy đa biến
mh_logicdabien <- glm(Trangthai~Credit_Score + Annual_Income + Current_Credit_Balance,
family ="binomial",data = creditdata)
summary(mh_logicdabien)
dubaodabien_moi <- predict(mh_logicdabien, newdata = dulieutest, type="response")
dubaodabien_moi
#4. MÔ HÌNH ARIMA
# Dữ liệu thực hành là Superstore
sieuthi <- read_excel("3.SUPERSTORE.xlsx", sheet = 1)
View(sieuthi)
sieuthi
# 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))
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)
plot (Doanhso_thang)
## 4.2 Xây dựng mô hình dự báo theo thời gian
## Cài gói dự báo forecast
install.packages("forecast")
library(forecast)
names(sieuthi) <-gsub(" ", "_", names(sieuthi))
# Tạo mô hình arima
mohinh_thoigian <- auto.arima(Doanhso_thang)
summary(mohinh_thoigian)
## 4.3 Dự báo dựa theo mô hình
Dubaodoanhso_6thangtoi <- forecast(mohinh_thoigian, h =6)
plot(Dubaodoanhso_6thangtoi)
Tkgiaodich <- sieuthi%>%
group_by(Customer_ID) %>%
summarise(
sodon = n_distinct(Order_ID),
DS = sum(Sales),
LN = sum(Profit)
)
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])
Tkgiaodich_biendoi
## 5.3 Xây dựng mô hình Kmeans sau khi làm mịn
mohinhKmeans <- kmeans(Tkgiaodich_biendoi, centers = 3)
install.packages("factoextra")
library(factoextra)
fviz_cluster(mohinhKmeans, data = Tkgiaodich_biendoi)