THỰC HÀNH VỚI CÁC MÔ HÌNH THỐNG KÊ

Chuẩn bị

data()

cài đặt các gói nội dung

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)

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

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

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Ả———

Thống kê

5.1 So sánh

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———

Mô hình hồi quy

2.1 mô hình hồi quy đơn biến (tương quan 1 -1 )

2.1.1. ĐÁNH GIÁ MỐI QUAN HỆ TƯƠNG QUAN giữa A và B (thu nhập năm vs mức thanh toán tín dụng theo tháng)


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)

5. Kmeans

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(
    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)