1. ĐỌC DỮ LIỆU

df <- read.csv("data.csv")
head(df)
##   ho_id   khu_vuc gioi_tinh tuoi hoc_van thu_nhap chi_tieu tiet_kiem
## 1     1 Nong_thon        Nu   31    THCS  7150000  5100000   2050000
## 2     2 Thanh_thi       Nam   32    THCS  7300000  5200000   2100000
## 3     3 Nong_thon        Nu   33    THPT  7450000  5300000   2150000
## 4     4 Thanh_thi       Nam   34 Dai_hoc  7600000  5400000   2200000
## 5     5 Nong_thon        Nu   35    THCS  7750000  5500000   2250000
## 6     6 Thanh_thi       Nam   36    THPT  7900000  5600000   2300000

2. THỐNG KÊ MÔ TẢ

bang_mo_ta <- data.frame(
  Chi_so = c("Thu nhập", "Chi tiêu", "Tiết kiệm"),
  Trung_binh = c(mean(df$thu_nhap, na.rm = TRUE),
                 mean(df$chi_tieu, na.rm = TRUE),
                 mean(df$tiet_kiem, na.rm = TRUE)),
  Trung_vi = c(median(df$thu_nhap, na.rm = TRUE),
               median(df$chi_tieu, na.rm = TRUE),
               median(df$tiet_kiem, na.rm = TRUE)),
  Nho_nhat = c(min(df$thu_nhap, na.rm = TRUE),
               min(df$chi_tieu, na.rm = TRUE),
               min(df$tiet_kiem, na.rm = TRUE)),
  Lon_nhat = c(max(df$thu_nhap, na.rm = TRUE),
               max(df$chi_tieu, na.rm = TRUE),
               max(df$tiet_kiem, na.rm = TRUE)),
  Do_lech_chuan = c(sd(df$thu_nhap, na.rm = TRUE),
                    sd(df$chi_tieu, na.rm = TRUE),
                    sd(df$tiet_kiem, na.rm = TRUE))
)
bang_mo_ta
##      Chi_so Trung_binh Trung_vi Nho_nhat Lon_nhat Do_lech_chuan
## 1  Thu nhập   14575000 14575000  7150000 22000000       4351724
## 2  Chi tiêu   10050000 10050000  5100000 15000000       2901149
## 3 Tiết kiệm    4525000  4525000  2050000  7000000       1450575

3. PHÂN TÍCH THEO KHU VỰC

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
bang_khu_vuc <- df %>%
  group_by(khu_vuc) %>%
  summarise(
    So_ho = n(),
    Thu_nhap_TB = mean(thu_nhap, na.rm = TRUE),
    Chi_tieu_TB = mean(chi_tieu, na.rm = TRUE),
    Tiet_kiem_TB = mean(tiet_kiem, na.rm = TRUE)
  )
bang_khu_vuc
## # A tibble: 2 × 5
##   khu_vuc   So_ho Thu_nhap_TB Chi_tieu_TB Tiet_kiem_TB
##   <chr>     <int>       <dbl>       <dbl>        <dbl>
## 1 Nong_thon    50    14500000    10000000      4500000
## 2 Thanh_thi    50    14650000    10100000      4550000

4. PHÂN TÍCH THEO HỌC VẤN

bang_hoc_van <- df %>%
  group_by(hoc_van) %>%
  summarise(
    So_ho = n(),
    Thu_nhap_TB = mean(thu_nhap, na.rm = TRUE),
    Chi_tieu_TB = mean(chi_tieu, na.rm = TRUE)
  )
bang_hoc_van
## # A tibble: 3 × 4
##   hoc_van So_ho Thu_nhap_TB Chi_tieu_TB
##   <chr>   <int>       <dbl>       <dbl>
## 1 Dai_hoc    25    14800000    10200000
## 2 THCS       50    14497000     9998000
## 3 THPT       25    14506000    10004000

5. NHẬN XÉT

Dựa trên kết quả phân tích:

6. BIỂU ĐỒ

# Histogram
hist(df$thu_nhap,
     main = "Phân bố thu nhập",
     xlab = "Thu nhập",
     col = "skyblue",
     border = "white")

# Boxplot
boxplot(chi_tieu ~ khu_vuc,
        data = df,
        main = "Chi tiêu theo khu vực",
        xlab = "Khu vực",
        ylab = "Chi tiêu",
        col = c("lightgreen", "orange"))

# Scatter plot
plot(df$thu_nhap, df$chi_tieu,
     main = "Mối quan hệ thu nhập và chi tiêu",
     xlab = "Thu nhập",
     ylab = "Chi tiêu",
     pch = 19,
     col = "blue")

7. MÔ HÌNH HỒI QUY

model <- lm(chi_tieu ~ thu_nhap, data = df)

# Vẽ biểu đồ + đường hồi quy
plot(df$thu_nhap, df$chi_tieu,
     main = "Mối quan hệ thu nhập và chi tiêu",
     xlab = "Thu nhập",
     ylab = "Chi tiêu",
     pch = 19,
     col = "blue")

abline(model, col = "red", lwd = 2)

# Kết quả mô hình
summary(model)
## Warning in summary.lm(model): essentially perfect fit: summary may be
## unreliable
## 
## Call:
## lm(formula = chi_tieu ~ thu_nhap, data = df)
## 
## Residuals:
##              Min               1Q           Median               3Q 
## -0.0000000171476 -0.0000000001249  0.0000000002488  0.0000000004750 
##              Max 
##  0.0000000013082 
## 
## Coefficients:
##                                Estimate                  Std. Error
## (Intercept) 333333.33333332987967878580      0.00000000065499830592
## thu_nhap         0.66666666666666685170      0.00000000000000004308
##                       t value            Pr(>|t|)    
## (Intercept)   508907168642087 <0.0000000000000002 ***
## thu_nhap    15475422681428390 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.000000001865 on 98 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 2.395e+32 on 1 and 98 DF,  p-value: < 0.00000000000000022

8. NHẬN XÉT MÔ HÌNH

→ Kết luận: Thu nhập là biến giải thích tốt cho hành vi chi tiêu của hộ gia đình