1. Khởi tạo các thư viện sử dung

library(tidyverse) library(tidyr) library(dplyr) library(readr) library(readxl)

2. Lấy dữ liệu vào

creditdata <- read_excel(“creditdata.xlsx”, sheet = 1) #có thể kết hợp làm sạch với các tình huống có lỗi NA sẽ được nhận diện là na luôn creditdata <- read_excel(“creditdata.xlsx”, na = c(“NA”,“N/A”,“null”, ““))

3. Đánh giá dữ liệu

summary(creditdata)

4. Xử lý dữ liệu thiếu loạt bỏ các dòng có giá trị na

creditdata <- na.omit(creditdata)

#có thể xử lý bằng các kỹ thuật làm sạch khác như lọc cột khác NAfilter( !is.na) #có thể thay thế NA bằng giá trị cột trên fill(creditdata,Term, .direction =” down”) /“up” # có thể thay thế NA bằng giá trị Null hoặc 0: creditdata[is.na(creditdata)] <- null/ 0

Đổi tên cột thay thế dấu _

names(creditdata) <- gsub(” “,”_“, names(creditdata))

4.1lọc điểm tín dung <2000

credit_loc <- creditdata %>% filter(Credit Score>5000 )

creditdata <- creditdata%>% filter(Credit Score< 2000)

View(creditdata) # 5. Các bài toán thống kê ## 5.1 Nhóm theo nhóm Loai_sh_nha <- creditdata %>% group_by(Home Ownership)%>% summarise( soluong = n(), ThunhapTBnam = mean(Annual Income))

head(Loai_sh_nha)

muc_dich_vay <- creditdata%>% group_by(Purpose)%>% summarise(soluong = n(), GiatrivayTB = mean(Current Loan Amount))

head(muc_dich_vay) ## 5.2 Biểu đồ trực quan theo nhóm - so sánh với ggplot #số lượng hợp đồng tín dụng theo nhóm sở hữu nhà ggplot(creditdata, aes(x = Home Ownership, color = Term)) + geom_bar()

#thêm nhãn

ggplot(creditdata, aes(x = Home Ownership, color = Term)) + geom_bar()+ labs(title = “Số lượng tín dụng theo loại hình sở hữu nhà”, x=” Loại hình sở hữu”, y = “Số lượng tín dụng”)

#đổ màu khối xếp trồng

ggplot(creditdata, aes(x = Home Ownership, fill = Term)) + geom_bar()+ labs(title = “Số lượng tín dụng theo loại hình sở hữu nhà”, x=” Loại hình sở hữu”, y = “Số lượng tín dụng”)

#thêm tiêu đề ggplot(creditdata, aes(x = Home Ownership, fill = Term)) + geom_bar()+ labs(title = “Số lượng tín dụng theo loại hình sở hữu nhà”, x=” Loại hình sở hữu”, y = “Số lượng tín dụng”) + theme_minimal()

#Xếp cạnh nhau

ggplot(creditdata, aes(x = Home Ownership, fill = Term)) + geom_bar(position = “dodge”)+ labs(title = “Số lượng tín dụng theo loại hình sở hữu nhà”, x=” Loại hình sở hữu”, y = “Số lượng tín dụng”) + theme_minimal()

#số lượng năm đi làm theo hdtín dụng

ggplot(creditdata, aes(x=Years in current job, fill = Term)) + geom_bar()

ggplot(creditdata, aes(x=Years in current job, fill = Term)) + geom_bar(position = “dodge”)

5.3 Biểu đồ phân bổ

ggplot(creditdata, aes(x= Annual Income)) + geom_histogram(bins =10, position = “stack”, fill = “blue”) #thêm nhãn ggplot(creditdata, aes(x= Annual Income)) + geom_histogram(bins =10, position = “stack”, fill = “blue”)+

labs(title = ” Phân bổ thu nhập hàng năm”, x= “Khoảng thu nhập”, y= “thu nhập”)

theme_minimal()

#mục đích vay ggplot(muc_dich_vay, aes(x= soluong)) + geom_histogram(bins =5, position = “stack”, fill = “blue”)

#Phân bổ điểm tín dụng

ggplot(creditdata, aes(x=Credit Score)) + geom_histogram()

ggplot(creditdata, aes(x=Credit Score)) + geom_histogram(bins = 10, color =“blue”, fill = “green”)

5.4 Mối quan hệ tương quan giữa Thu nhập và điểm tín dụng

ggplot(creditdata, aes(x= Annual Income, y = Credit Score, colour = Term)) + geom_point()

#Điểm tín dụng và trả theo tháng

ggplot(creditdata, aes(x= Annual Income, y = Monthly Debt, colour = Term)) + geom_point()+ labs(title = ” Tương quan giữa điểm tín dụng và chi trả hàng tháng”, x=” Mức trả hàng tháng”, y =” Điểm tín dụng”)

5.5 Xác định ngoại lai với boxplot

#Phân bổ điểm tín dụng theo nhóm sở hữu nhà

ggplot(creditdata, aes(x = Credit Score, y = Home Ownership, fill = “pink” )) + geom_boxplot()

#Phân bổ lương năm theo năm công tac ggplot(creditdata, aes(x= Years in current job, y = Annual Income, fill=“darkblue”)) + geom_boxplot() + labs(title = ” phân bổ năm đi làm và thu nhập”, x= “năm đi làm”, y=” Thu nhập năm”)

——————————–

PHÂN TÍCH CHẨN ĐÓN VÀ DỰ BÁO CẦN XÂY DỰNG CÁC MÔ HÌNH PHÂN TÍCH THỐNG KÊ

VỚI CÁC MÔ HÌNH PHÂN TÍCH HỒI QUY VÀ ARIMA

ĐÁNH GIÁ MẪU ĐÃ PHÂN PHỐI CHUẨN CHƯA

#1. Đánh giá phân phối chuẩn của mẫu với các giá trị thống kê như số dư, thu nhập năm, điểm tín dụng

Sử dụng histogram hoặc qqnor và qqline, shapiro.test() chỉ áp dụng cho dữ liệu nhỏ <5000 ( có giá trị p >0.05 là pp chuẩn)

#1.1Đánh giá độ phân khối của điểm tín dụng

qqnorm(creditdata\(`Credit Score`) qqline(creditdata\)Credit Score, col = “red”)

#shapiro.test(credit_loc\(`Credit Score`) shapiro.test(creditdata\)Credit Score)

#1.2Thu nhập năm qqnorm(creditdata\(`Annual Income`) qqline(creditdata\)Annual Income, col=“red”)

#1.3 Dư nợ tháng shapiro.test(creditdata$Monthly Debt)

#Số dư

qqnorm(creditdata\(`Current Credit Balance`) qqline(creditdata\)Current Credit Balance, color = “red”)

2.MÔ HÌNH HỒI QUY

2.1Tương quan giữa Thu nhập năm và chi trả tháng

#biểu đồ ggplot(creditdata, aes(x= Annual Income, y = Monthly Debt)) + geom_point()+ geom_smooth(method = “lm”)

2.2Tạo mô hình hồi quy quan hệ giữa tín dụng theo tháng và thu nhập năm

hoiquy <- lm(Monthly_Debt~ Annual_Income,creditdata)

#Dọc mô hình – Tìm ra phương trình hồi quy Monthly = Intercept + Annual Income hoiquy summary(hoiquy)

#–> Đọc hiểu bảng tóm tắt

2.3 tạo mô hình tuyến tính phân loại giữ tín dung tháng với thu nhập năm và chủ sở hữu

#Biểu đồ quan sát

ggplot(creditdata, aes(x= Home_Ownership, y =Monthly_Debt )) + geom_boxplot(color =“darkblue”)

#mô hình hồi quy có phân nhóm hoiquyda <-lm(Monthly_Debt ~ Annual_Income + Home_Ownership, creditdata)

Đọc mô hình để ra phương trình y= a + bx1+ cx2 + dx3

hoiquyda

summary(hoiquyda)

3. XÂY DỰNG MÔ HÌNH DỰ BÁO

Giả lập mô hình có tính dự báo cao

Sử dụng bộ dữ liệu test của mô hình

chaymau<-read.csv(“credit_test.csv”)

chaymau <- chaymau%>% na.omit(chaymau)

names(chaymau) <- gsub(“\.”,“_“, names(chaymau)) # chú ý dấu . giống * ở trong win nên cần ký tự \ để thay thế

View(chaymau)

4. DỰ BÁO KẾT QUẢ TỪ MÔ HÌNH VỚI DỮ LIỆU MẪU

dubaotraThang_theothunhapNam <- chaymau%>% mutate(Du_bao_chitra_Thang= predict(hoiquy, newdata = chaymau))

dubaotraThang_theothunhapNam

head(dubaotraThang_theothunhapNam)

View(dubaotraThang_theothunhapNam)

5. MÔ HÌNH HỒI QUY LOGIC

5.1MÔ HÌNH ĐƠN BIẾN

Dự đoán khả năng vỡ nợ theo điểm tín dụng

Yêu cầu là trong bộ dữ liệu phải có cột hiển thị tình trạng Vỡ nợ hay không.

#trong creditdata chưa có cột Trạng thái này nên có thể tạo thêm cột mới trước khi làm nội dung này

#creditdata$Trangthai <- rep(0, nrow(creditdata))# ở dạng này trạng thái có 1 loại sẽ không xây dựng mô hình hồi quy logic được

creditdata\(Trangthai <-creditdata\)Annual_Income%%2

creditdata\(Trangthai <- factor(creditdata\)Trangthai, levels = c(0,1), labels = c(“Không vỡ nợ”, “Có”))

5.2Chạy mô hình

mohinhYN <- glm(Trangthai~ Credit_Score, family = “binomial”, data = creditdata)

summary(mohinhYN) #Đánh giá mô hình có ý nghĩa dự báo khi các giá trị p<0.05

5.3Chạy mô hình dự đoán với bộ dữ liệu kiểm tra

dubaoYN <- predict(mohinhYN, newdata = chaymau, type = “response”)

View(dubaoYN)

5.4 Hồi quy logic da biến

mohinhgolicdabien <- glm(Trangthai~Annual_Income + Credit_Score + Current_Credit_Balance, data = creditdata, family = “binomial”)

summary(mohinhgolicdabien)

chạy dự báo với dữ liệu mới

dubaodabienlogic <- predict(mohinhgolicdabien, newdata = chaymau, type=“response”)

View(dubaodabienlogic)

5. Mô hình Kmeans

#—————–

5. Mô hình Kmeans

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

names(sieuthi) <- gsub(” “,”_“, names(sieuthi))

phannhom theo khách hàng

bckh <- sieuthi%>% group_by(Customer_ID) %>% summarise(

        sodon = n_distinct(`Order_ID`),
        LN = sum(Profit),
        DS = sum(Sales)) 
      

#đánh giá bckh để chuyển sang hệ số đánh giá 0-1 dùng cho mô hình hồi quy - phâ ncụm

bckh_muot<- scale(bckh[-1])

mo hinh Phân cụm kmen

mohinhphancum<- kmeans(bckh_muot, centers = 5)

##Thêm cụm

bckh\(Cluster <- mohinhphancum\)cluster

View(bckh$Cluster)

Vẽ biểu đồ trực quan

install.packages(“factoextra”) library(factoextra)

fviz_cluster(mohinhphancum, data = bckh_muot)

View(phancum)

library(cluster)

fviz_cluster(phancum, bckh)

———–

ARIMA

#Tổng doanh số theo tháng DSThang <- sieuthi %>% mutate(Date = as.Date(Order_Date)) %>% group_by(Month = floor_date(Date, “month”)) %>% #Hàm làm tròn xuống về ngày đầu tiên của tháng summarise(Sales = sum(Sales))

View(sieuthi)

Tạo chuỗi thời gian dạng ts

DS_chuoi <- ts(DSThang$Sales, start = c(2013, 1), frequency = 12) plot(DS_chuoi, main = “Chuỗi thời gian doanh số theo tháng”)

install.packages(“forecast”) library(forecast)

Tự động chọn mô hình ARIMA phù hợp

mohinharima <- auto.arima(DS_chuoi)

Kiểm tra mô hình

summary(mohinharima)

Dubaods <- forecast(mohinharima, h = 6) plot(Dubaods, main = “Dự báo doanh số 6 tháng tới”)