data()
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á dữ liệu
summary(creditdata)
## 3. Làm sạch dữ liệu
##3.1. Loại bỏ dữ liệu có NA
creditdata <- na.omit(creditdata)
##3.2. Đổi tên các cột trong bảng, Thay thế giá trị trống thành "_"
names(creditdata) <- gsub(" ", "_", names(creditdata))
## 4. Khai thác dữ liệu
## 4.1. Lọc các thông tin về điểm tín dụng
creditdata_max <- creditdata%>%
filter(Credit_Score >1000)
View(creditdata_max)
creditdata <- creditdata%>%
filter(Credit_Score <1000)
##5. Thống kê
##5.1. So sánh
ggplot(creditdata, aes(x=Home_Ownership))+
geom_bar()
##5.2. Sự phân bổ
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 sự 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(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 từng nhóm loại hình sở hữu khác nhau
ggplot(creditdata, aes(x=Home_Ownership, y=Credit_Score))+
geom_boxplot(color= "red", fill="orange")+
labs(title= "Phân bổ giữa các loại hình sở hữu",
x="Loại hình sở hữu",
y="Điểm tín dụng")
##5.5. Thống kê theo nhóm
creditdata_theotuoidilam <- creditdata%>%
group_by(Years_in_current_job)%>%
summarise(soluong = n(),
thunhap_bt = mean(Annual_Income))
## So sánh số lượng khách hàng theo số năm đi làm
ggplot(creditdata, aes(x=Years_in_current_job))+
geom_bar(fill="red")
ggplot(creditdata, aes(x= Annual_Income, y= Monthly_Debt))+
geom_point(color="blue")+
geom_smooth(method="lm", color="red")
## ---> Có vẻ như có mối 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ách 1: Nhìn xem phân phối của các biến dựa theo biểu đồ phân bổ histogram
### Cách 2: Đánh giá phân phối chuẩn theo 1 số cách mở rộng:
qqnorm(creditdata$Annual_Income)
qqline(creditdata$Annual_Income,col="red")
## Nếu mẫu không phân phối chuẩn thì mô hình xây dựng phía sau đưa kết quả 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,creditdata)
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))
View(Dubaochitrahangthang_theothunhapnam)
#3 MÔ HÌNH HỒI QUY LOGIC ## Lưu ý là 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 hoạ, sử dụng thêm một cột trạng thái là phần dư phép chia hết cho 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 nhóm Term
tk_term <- creditdata %>%
group_by(Term) %>%
summarise( soluong = n())
tk_term
##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 theo mô hình logic
Dubaotheologic <- predict(mohinhlogic, newdata = dulieutest, type = "response")
View(Dubaotheologic)
## 3.4. Mô hình hồi quy logic đa biến
Mohinhlogicdabien <- glm(Trangthai ~ Credit_Score + Annual_Income + Current_Credit_Balance, family = "binomial", data = creditdata)
summary(Mohinhlogicdabien)
dubaodabien_moi <- predict( Mohinhlogicdabien, newsdata = 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)
# 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)
View(Doanhso_thang)
plot(Doanhso_thang)
##4.2. Xây dựng mô hình dự báo theo thời gian
##Bước 1: Cài gói dự báo forecast
install.packages("forecast")
library(forecast)
##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)
#View(sieuthi)
names(sieuthi) <- gsub(" ", "_", names(sieuthi))
##5.1. Thống kê thông tin
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ị 0-1
Tkgiaodich_biendoi <- scale(Tkgiaodich[-1])
Tkgiaodich_biendoi
##5.3 Xây dựng mô hình Kmeans
mohinhKmeans <- kmeans(Tkgiaodich_biendoi, centers = 3)
install.packages("factoextra")
library(factoextra)
fviz_cluster(mohinhKmeans, data = Tkgiaodich_biendoi)