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

data()

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á 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")

PHẦN 2: PHÂN TÍCH CHẨ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 và B (Thu nhập năm và Mức 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="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)

5. Kmeans

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