Mô hình thống kê là một phương pháp có hệ thống để biểu diễn mối quan hệ giữa một tập hợp các biến số, đồng thời xem xét đến các yếu tố ngẫu nhiên trong dữ liệu. Chúng cho phép người phân tích hiểu được cách các biến liên kết với nhau, dự đoán các giá trị tương lai và đánh giá tính không chắc chắn trong dữ liệu.
“All models are wrong, but some are useful.” – George Box
Câu nói nổi tiếng này nhấn mạnh rằng mô hình chỉ là sự đơn giản hóa thực tế, không hoàn hảo, nhưng có thể rất hữu ích trong việc phân tích dữ liệu.
Một mô hình thống kê mô tả phân phối xác suất của biến phản hồi Y, điều kiện theo các biến giải thích X. Nó bao gồm:
Mô hình được viết tổng quát như:
\[ Y = f(X; \beta) + \varepsilon \]
Trong đó:
- \(Y\): biến phản hồi
- \(X\): biến giải thích
- \(\beta\): vector hệ số chưa
biết
- \(\varepsilon\): sai số ngẫu
nhiên
Hoặc với phân phối xác suất điều kiện:
\[ Y \sim P_{\theta}, \quad \text{trong đó} \quad \theta = h(X; \beta) \]
Mỗi mô hình có thể được xây dựng với các mục tiêu khác nhau, phổ biến nhất là:
Tùy vào mục tiêu, cách xây dựng và đánh giá mô hình sẽ khác nhau.
Các mô hình thống kê có thể chia theo loại biến đầu ra:
Các mô hình tuyến tính tổng quát (GLMs) sẽ được giới thiệu ở các chương sau như một cách thống nhất để xử lý nhiều loại dữ liệu.
Việc lựa chọn mô hình là một sự cân bằng giữa độ chính xác và tính đơn giản:
Phép thử Akaike Information Criterion (AIC) và Bayesian Information Criterion (BIC) sẽ được dùng để đánh giá và lựa chọn mô hình.
Cần phân biệt:
Để rút ra kết luận nguyên nhân – kết quả, cần thiết kế nghiên cứu thực nghiệm.
Trong phân tích thống kê, cần chú ý bối cảnh của dữ liệu để diễn giải kết quả chính xác.
Một mô hình có giá trị khi nó khái quát hóa được từ mẫu ra quần thể.
Dữ liệu cần được đo lường phù hợp (thang đo, đơn vị) và biến đổi đúng cách để đáp ứng các giả định của mô hình (như tuyến tính hoặc chuẩn).
Một số ví dụ biến đổi: log, căn bậc hai, chuẩn hóa…
Hồi quy tuyến tính là công cụ thống kê mô tả và kiểm định mối quan hệ giữa một biến phụ thuộc và một hoặc nhiều biến độc lập. Mục tiêu: ước lượng ảnh hưởng, dự báo giá trị tương lai, kiểm định giả thuyết.
\[ Y = X\beta + \varepsilon \]
Trong đó: - \(Y\): vector \(n \times 1\) của biến phụ thuộc - \(X\): ma trận thiết kế \(n \times (p+1)\) - \(\beta\): vector hệ số \((p+1) \times 1\) - \(\varepsilon \sim N(0, \sigma^2 I)\): vector sai số
\[ Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i \]
Ước lượng OLS:
\[ \hat{\beta}_1 = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sum (X_i - \bar{X})^2}, \quad \hat{\beta}_0 = \bar{Y} - \hat{\beta}_1 \bar{X} \]
Ước lượng phương sai sai số:
\[ \hat{\sigma}^2 = \frac{RSS}{n - 2} \]
\[ Y_i = \beta_0 + \beta_1 X_{i1} + \dots + \beta_p X_{ip} + \varepsilon_i \]
Ước lượng hệ số:
\[ \hat{\beta} = (X^T X)^{-1} X^T Y \]
Phương sai sai số:
\[ \hat{\sigma}^2 = \frac{RSS}{n - p - 1} \]
Hiệp phương sai:
\[ \text{Var}(\hat{\beta}) = \hat{\sigma}^2 (X^T X)^{-1} \]
Giả thiết: \[ H_0: \beta_j = 0 \]
Thống kê t: \[ t = \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \sim t(n - p - 1) \]
Khoảng tin cậy 95%: \[ \hat{\beta}_j \pm t_{0.975, n - p - 1} \cdot SE(\hat{\beta}_j) \]
\[ SST = SSR + SSE \]
Kiểm định F: \[ F = \frac{SSR/p}{SSE/(n - p - 1)} \sim F(p, n - p - 1) \]
\[ \hat{\beta}_j \sim N(\beta_j, \sigma^2 v_j), \quad v_j = [(X^T X)^{-1}]_{jj} \]
Từ đó có thể xây dựng kiểm định và khoảng tin cậy.
Giá trị dự báo tại \(x_0\):
\[ \hat{Y}_0 = x_0^T \hat{\beta} \]
Phương sai của dự báo:
\[ \text{Var}(\hat{Y}_0) = \hat{\sigma}^2 x_0^T (X^T X)^{-1} x_0 \]
Hai mô hình được gọi là lồng nhau nếu mô hình nhỏ hơn là một trường hợp đặc biệt của mô hình lớn hơn (ví dụ: mô hình lớn có thêm biến so với mô hình nhỏ).
Giả sử:
Thống kê kiểm định:
\[ F = \frac{(RSS_0 - RSS_1)/(p - k)}{RSS_1/(n - p - 1)} \sim F(p - k, n - p - 1) \]
Trong đó:
→ Mục đích: kiểm định xem các biến thêm vào trong mô hình lớn có mang lại ý nghĩa thống kê hay không.
Hệ số xác định R-squared đo lường tỷ lệ phương sai của biến phụ thuộc \(Y\) được giải thích bởi mô hình:
\[ R^2 = 1 - \frac{SSE}{SST} \]
Trong đó:
R-squared hiệu chỉnh (Adjusted \(R^2\)) điều chỉnh cho số lượng biến trong mô hình:
\[ \bar{R}^2 = 1 - \left(1 - R^2\right) \cdot \frac{n - 1}{n - p - 1} \]
→ Adjusted \(R^2\) thường được ưu tiên trong hồi quy bội vì giúp tránh đánh giá quá cao mô hình do thêm nhiều biến không cần thiết.
Lựa chọn mô hình có thể được hỗ trợ bằng các hàm trong R như
add1(), drop1() và step(). Những
công cụ này đánh giá ảnh hưởng của việc thêm hoặc bớt biến trong mô hình
theo các tiêu chí như AIC hoặc BIC.
Ba phương pháp tự động phổ biến gồm:
Tuy nhiên, việc lạm dụng các thủ tục tự động này có thể gây ra các vấn đề như:
Do đó, nên kết hợp sử dụng kiến thức chuyên môn và phân tích thủ công bên cạnh các phương pháp tự động để lựa chọn mô hình phù hợp.
Mô hình hồi quy tuyến tính dựa trên một số giả định quan trọng. Việc kiểm tra các giả định này là rất quan trọng để đảm bảo tính hợp lệ của các kết quả thống kê và đưa ra các suy luận chính xác.
Tính tuyến tính: Giả định rằng mối quan hệ giữa biến phản hồi và các biến giải thích có dạng tuyến tính. Điều này có nghĩa là sự thay đổi trung bình của biến phản hồi tỷ lệ thuận với sự thay đổi của các biến giải thích.
Phương sai không đổi (Homoscedasticity): Giả định rằng phương sai của các sai số là không đổi trên tất cả các mức của các biến giải thích. Nói cách khác, mức độ phân tán của dữ liệu xung quanh đường hồi quy là như nhau trên toàn bộ phạm vi của các biến giải thích.
Tính độc lập của các sai số: Giả định rằng các sai số là độc lập với nhau. Điều này có nghĩa là sai số của một quan sát không liên quan đến sai số của bất kỳ quan sát nào khác.
Tính chuẩn của các sai số: Giả định rằng các sai số tuân theo phân phối chuẩn. Giả định này đặc biệt quan trọng để thực hiện các kiểm định giả thuyết và xây dựng khoảng tin cậy.
Thang đo phù hợp: Các biến được đo lường trên các thang đo phù hợp (ví dụ: biến liên tục, biến thứ bậc, biến danh mục). Việc sử dụng các thang đo không phù hợp có thể dẫn đến các kết quả sai lệch.
Phần dư là sự khác biệt giữa các giá trị quan sát và các giá trị dự đoán của biến phản hồi. Chúng là công cụ chính để đánh giá sự phù hợp của mô hình và kiểm tra các giả định.
Phần dư thô: Phần dư thô là sự khác biệt đơn giản giữa giá trị quan sát và giá trị dự đoán:
\(e_i = Y_i - \hat{Y}_i\)
trong đó \(e_i\) là phần dư của quan sát thứ i, \(Y_i\) là giá trị quan sát của biến phản hồi và \(\hat{Y}_i\) là giá trị dự đoán của biến phản hồi.
Phần dư Student hóa: Phần dư Student hóa được tính bằng cách chia phần dư thô cho độ lệch chuẩn ước tính của nó:
\(t_i = \frac{e_i}{s_{(i)} \sqrt{1 - h_{ii}}}\)
trong đó \(s_{(i)}\) là độ lệch chuẩn của sai số được tính mà không có quan sát thứ i và \(h_{ii}\) là giá trị đòn bẩy của quan sát thứ i. Phần dư Student hóa có phân phối t và hữu ích để xác định các giá trị ngoại lệ.
Điểm có đòn bẩy: Điểm có đòn bẩy là một quan sát có giá trị của các biến giải thích khác xa so với giá trị trung bình của chúng. Những điểm này có khả năng ảnh hưởng lớn đến đường hồi quy. Đòn bẩy của một quan sát thứ i được đo bằng giá trị \(h_{ii}\) của phần tử đường chéo của ma trận mũ \(H\):
\(h_{ii} = \mathbf{x}_i^T (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{x}_i\)
trong đó \(\mathbf{x}_i\) là vectơ của các biến giải thích cho quan sát thứ i và \(\mathbf{X}\) là ma trận thiết kế. Các giá trị \(h_{ii}\) nằm trong khoảng từ \(\frac{1}{n}\) đến 1, và các giá trị lớn hơn \(\frac{2(p+1)}{n}\) thường được coi là có đòn bẩy cao, trong đó n là kích thước mẫu và p là số lượng biến giải thích.
Quan sát có ảnh hưởng: Quan sát có ảnh hưởng là một quan sát có ảnh hưởng lớn đến các ước lượng của các hệ số hồi quy. Nói cách khác, nếu chúng ta loại bỏ một quan sát có ảnh hưởng khỏi dữ liệu, đường hồi quy sẽ thay đổi đáng kể. Khoảng cách Cook là một thước đo ảnh hưởng phổ biến, kết hợp cả phần dư và đòn bẩy:
\(D_i = \frac{\sum_{j=1}^{n} (\hat{Y}_j - \hat{Y}_{j(i)})^2}{(p+1)s^2}\)
trong đó \(\hat{Y}_j\) là giá trị dự đoán của quan sát thứ j khi tất cả các quan sát được bao gồm, \(\hat{Y}_{j(i)}\) là giá trị dự đoán của quan sát thứ j khi quan sát thứ i bị loại trừ, p là số lượng biến giải thích và s^2 là phương sai của sai số. Các giá trị \(D_i\) lớn hơn 1 thường được coi là có ảnh hưởng lớn.
Nếu các giả định của mô hình hồi quy tuyến tính bị vi phạm, có thể áp dụng các biện pháp khắc phục để cải thiện sự phù hợp của mô hình và tính hợp lệ của các kết quả thống kê.
Biến đổi logarit: \(Y' = \log(Y)\) (thường được sử dụng khi Y có phân phối lệch phải)
Biến đổi căn bậc hai: \(Y' = \sqrt{Y}\) (thường được sử dụng khi Y là biến đếm)
Biến đổi nghịch đảo: \(Y' = \frac{1}{Y}\) (thường được sử dụng khi Y có quan hệ hyperbol với các biến giải thích)
Biến đổi Box-Cox: Một họ các biến đổi bao gồm các biến đổi logarit và lũy thừa:
\(Y^{(\lambda)} = \begin{cases} \frac{Y^\lambda - 1}{\lambda}, & \text{if } \lambda \neq 0 \\ \log(Y), & \text{if } \lambda = 0 \end{cases}\)
Tham số \(\lambda\) được chọn để tối đa hóa hàm правдоподобие của dữ liệu đã được biến đổi.
Đa cộng tuyến xảy ra khi có mối tương quan cao giữa hai hoặc nhiều biến giải thích trong mô hình hồi quy. Đa cộng tuyến không làm sai lệch các ước lượng của các hệ số hồi quy, nhưng nó làm tăng phương sai của chúng, điều này có thể dẫn đến:
Ma trận tương quan: Kiểm tra ma trận tương quan của các biến giải thích. Các hệ số tương quan lớn (ví dụ: > 0,8) cho thấy có thể có đa cộng tuyến.
Hệ số phóng đại phương sai (VIF): VIF đo mức độ mà phương sai của một hệ số hồi quy bị tăng lên do đa cộng tuyến. VIF của biến giải thích thứ j được tính như sau:
\(VIF_j = \frac{1}{1 - R_j^2}\)
trong đó \(R_j^2\) là hệ số xác định của mô hình hồi quy của biến giải thích \(X_j\) trên các biến giải thích còn lại. VIF lớn (ví dụ: > 10) cho thấy có thể có đa cộng tuyến.
Chương này cũng bao gồm các ca nghiên cứu minh họa việc áp dụng các kỹ thuật chẩn đoán và xây dựng mô hình hồi quy tuyến tính trong thực tế. Các ca nghiên cứu này cung cấp các ví dụ thực tế về cách xác định và giải quyết các vấn đề có thể phát sinh khi xây dựng mô hình hồi quy.
Chương 4 cung cấp một tổng quan toàn diện về Mô hình Tuyến tính Tổng quát (GLM), một khuôn khổ thống kê linh hoạt mở rộng mô hình hồi quy tuyến tính để xử lý các loại dữ liệu khác nhau và các mối quan hệ phi tuyến tính giữa các biến.
Mở rộng của mô hình tuyến tính: GLM mở rộng mô hình tuyến tính bằng cách cho phép các phân phối khác với phân phối chuẩn cho biến phản hồi và mô hình hóa mối quan hệ giữa biến phản hồi và các biến giải thích thông qua một hàm liên kết.
Ba thành phần chính của GLM:
Thành phần ngẫu nhiên:
Xác định phân phối xác suất của biến phản hồi \(Y\).
Các phân phối phổ biến bao gồm:
Thành phần hệ thống (Hàm tuyến tính):
Tổ hợp tuyến tính của các biến giải thích:
\[
\eta_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_p
x_{ip}
\] Trong đó \(\eta_i\) là thành
phần hệ thống cho quan sát thứ \(i\),
\(x_{ij}\) là giá trị biến giải thích
thứ \(j\) cho quan sát thứ \(i\), và \(\beta_j\) là các hệ số hồi quy.
Hàm liên kết:
Mô hình hóa mối quan hệ giữa giá trị trung bình của biến phản hồi, \(\mu_i = E(Y_i)\), và thành phần hệ thống
\(\eta_i\).
Hàm liên kết \(g\) là một hàm đơn điệu
sao cho:
\[
g(\mu_i) = \eta_i
\] Hàm liên kết nghịch đảo:
\[
\mu_i = g^{-1}(\eta_i)
\]
Các hàm liên kết phổ biến:
Ước tính Maximum Likelihood Estimation
(MLE):
Các tham số của GLM (\(\beta_j\))
thường được ước tính bằng phương pháp MLE, tìm giá trị tham số tối đa
hóa hàm khả năng (likelihood), đo mức độ phù hợp của mô hình với dữ
liệu.
Hàm likelihood:
Phụ thuộc vào phân phối của biến phản hồi và hàm liên kết được sử
dụng.
Kiểm định giả thuyết: Kiểm định về các hệ số \(\beta_j\) để xác định ảnh hưởng đáng kể của biến giải thích với biến phản hồi.
Khoảng tin cậy: Khoảng các giá trị hợp lý cho các tham số chưa biết \(\beta_j\).
Kiểm định tỷ số likelihood (LRT): So sánh sự phù hợp của hai mô hình lồng nhau dựa trên giá trị likelihood.
Tiêu chí thông tin Akaike (AIC):
\[
AIC = -2 \log(L) + 2p
\] Trong đó \(L\) là likelihood
cực đại của mô hình, \(p\) là số tham
số.
Tiêu chí thông tin Bayesian (BIC):
\[
BIC = -2 \log(L) + p \log(n)
\] Trong đó \(n\) là kích thước
mẫu.
Các mô hình có AIC hoặc BIC thấp hơn được ưu tiên hơn.
Định nghĩa:
Nhiều phân phối xác suất phổ biến thuộc họ phân phối mũ, có dạng:
\[
f(y; \theta, \phi) = \exp\left(\frac{y \theta - b(\theta)}{a(\phi)} +
c(y, \phi)\right)
\] Trong đó \(\theta\) là tham
số vị trí, \(\phi\) tham số tỷ lệ, và
\(a(), b(), c()\) là các hàm đã
biết.
Các phân phối thuộc họ mũ:
Định nghĩa:
Với mỗi phân phối trong họ mũ, có một hàm liên kết chính tắc làm cho
thành phần hệ thống liên quan trực tiếp đến tham số của phân
phối.
Ví dụ:
Quá độ phân tán:
Khi phương sai dữ liệu lớn hơn dự kiến của mô hình, gọi là quá độ phân
tán.
Ước tính:
Dùng thống kê Pearson chi-bình phương:
\[
\hat{\phi} = \frac{X^2}{n - p}
\] Trong đó \(X^2\) là thống kê
Pearson chi-bình phương, \(n\) kích
thước mẫu, \(p\) số tham số.
Trong bối cảnh ước lượng cực đại hợp lý (Maximum Likelihood Estimation – MLE), hàm likelihood đo lường xác suất để dữ liệu quan sát được xảy ra dưới một giá trị cụ thể của tham số. Trong thực hành, ta thường sử dụng log-likelihood – logarit tự nhiên của hàm likelihood – vì các lý do tính toán:
Biến tích thành tổng: Hàm likelihood thường là tích của nhiều xác suất, nên log-likelihood biến tích thành tổng, giúp đơn giản hóa đạo hàm và tối ưu hóa.
Ổn định số học: Logarit giảm thiểu các vấn đề về làm tròn số và tràn số trong tính toán với mẫu lớn.
Giả sử có dữ liệu quan sát \(y_1, y_2, ..., y_n\), và phân phối xác suất có hàm mật độ (hoặc xác suất) \(f(y_i; \theta)\), khi đó:
\[ L(\theta) = \prod_{i=1}^{n} f(y_i; \theta) \]
\[ \ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} \log f(y_i; \theta) \]
Trong GLM, log-likelihood là nền tảng để xây dựng các phương trình điểm (score equations), các kiểm định thống kê như Wald, Score, Likelihood Ratio, và để tính các sai số chuẩn của ước lượng tham số.
Sai số chuẩn phản ánh độ không chắc chắn (biến thiên) của ước lượng tham số \(\hat{\theta}\) nếu phép lấy mẫu được lặp lại nhiều lần. Nó đóng vai trò then chốt trong việc:
Trong bối cảnh MLE, sai số chuẩn của một ước lượng \(\hat{\theta}\) được xác định từ ma trận thông tin Fisher – là ma trận của kỳ vọng âm đạo hàm bậc hai của log-likelihood:
\[ \text{Var}(\hat{\theta}) \approx [I(\theta)]^{-1} \]
Do đó, sai số chuẩn là:
\[ \text{se}(\hat{\theta}) = \sqrt{\text{Var}(\hat{\theta})} = \frac{1}{\sqrt{I(\hat{\theta})}} \]
Trong đó \(I(\theta)\) là Fisher information – thước đo độ sắc nét của log-likelihood quanh giá trị tối đa (MLE). Thông tin càng lớn thì sai số chuẩn càng nhỏ, nghĩa là ta ước lượng càng chính xác.
Trong thực hành, ma trận Hessian (ma trận đạo hàm bậc hai quan sát được của log-likelihood) thường được dùng để tính sai số chuẩn, vì nó dễ tiếp cận hơn so với kỳ vọng lý thuyết của Fisher information.
Ví dụ trong sách, khi sử dụng phân phối nhị thức hoặc Poisson, sai số chuẩn có thể được tính tường minh theo hàm của tham số và kích thước mẫu \(n\), ví dụ:
\[ \text{se}(\hat{\mu}) = \frac{\hat{\mu}}{\sqrt{n}} \quad \text{(đối với phân phối Poisson hoặc exponential)} \]
\[ logit(p) = \log\left(\frac{p}{1 - p}\right) \]
trong đó \(p\) là xác suất của kết quả quan tâm. Hàm logit biến đổi xác suất \(p\) nằm trong khoảng \([0, 1]\) thành một giá trị nằm trong khoảng \((-\infty, \infty)\), phù hợp với phạm vi của tổ hợp tuyến tính của các biến giải thích.
\[ p = \frac{1}{1 + e^{-logit(p)}} = \frac{e^{logit(p)}}{1 + e^{logit(p)}} \]
Hàm logistic biến đổi một giá trị bất kỳ từ \((-\infty, \infty)\) thành một xác suất nằm trong khoảng \([0, 1]\).
Mô hình hồi quy logistic nhị phân được biểu diễn như sau:
\[ \log\left(\frac{p_i}{1 - p_i}\right) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_p x_{ip} \]
trong đó \(p_i\) là xác suất của kết quả quan tâm cho quan sát thứ \(i\), \(x_{ij}\) là giá trị của biến giải thích thứ \(j\) cho quan sát thứ \(i\) và \(\beta_j\) là các hệ số hồi quy.
\[ L(\beta) = \prod_{i=1}^{n} p_i^{y_i} (1 - p_i)^{1 - y_i} \]
trong đó \(y_i\) là giá trị biến phản hồi cho quan sát thứ \(i\) (0 hoặc 1).
Chương 6 tập trung vào mô hình hồi quy Poisson, một loại mô hình tuyến tính tổng quát (GLM) được sử dụng để mô hình hóa các biến phản hồi đếm (biến có giá trị là số nguyên không âm, ví dụ: số lượng sự kiện xảy ra trong một khoảng thời gian nhất định).
\[ P(Y = y) = \frac{e^{-\mu} \mu^y}{y!} \]
trong đó \(y\) là số lượng sự kiện xảy ra, \(\mu\) là giá trị trung bình của phân phối và \(y!\) là giai thừa của \(y\).
\[ E(Y) = Var(Y) = \mu \]
Mô hình hồi quy Poisson được biểu diễn như sau:
\[ \log(\mu_i) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_p x_{ip} \]
trong đó \(\mu_i\) là giá trị trung bình của biến phản hồi cho quan sát thứ \(i\), \(x_{ij}\) là giá trị của biến giải thích thứ \(j\) cho quan sát thứ \(i\), và \(\beta_j\) là các hệ số hồi quy.
Hàm liên kết log đảm bảo rằng giá trị trung bình dự đoán \(\mu_i\) luôn dương.
\[ L(\beta) = \prod_{i=1}^n \frac{e^{-\mu_i} \mu_i^{y_i}}{y_i!} \]
trong đó \(y_i\) là giá trị biến phản hồi cho quan sát thứ \(i\).
Chương 7 mở rộng các khái niệm hồi quy tuyến tính để mô hình hóa các mối quan hệ phi tuyến tính bằng cách sử dụng hồi quy đa thức. Chương này thảo luận về cách xây dựng, ước tính và diễn giải các mô hình hồi quy đa thức.
Định nghĩa: Một đa thức là một hàm có dạng:
\[ f(x) = \beta_0 + \beta_1 x + \beta_2 x^2 + \ldots + \beta_p x^p \]
Trong đó \(x\) là biến độc lập, \(\beta_i\) là các hệ số và \(p\) là bậc của đa thức. Bậc của đa thức là số mũ cao nhất của biến \(x\).
Ví dụ:
Mô hình: Mô hình hồi quy đa thức có dạng:
\[ Y_i = \beta_0 + \beta_1 x_i + \beta_2 x_i^2 + \ldots + \beta_p x_i^p + \varepsilon_i \]
Trong đó:
Mô hình này vẫn là một mô hình tuyến tính theo các hệ số \(\beta_j\), mặc dù nó mô tả một mối quan hệ phi tuyến giữa \(Y\) và \(x\).
Bình phương tối thiểu (OLS): Các hệ số \(\beta_j\) thường được ước tính bằng phương pháp bình phương tối thiểu (OLS). OLS tìm các giá trị của \(\beta_j\) sao cho tổng bình phương của các sai số \(\varepsilon_i\) là nhỏ nhất:
\[ \sum_{i=1}^{n} \varepsilon_i^2 = \sum_{i=1}^{n} (Y_i - \beta_0 - \beta_1 x_i - \beta_2 x_i^2 - \ldots - \beta_p x_i^p)^2 \]
Trong đó \(n\) là số lượng quan sát.
Kiểm định giả thuyết: Kiểm định giả thuyết về các hệ số \(\beta_j\) được thực hiện để xác định xem các số hạng đa thức có đóng góp đáng kể vào mô hình hay không.
Ta có thể sử dụng thống kê t hoặc F để kiểm định các giả thuyết này.
Khoảng tin cậy: Khoảng tin cậy cho các hệ số \(\beta_j\) cung cấp một khoảng các giá trị hợp lý cho các tham số chưa biết. Ví dụ, khoảng tin cậy 95% cho \(\beta_1\) cho biết rằng ta tin rằng có 95% khả năng giá trị thực của \(\beta_1\) nằm trong khoảng đó.
Độ phù hợp và độ phức tạp: Việc lựa chọn bậc của đa thức liên quan đến việc cân bằng giữa độ phù hợp của mô hình với dữ liệu và độ phức tạp của mô hình.
Các phương pháp lựa chọn bậc:
Kiểm định F: So sánh các mô hình lồng nhau, ví dụ: mô hình bậc 2 vs. bậc 3.
AIC (Akaike Information Criterion):
\[ AIC = -2 \log(L) + 2k \]
Trong đó \(L\) là giá trị cực đại của hàm hợp lý (likelihood), \(k\) là số lượng tham số.
BIC (Bayesian Information Criterion):
\[ BIC = -2 \log(L) + k \log(n) \]
Trong đó \(n\) là số lượng quan sát.
Kiểm tra độ phù hợp: Đánh giá mô hình dựa trên phần dư và các giả định thống kê.
Khó khăn: Việc diễn giải các hệ số trong mô hình hồi quy đa thức có thể khó khăn, đặc biệt với bậc cao hơn.
Ảnh hưởng của \(x\): Các hệ số không biểu thị ảnh hưởng riêng lẻ của \(x\) lên \(Y\), mà biểu thị ảnh hưởng của các số hạng đa thức của \(x\).
Ví dụ, trong mô hình:
\[ Y = \beta_0 + \beta_1 x + \beta_2 x^2 \]
Hồi quy Gamma là một loại mô hình tuyến tính tổng quát (GLM) được sử dụng để mô hình hóa biến phản hồi liên tục dương có phân phối lệch phải.
\[ f(y; \alpha, \beta) = \frac{1}{\Gamma(\alpha) \beta^\alpha} y^{\alpha - 1} e^{-y/\beta} \]
Trong đó:
\(y > 0\)
\(\alpha > 0\): tham số hình dạng (shape)
\(\beta > 0\): tham số tỷ lệ (scale)
\(\Gamma(\alpha)\): hàm gamma
Kỳ vọng và phương sai:
\[ E(Y) = \alpha \beta \\ Var(Y) = \alpha \beta^2 \]
\[ g(\mu_i) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_p x_{ip} \]
Trong đó:
\(\mu_i = E(Y_i)\): kỳ vọng của biến phản hồi
\(x_{ij}\): giá trị của biến giải thích thứ \(j\)
\(\beta_j\): hệ số hồi quy
\(g(\cdot)\): hàm liên kết
Hàm liên kết phổ biến:
Phương pháp: Ước lượng pravdopodobie cực đại (MLE)
Hàm pravdopodobie:
\[ L(\beta, \alpha) = \prod_{i=1}^{n} \frac{1}{\Gamma(\alpha) \beta^\alpha} y_i^{\alpha - 1} e^{-y_i/\beta} \]
Trong đó:
Kiểm định giả thuyết:
Khoảng tin cậy: Cung cấp khoảng giá trị hợp lý cho \(\beta_j\)
Thống kê:
Độ lệch (Deviance): Đo độ phù hợp giữa mô hình hiện tại và mô hình bão hòa.
Phần dư Pearson:
\[ r_i = \frac{y_i - \hat{\mu}_i}{\sqrt{\hat{\mu}_i}} \]
Tùy thuộc vào hàm liên kết:
Hàm log: \(\beta_j\) biểu thị sự thay đổi tỷ lệ của \(\mu\) khi \(x_j\) tăng một đơn vị.
Hàm nghịch đảo: \(\beta_j\) biểu thị sự thay đổi trong nghịch đảo của \(\mu\) khi \(x_j\) tăng một đơn vị.
Mô hình hồi quy Gamma được áp dụng trong nhiều lĩnh vực:
Mô hình tuyến tính tổng quát (GLM) mở rộng mô hình hồi quy tuyến tính cổ điển bằng cách cho phép:
GLM bao gồm nhiều mô hình quen thuộc như hồi quy logistic, hồi quy Poisson, và nhiều mô hình phi tuyến khác.
Nguyên tắc
Ước tính правдоподобие cực đại (MLE) là phương pháp ước lượng các tham số bằng cách tìm giá trị làm cực đại hàm правдоподобие. Hàm này đo lường mức độ phù hợp của mô hình với dữ liệu.
Hàm правдоподобие
\[ L(\beta) = \prod_{i=1}^{n} f(y_i; \mu_i, \phi) \]
Hàm log-правдоподобие
\[ \log L(\beta) = \sum_{i=1}^{n} \log(f(y_i; \mu_i, \phi)) \]
Phương trình правдоподобие
\[ \frac{\partial \log L(\beta)}{\partial \beta_j} = 0, \quad j = 0, 1, ..., p \]
Phương pháp lặp
Các phương trình правдоподобие thường không có nghiệm giải tích và được giải bằng các phương pháp численное lặp đi lặp lại.
Thuật toán IRLS
Là phương pháp hiệu quả để tìm ước lượng MLE trong GLM bằng cách lặp giải các bài toán bình phương tối thiểu có trọng số.
Các bước:
Ma trận Hessian
Là ma trận các đạo hàm riêng bậc hai của hàm log-правдоподобие đối với \(\beta\).
Ma trận thông tin Fisher
Là kỳ vọng của Hessian, thường dùng thay thế trong tính toán sai số chuẩn.
Công thức:
\[ SE(\hat{\beta}_j) = \sqrt{[-\mathbf{H}^{-1}]_{jj}} \]
Phương pháp Bayes
Dựa trên phân phối hậu nghiệm, kết hợp phân phối tiên nghiệm và dữ liệu quan sát.
Định lý Bayes
\[ p(\beta | y) = \frac{L(y | \beta) p(\beta)}{p(y)} \]
Giải thích:
Ước lượng:
Ước tính Bayes thường lấy trung bình hoặc trung vị của phân phối hậu nghiệm.
| Tiêu chí | MLE | Bayes |
|---|---|---|
| Ước tính điểm | Duy nhất | Phân phối hậu nghiệm |
| Khoảng tin cậy | Dựa vào phân phối lấy mẫu | Khoảng tin cậy Bayes hậu nghiệm |
| Thông tin tiên nghiệm | Không dùng | Có thể kết hợp thông tin tiên nghiệm |
Chương 10 giới thiệu khái niệm về mô hình hồi quy phân cấp, một loại mô hình thống kê cho phép các hệ số hồi quy thay đổi theo các nhóm hoặc cấp độ khác nhau trong dữ liệu. Mô hình phân cấp cung cấp một khuôn khổ linh hoạt để phân tích dữ liệu có cấu trúc nhóm hoặc dữ liệu đa cấp.
Mô hình phân cấp có thể được áp dụng trong nhiều trường hợp thực tế
như:
- Kết quả học tập của học sinh, nhóm theo lớp học và trường học.
- Dữ liệu thử nghiệm lâm sàng, nhóm theo bệnh viện và bác sĩ.
- Dữ liệu tăng trưởng cây trồng, nhóm theo cây và các phép đo lặp
lại.
Cấp độ 1 (Trong nhóm): \[ Y_{ij} = \beta_{0j} + \beta_{1j} X_{ij} + \varepsilon_{ij} \]
Cấp độ 2 (Giữa các nhóm): \[ \beta_{0j} = \gamma_{00} + \gamma_{01} W_j + \mu_{0j} \] \[ \beta_{1j} = \gamma_{10} + \gamma_{11} W_j + \mu_{1j} \]
Chương 11 trình bày các khái niệm và phương pháp của phân tích phương sai (ANOVA), một kỹ thuật thống kê được sử dụng để so sánh các giá trị trung bình của một biến phản hồi trên các nhóm khác nhau. ANOVA có thể được coi là một trường hợp đặc biệt của mô hình tuyến tính tổng quát (GLM).
Mục tiêu:
Mục tiêu của ANOVA là so sánh các giá trị trung bình của một biến phản
hồi định lượng trên hai hoặc nhiều nhóm được xác định bởi một hoặc nhiều
biến định tính (yếu tố).
Giả định:
ANOVA dựa trên các giả định sau:
- Các quan sát là độc lập với nhau.
- Biến phản hồi có phân phối chuẩn trong mỗi nhóm.
- Phương sai của biến phản hồi là bằng nhau trên tất cả các nhóm (tính
đồng nhất của phương sai).
Thiết kế:
ANOVA một yếu tố được sử dụng để so sánh các giá trị trung bình của một
biến phản hồi trên các nhóm được xác định bởi một yếu tố duy nhất.
Mô hình:
Mô hình ANOVA một yếu tố có thể được biểu diễn như sau:
\[ Y_{ij} = \mu + \alpha_j + \varepsilon_{ij}
\]
trong đó
- \(Y_{ij}\) là giá trị của biến phản
hồi cho quan sát thứ \(i\) trong nhóm
\(j\),
- \(\mu\) là giá trị trung bình tổng
thể,
- \(\alpha_j\) là hiệu ứng của nhóm
\(j\),
- \(\varepsilon_{ij}\) là sai số ngẫu
nhiên.
Giả thuyết:
Các giả thuyết được kiểm định trong ANOVA một yếu tố là:
- \(H_0: \mu_1 = \mu_2 = \dots =
\mu_J\) (các giá trị trung bình của tất cả các nhóm là bằng
nhau)
- \(H_a\): Không phải tất cả \(\mu_j\) là bằng nhau (ít nhất một giá trị
trung bình của nhóm khác với những giá trị còn lại)
Bảng ANOVA:
Kết quả của phân tích ANOVA thường được trình bày trong một bảng ANOVA,
bao gồm các nguồn biến động (giữa các nhóm và trong các nhóm), các bậc
tự do, tổng bình phương, trung bình bình phương và thống kê F.
Thống kê F:
Thống kê F được tính bằng tỷ số giữa trung bình bình phương giữa các
nhóm và trung bình bình phương trong các nhóm. Một giá trị F lớn cho
thấy rằng có sự khác biệt đáng kể giữa các giá trị trung bình của
nhóm.
\[ F = \frac{MS_{giữa}}{MS_{trong}}
\]
Giá trị p:
Giá trị p là xác suất thu được một thống kê F lớn như vậy (hoặc lớn hơn)
nếu giả thuyết null là đúng. Một giá trị p nhỏ (thường nhỏ hơn 0,05) cho
thấy rằng có bằng chứng mạnh mẽ để bác bỏ giả thuyết null và kết luận
rằng có sự khác biệt đáng kể giữa các giá trị trung bình của nhóm.
Thiết kế:
ANOVA hai yếu tố được sử dụng để so sánh các giá trị trung bình của một
biến phản hồi trên các nhóm được xác định bởi hai yếu tố.
Mô hình:
Mô hình ANOVA hai yếu tố có thể bao gồm các hiệu ứng chính cho từng yếu
tố và hiệu ứng tương tác giữa hai yếu tố.
\[ Y_{ijk} = \mu + \alpha_j + \beta_k +
(\alpha\beta)_{jk} + \varepsilon_{ijk} \]
trong đó
- \(Y_{ijk}\) là giá trị của biến phản
hồi cho quan sát thứ \(i\) trong nhóm
\(j\) của yếu tố A và nhóm \(k\) của yếu tố B,
- \(\mu\) là giá trị trung bình tổng
thể,
- \(\alpha_j\) là hiệu ứng của nhóm
\(j\) của yếu tố A,
- \(\beta_k\) là hiệu ứng của nhóm
\(k\) của yếu tố B,
- \((\alpha\beta)_{jk}\) là hiệu ứng
tương tác giữa nhóm \(j\) của yếu tố A
và nhóm \(k\) của yếu tố B,
- \(\varepsilon_{ijk}\) là sai số ngẫu
nhiên.
Giả thuyết:
ANOVA hai yếu tố kiểm định các giả thuyết về các hiệu ứng chính của từng
yếu tố và hiệu ứng tương tác giữa chúng.
Hiệu ứng tương tác:
Hiệu ứng tương tác xảy ra khi ảnh hưởng của một yếu tố lên biến phản hồi
khác nhau tùy thuộc vào mức độ của yếu tố kia.
Thiết kế:
ANOVA có thể được mở rộng để bao gồm nhiều hơn hai yếu tố.
Mô hình:
Mô hình ANOVA nhiều yếu tố có thể bao gồm các hiệu ứng chính cho từng
yếu tố và các hiệu ứng tương tác giữa các yếu tố.
Phức tạp:
Khi số lượng yếu tố tăng lên, mô hình trở nên phức tạp hơn và việc diễn
giải các kết quả trở nên khó khăn hơn.
Vấn đề so sánh bội:
Khi thực hiện nhiều so sánh giữa các giá trị trung bình của nhóm, có sự
gia tăng nguy cơ mắc lỗi Loại I (bác bỏ giả thuyết null khi nó
đúng).
Các phương pháp điều chỉnh:
Các phương pháp so sánh hậu nghiệm điều chỉnh các giá trị p để kiểm soát
tỷ lệ lỗi Loại I tổng thể.
Các phương pháp phổ biến:
Các phương pháp so sánh hậu nghiệm phổ biến bao gồm:
- Bonferroni: Điều chỉnh giá trị p bằng cách nhân nó với số lượng so
sánh.
- Tukey: So sánh tất cả các cặp giá trị trung bình có thể và kiểm soát
tỷ lệ lỗi toàn gia đình.
- Scheffé: Thực hiện tất cả các so sánh có thể giữa các tổ hợp tuyến
tính của các giá trị trung bình của nhóm.
Chương 12 mở rộng các khái niệm về mô hình tuyến tính tổng quát (GLM) để bao gồm các mô hình đa biến, trong đó có nhiều biến phản hồi. Chương này thảo luận về các phương pháp mô hình hóa và phân tích dữ liệu với nhiều biến phản hồi.
Mô hình tổng quát:
\[ \begin{aligned} g_1(E(Y_1)) &= \eta_1 = X_1 \beta_1 \\ g_2(E(Y_2)) &= \eta_2 = X_2 \beta_2 \\ &\vdots \\ g_m(E(Y_m)) &= \eta_m = X_m \beta_m \end{aligned} \]
Các hàm liên kết phổ biến bao gồm hàm identity (cho phân phối chuẩn), hàm logit (cho phân phối Bernoulli) và hàm log (cho phân phối Poisson). Ma trận thiết kế có thể khác nhau đối với mỗi biến phản hồi, cho phép các biến giải thích khác nhau ảnh hưởng đến các biến phản hồi khác nhau.
Cấu trúc hiệp phương sai
GLM đa biến cũng bao gồm một cấu trúc hiệp phương sai mô tả mối quan hệ giữa các biến phản hồi. Cấu trúc hiệp phương sai chỉ định phương sai của mỗi biến phản hồi và hiệp phương sai giữa các cặp biến phản hồi.
Ví dụ: Nếu có hai biến phản hồi, \(Y_1\) và \(Y_2\), cấu trúc hiệp phương sai có thể được biểu diễn bằng ma trận sau:
\[ \Sigma = \begin{bmatrix} Var(Y_1) & Cov(Y_1, Y_2) \\ Cov(Y_2, Y_1) & Var(Y_2) \end{bmatrix} \]
trong đó \(Var(Y_i)\) là phương sai của \(Y_i\) và \(Cov(Y_i, Y_j)\) là hiệp phương sai giữa \(Y_i\) và \(Y_j\).
Ước tính cực đại (MLE)
Các tham số trong GLM đa biến thường được ước tính bằng phương pháp ước tính cực đại. MLE tìm các giá trị của các tham số (tức là các hệ số \(\beta_i\) và các tham số trong cấu trúc hiệp phương sai) tối đa hóa hàm cực đại.
Hàm cực đại
Hàm cực đại được xây dựng dựa trên phân phối của các biến phản hồi và cấu trúc hiệp phương sai. Đối với GLM đa biến, hàm cực đại phức tạp hơn so với GLM đơn biến do có nhiều biến phản hồi và mối quan hệ giữa chúng.
Kiểm định giả thuyết
Kiểm định giả thuyết trong GLM đa biến phức tạp hơn so với GLM đơn biến do có nhiều biến phản hồi. Các giả thuyết có thể được kiểm định bao gồm:
Các phương pháp kiểm định
So sánh mô hình
Các tiêu chí như AIC và BIC có thể được sử dụng để so sánh các GLM đa biến khác nhau. Các tiêu chí này cân bằng giữa sự phù hợp của mô hình và độ phức tạp của mô hình.
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
library(tibble)
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
library(ggplot2)
library(forcats)
## Warning: package 'forcats' was built under R version 4.3.3
Tệp Supermarket Transactions được lưu dưới định dạng csv. Đọc bộ dữ liệu này vào phần mềm R
Sau khi đọc, bộ dữ liệu được gán vào biến data để dễ dàng thao tác.
data <- read.csv("~/THAYTUONG/Supermarket Transactions.csv", header = T )
Bộ dữ liệu Supermarket Transactions bao gồm 14,059 giao dịch mua hàng được thực hiện tại một chuỗi siêu thị. Mỗi dòng dữ liệu tương ứng với một giao dịch và chứa đầy đủ thông tin về khách hàng (mã định danh, giới tính, tình trạng hôn nhân, thu nhập, số con, tình trạng sở hữu nhà), vị trí địa lý (thành phố, bang, quốc gia), cũng như thông tin sản phẩm (danh mục sản phẩm, số lượng bán, doanh thu).
Bộ dữ liệu này là nguồn thông tin giá trị phục vụ nhiều mục đích phân tích khác nhau như:
Phân tích hành vi tiêu dùng của khách hàng theo nhân khẩu học;
Phân khúc thị trường dựa trên thu nhập, vị trí địa lý hoặc sở thích sản phẩm;
Đánh giá hiệu quả kinh doanh theo từng nhóm sản phẩm hoặc từng khu vực;
Hỗ trợ xây dựng các mô hình dự báo nhu cầu, quản lý hàng tồn kho hoặc tối ưu hóa chiến lược tiếp thị.
Bộ dữ liệu bao gồm các biến sau:
names(data)
## [1] "X" "PurchaseDate" "CustomerID"
## [4] "Gender" "MaritalStatus" "Homeowner"
## [7] "Children" "AnnualIncome" "City"
## [10] "StateorProvince" "Country" "ProductFamily"
## [13] "ProductDepartment" "ProductCategory" "UnitsSold"
## [16] "Revenue"
# Tạo bảng mô tả các biến và dịch thuật
variable_desc <- tibble::tibble(
Biến = c(
"X", "PurchaseDate", "CustomerID", "Gender", "MaritalStatus", "Homeowner",
"Children", "AnnualIncome", "City", "StateorProvince", "Country",
"ProductFamily", "ProductDepartment", "ProductCategory", "UnitsSold", "Revenue"
),
Dịch_thuật = c(
"Số thứ tự dòng", "Ngày mua hàng", "Mã khách hàng", "Giới tính", "Tình trạng hôn nhân", "Sở hữu nhà",
"Số con", "Thu nhập hàng năm", "Thành phố", "Bang/Tỉnh", "Quốc gia",
"Nhóm sản phẩm", "Bộ phận sản phẩm", "Loại sản phẩm", "Số lượng bán", "Doanh thu"
)
)
kable(variable_desc, caption = "Tên biến, Dịch thuật")
| Biến | Dịch_thuật |
|---|---|
| X | Số thứ tự dòng |
| PurchaseDate | Ngày mua hàng |
| CustomerID | Mã khách hàng |
| Gender | Giới tính |
| MaritalStatus | Tình trạng hôn nhân |
| Homeowner | Sở hữu nhà |
| Children | Số con |
| AnnualIncome | Thu nhập hàng năm |
| City | Thành phố |
| StateorProvince | Bang/Tỉnh |
| Country | Quốc gia |
| ProductFamily | Nhóm sản phẩm |
| ProductDepartment | Bộ phận sản phẩm |
| ProductCategory | Loại sản phẩm |
| UnitsSold | Số lượng bán |
| Revenue | Doanh thu |
Cấu trúc tổng quát của dữ liệu
str(data)
## 'data.frame': 14059 obs. of 16 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ PurchaseDate : chr "2007-12-18" "2007-12-20" "2007-12-21" "2007-12-21" ...
## $ CustomerID : int 7223 7841 8374 9619 1900 6696 9673 354 1293 7938 ...
## $ Gender : chr "F" "M" "F" "M" ...
## $ MaritalStatus : chr "S" "M" "M" "M" ...
## $ Homeowner : chr "Y" "Y" "N" "Y" ...
## $ Children : int 2 5 2 3 3 3 2 2 3 1 ...
## $ AnnualIncome : chr "$30K - $50K" "$70K - $90K" "$50K - $70K" "$30K - $50K" ...
## $ City : chr "Los Angeles" "Los Angeles" "Bremerton" "Portland" ...
## $ StateorProvince : chr "CA" "CA" "WA" "OR" ...
## $ Country : chr "USA" "USA" "USA" "USA" ...
## $ ProductFamily : chr "Food" "Food" "Food" "Food" ...
## $ ProductDepartment: chr "Snack Foods" "Produce" "Snack Foods" "Snacks" ...
## $ ProductCategory : chr "Snack Foods" "Vegetables" "Snack Foods" "Candy" ...
## $ UnitsSold : int 5 5 3 4 4 3 4 6 1 2 ...
## $ Revenue : num 27.38 14.9 5.52 4.44 14 ...
Bộ dữ liệu bao gồm 14.059 dòng dữ liệu, tương ứng với 14.059 giao dịch mua hàng riêng biệt được thực hiện tại hệ thống siêu thị trong một khoảng thời gian nhất định.
Tập dữ liệu này được cấu trúc với 16 biến (cột thông tin), đóng vai trò là các đặc trưng mô tả chi tiết từng khía cạnh của giao dịch như mã khách hàng, giới tính, tình trạng hôn nhân, mức thu nhập ước lượng, thành phố, quốc gia, loại sản phẩm, và các chỉ số định lượng như số lượng sản phẩm bán ra và tổng doanh thu từ giao dịch đó.
Bộ dữ liệu bao gồm nhiều biến khác nhau, được chia thành các nhóm chính như sau:
🔹 Thời gian giao dịch:
PurchaseDate: Biến này ghi lại ngày diễn ra mỗi giao dịch mua hàng, với định dạng ngày-tháng-năm, cho phép theo dõi hoạt động bán hàng theo thời gian.
🔹 Thông tin khách hàng:
CustomerID: Mã định danh duy nhất của từng khách hàng trong cơ sở dữ liệu.
Gender: Giới tính của khách hàng, với hai giá trị là F (Nữ) và M (Nam).
MaritalStatus: Tình trạng hôn nhân, bao gồm S (Độc thân) và M (Đã kết hôn).
Homeowner: Thể hiện tình trạng sở hữu nhà ở của khách hàng, với Y (Có nhà) và N (Không có nhà).
Children: Số lượng con cái mà khách hàng có.
AnnualIncome: Thu nhập hàng năm của khách hàng, được phân loại theo các khoảng thu nhập như “$30K - $50K”, “$70K - $90K”, v.v.
City, StateorProvince, Country: Các biến mô tả địa lý nơi cư trú của khách hàng, từ cấp thành phố đến quốc gia.
🔹 Thông tin sản phẩm và giao dịch:
ProductFamily: Nhóm sản phẩm chính, ví dụ: Thực phẩm, Đồ uống, v.v.
ProductDepartment: Bộ phận hoặc danh mục sản phẩm cụ thể hơn trong siêu thị.
ProductCategory: Loại sản phẩm chi tiết được bán.
UnitsSold: Số lượng sản phẩm được bán trong một giao dịch.
Revenue: Doanh thu (tính bằng USD) phát sinh từ mỗi giao dịch.
Phân loại biến: Bộ dữ liệu bao gồm cả biến định tính (categorical) và biến định lượng (numerical).
Các biến định tính như giới tính, tình trạng hôn nhân, thành phố, loại sản phẩm,… thể hiện thông tin phân loại, không mang giá trị số cụ thể, do đó thường được thống kê mô tả bằng tần suất hoặc tỷ lệ phần trăm.
Ngược lại, các biến định lượng như số con, số lượng sản phẩm bán ra, doanh thu,… cho phép áp dụng các phép toán và đo lường trung bình, phương sai,…
# Xác định biến định tính (kiểu character hoặc factor)
categorical_vars <- names(select_if(data, is.character))
# Xác định biến định lượng (kiểu số)
numerical_vars <- names(select_if(data, is.numeric))
# Hiển thị danh sách các biến
cat("Các biến định tính:", paste(categorical_vars, collapse = ", "), "\n\n")
## Các biến định tính: PurchaseDate, Gender, MaritalStatus, Homeowner, AnnualIncome, City, StateorProvince, Country, ProductFamily, ProductDepartment, ProductCategory
cat("Các biến định lượng:", paste(numerical_vars, collapse = ", "))
## Các biến định lượng: X, CustomerID, Children, UnitsSold, Revenue
# Sử dụng summary để mô tả các biến định lượng
summary(select(data, all_of(numerical_vars)))
## X CustomerID Children UnitsSold Revenue
## Min. : 1 Min. : 3 Min. :0.00 Min. :1.000 Min. : 0.53
## 1st Qu.: 3516 1st Qu.: 2549 1st Qu.:1.00 1st Qu.:3.000 1st Qu.: 6.84
## Median : 7030 Median : 5060 Median :3.00 Median :4.000 Median :11.25
## Mean : 7030 Mean : 5117 Mean :2.53 Mean :4.081 Mean :13.00
## 3rd Qu.:10544 3rd Qu.: 7633 3rd Qu.:4.00 3rd Qu.:5.000 3rd Qu.:17.37
## Max. :14059 Max. :10280 Max. :5.00 Max. :8.000 Max. :56.70
library(knitr)
# Tạo bảng thống kê mô tả thủ công từ kết quả bạn đã cung cấp
desc_table <- data.frame(
`Thống kê` = c("Min", "1st Qu.", "Median", "Mean", "3rd Qu.", "Max"),
`Children` = c(0, 1, 3, 2.53, 4, 5),
`UnitsSold` = c(1, 3, 4, 4.08, 5, 8),
`Revenue` = c(0.53, 6.84, 11.25, 13.00, 17.37, 56.70)
)
kable(desc_table, align = "c", caption = "Thống kê mô tả cho các biến định lượng")
| Thống.kê | Children | UnitsSold | Revenue |
|---|---|---|---|
| Min | 0.00 | 1.00 | 0.53 |
| 1st Qu. | 1.00 | 3.00 | 6.84 |
| Median | 3.00 | 4.00 | 11.25 |
| Mean | 2.53 | 4.08 | 13.00 |
| 3rd Qu. | 4.00 | 5.00 | 17.37 |
| Max | 5.00 | 8.00 | 56.70 |
Nhận xét về các biến định lượng trong bộ dữ liệu 🔹 Children (Số lượng con của khách hàng) Số liệu thống kê cho thấy trung bình mỗi khách hàng có khoảng 2,53 người con, với trung vị là 3, cho thấy phân phối khá cân bằng và phần lớn khách hàng rơi vào nhóm có từ 2 đến 3 con. Đáng chú ý, nhóm khách hàng có từ 3 đến 5 con chiếm tỷ lệ lớn, gợi ý rằng tệp khách hàng chủ yếu là các gia đình truyền thống hoặc trung lưu. Ngoài ra, sự xuất hiện của những khách hàng không có con (giá trị nhỏ nhất = 0) cũng là điểm cần lưu tâm – đây có thể là những người độc thân hoặc cặp vợ chồng trẻ, vốn thường có hành vi tiêu dùng khác biệt, ưu tiên cho cá nhân hoặc trải nghiệm.
🔹 UnitsSold (Số lượng sản phẩm bán ra mỗi giao dịch) Trung bình mỗi giao dịch bán được khoảng 4,08 sản phẩm, gần với trung vị là 4, cho thấy dữ liệu khá đối xứng và không có sự chênh lệch lớn. Khoảng 50% các giao dịch dao động từ 3 đến 5 sản phẩm, phản ánh thói quen mua sắm vừa đủ dùng trong một lần – đặc trưng của những người tiêu dùng thường xuyên đi siêu thị. Mức cao nhất là 8 sản phẩm trong một giao dịch, cho thấy vẫn tồn tại những khách hàng có nhu cầu mua sắm lớn hơn – có thể là hộ gia đình đông người hoặc mua để tích trữ.
🔹 Revenue (Doanh thu mỗi giao dịch - USD) Doanh thu trung bình của mỗi giao dịch là 13 USD, trong khi trung vị chỉ là 11.25 USD, cho thấy phân phối lệch phải nhẹ – một số giao dịch có giá trị cao làm tăng mức trung bình. Phần lớn các giao dịch nằm trong khoảng 6.84 đến 17.37 USD, đây là mức chi tiêu phổ biến cho những đợt mua sắm ngắn, phù hợp với thói quen tiêu dùng thường thấy ở siêu thị. Tuy nhiên, vẫn có những giao dịch lên đến 56.70 USD, cho thấy có những khách hàng chi tiêu lớn – có thể rơi vào các dịp lễ, chương trình khuyến mãi, hoặc đến từ nhóm khách hàng trung thành có xu hướng mua số lượng lớn.
table_gender <- table(data$Gender) # Tạo bảng tần suất
prop_gender <- prop.table(table_gender)
kable(as.data.frame(table_gender), caption = "Tần suất giới tính")
| Var1 | Freq |
|---|---|
| F | 7170 |
| M | 6889 |
kable(as.data.frame(prop_gender), caption = "Tỷ lệ giới tính (%)")
| Var1 | Freq |
|---|---|
| F | 0.5099936 |
| M | 0.4900064 |
ggplot(data, aes(x = Gender)) +
geom_bar(fill = "#69b3a2") +
labs(title = "Phân bố giới tính", x = "Giới tính", y = "Số lượng") +
theme_minimal()
Nhận xét về phân bố giới tính
Kết quả thống kê cho thấy trong bộ dữ liệu có 7.170 khách hàng nữ, chiếm khoảng 51.0%, và 6.889 khách hàng nam, chiếm 49.0%. Tỷ lệ này cho thấy sự phân bố giới tính khá cân bằng, không có sự chênh lệch đáng kể giữa hai nhóm.
Điều này gợi ý rằng chuỗi siêu thị không tập trung phục vụ riêng cho một giới nào, mà hướng tới đáp ứng nhu cầu tiêu dùng của cả nam và nữ một cách đồng đều.
Tuy nhiên, tỷ lệ khách hàng nữ nhỉnh hơn một chút có thể phản ánh vai trò của phụ nữ trong việc quản lý chi tiêu và mua sắm cho gia đình, dẫn đến việc họ xuất hiện thường xuyên hơn trong các giao dịch được ghi nhận.
table_marital <- table(data$MaritalStatus)
prop_marital <- prop.table(table_marital)
kable(as.data.frame(table_marital), caption = "Tần suất tình trạng hôn nhân")
| Var1 | Freq |
|---|---|
| M | 6866 |
| S | 7193 |
kable(as.data.frame(prop_marital), caption = "Tỷ lệ tình trạng hôn nhân (%)")
| Var1 | Freq |
|---|---|
| M | 0.4883704 |
| S | 0.5116296 |
ggplot(data, aes(x = MaritalStatus)) +
geom_bar(fill = "#f28e2b") +
labs(title = "Tình trạng hôn nhân", x = "Tình trạng", y = "Số lượng") +
theme_minimal()
Nhận xét về tình trạng hôn nhân của khách hàng
Phân tích dữ liệu cho thấy nhóm khách hàng độc thân (Single - ký hiệu S) chiếm 7.193 người, tương đương 51.16%, trong khi nhóm đã kết hôn (Married - M) có 6.866 người, chiếm 48.84%.
Tỷ lệ này nhìn chung khá cân đối giữa hai nhóm, tuy nhiên khách hàng độc thân có phần chiếm ưu thế nhẹ. Sự chênh lệch không lớn nhưng vẫn phản ánh những đặc điểm thú vị trong hành vi tiêu dùng theo tình trạng hôn nhân.
Một số nguyên nhân hợp lý có thể giải thích cho hiện tượng này:
Người độc thân thường có xu hướng tự chủ hơn trong việc mua sắm, tự quyết định và trực tiếp thực hiện các giao dịch tiêu dùng mà không cần tham khảo ý kiến từ người khác trong hộ gia đình. Điều này giúp tăng khả năng xuất hiện của họ trong hệ thống ghi nhận giao dịch.
Nhóm người trẻ độc thân, đặc biệt là những người sống ở khu vực thành thị, có nhịp sống năng động và phụ thuộc nhiều hơn vào các kênh bán lẻ hiện đại như siêu thị. Họ cũng có xu hướng mua sắm theo nhu cầu cá nhân, với tần suất thường xuyên nhưng số lượng hàng hóa không quá lớn.
Trong khi đó, người đã kết hôn có thể tập trung việc mua sắm cho hộ gia đình, dẫn đến việc một người đại diện thực hiện giao dịch cho cả nhà. Điều này làm giảm số lượng giao dịch trên mỗi cá nhân, đặc biệt là trong các gia đình truyền thống.
table_home <- table(data$Homeowner)
prop_home <- prop.table(table_home)
kable(as.data.frame(table_home), caption = "Tần suất sở hữu nhà")
| Var1 | Freq |
|---|---|
| N | 5615 |
| Y | 8444 |
kable(as.data.frame(prop_home), caption = "Tỷ lệ sở hữu nhà (%)")
| Var1 | Freq |
|---|---|
| N | 0.3993883 |
| Y | 0.6006117 |
ggplot(data, aes(x = Homeowner)) +
geom_bar(fill = "#4e79a7") +
labs(title = "Sở hữu nhà", x = "Tình trạng", y = "Số lượng") +
theme_minimal()
Nhận xét về tình trạng sở hữu nhà của khách hàng
Dữ liệu cho thấy trong tổng số 14.059 khách hàng, có 8.444 người (60.06%) là chủ sở hữu nhà ở, trong khi 5.615 người (39.94%) không sở hữu nhà. Đây là một biến định tính mang tính chất nhân khẩu học quan trọng, phản ánh phần nào mức độ ổn định về kinh tế và đặc điểm tiêu dùng của khách hàng.
Tình trạng sở hữu nhà có thể liên quan chặt chẽ đến hành vi chi tiêu và nhu cầu mua sắm như sau:
Nhóm khách hàng sở hữu nhà thường có:
Mức độ ổn định tài chính cao hơn, vì việc mua và duy trì nhà ở đòi hỏi nguồn lực kinh tế bền vững.
Nhu cầu tiêu dùng đa dạng và dài hạn hơn, đặc biệt liên quan đến các sản phẩm phục vụ cuộc sống gia đình như thực phẩm, đồ dùng gia dụng, thiết bị nhà bếp, đồ trang trí,…
Tần suất mua sắm định kỳ cao hơn, nhằm duy trì sinh hoạt trong không gian sống riêng.
Ngược lại, nhóm khách hàng không sở hữu nhà ở – có thể là người thuê nhà, sinh viên, người lao động lưu động, hoặc đang sống cùng gia đình – có xu hướng:
Chi tiêu thận trọng hơn, ưu tiên các mặt hàng thiết yếu hoặc ngắn hạn.
Giảm thiểu mua sắm các sản phẩm cồng kềnh, khó vận chuyển hoặc không cần thiết trong không gian sống tạm thời.
Ưu tiên tính tiện lợi, có thể chi tiêu linh hoạt hơn theo từng giai đoạn thu nhập hoặc hoàn cảnh cư trú.
Sự phân bố giữa hai nhóm này giúp doanh nghiệp hiểu rõ hơn về phân khúc khách hàng theo mức độ ổn định nơi ở, từ đó điều chỉnh chiến lược sản phẩm, trưng bày hàng hóa, và chương trình khuyến mãi phù hợp hơn với từng đối tượng.
table_product <- table(data$ProductCategory)
prop_product <- prop.table(table_product)
kable(as.data.frame(table_product), caption = "Tần suất danh mục sản phẩm")
| Var1 | Freq |
|---|---|
| Baking Goods | 484 |
| Bathroom Products | 365 |
| Beer and Wine | 356 |
| Bread | 425 |
| Breakfast Foods | 417 |
| Candles | 45 |
| Candy | 352 |
| Canned Anchovies | 44 |
| Canned Clams | 53 |
| Canned Oysters | 35 |
| Canned Sardines | 40 |
| Canned Shrimp | 38 |
| Canned Soup | 404 |
| Canned Tuna | 87 |
| Carbonated Beverages | 154 |
| Cleaning Supplies | 189 |
| Cold Remedies | 93 |
| Dairy | 903 |
| Decongestants | 85 |
| Drinks | 135 |
| Eggs | 198 |
| Electrical | 355 |
| Frozen Desserts | 323 |
| Frozen Entrees | 118 |
| Fruit | 765 |
| Hardware | 129 |
| Hot Beverages | 226 |
| Hygiene | 197 |
| Jams and Jellies | 588 |
| Kitchen Products | 217 |
| Magazines | 202 |
| Meat | 761 |
| Miscellaneous | 42 |
| Packaged Vegetables | 48 |
| Pain Relievers | 192 |
| Paper Products | 345 |
| Pizza | 194 |
| Plastic Products | 141 |
| Pure Juice Beverages | 165 |
| Seafood | 102 |
| Side Dishes | 153 |
| Snack Foods | 1600 |
| Specialty | 289 |
| Starchy Foods | 277 |
| Vegetables | 1728 |
kable(as.data.frame(prop_product), caption = "Tỷ lệ danh mục sản phẩm (%)")
| Var1 | Freq |
|---|---|
| Baking Goods | 0.0344263 |
| Bathroom Products | 0.0259620 |
| Beer and Wine | 0.0253219 |
| Bread | 0.0302297 |
| Breakfast Foods | 0.0296607 |
| Candles | 0.0032008 |
| Candy | 0.0250373 |
| Canned Anchovies | 0.0031297 |
| Canned Clams | 0.0037698 |
| Canned Oysters | 0.0024895 |
| Canned Sardines | 0.0028452 |
| Canned Shrimp | 0.0027029 |
| Canned Soup | 0.0287360 |
| Canned Tuna | 0.0061882 |
| Carbonated Beverages | 0.0109538 |
| Cleaning Supplies | 0.0134433 |
| Cold Remedies | 0.0066150 |
| Dairy | 0.0642293 |
| Decongestants | 0.0060459 |
| Drinks | 0.0096024 |
| Eggs | 0.0140835 |
| Electrical | 0.0252507 |
| Frozen Desserts | 0.0229746 |
| Frozen Entrees | 0.0083932 |
| Fruit | 0.0544135 |
| Hardware | 0.0091756 |
| Hot Beverages | 0.0160751 |
| Hygiene | 0.0140124 |
| Jams and Jellies | 0.0418237 |
| Kitchen Products | 0.0154350 |
| Magazines | 0.0143680 |
| Meat | 0.0541290 |
| Miscellaneous | 0.0029874 |
| Packaged Vegetables | 0.0034142 |
| Pain Relievers | 0.0136567 |
| Paper Products | 0.0245394 |
| Pizza | 0.0137990 |
| Plastic Products | 0.0100292 |
| Pure Juice Beverages | 0.0117363 |
| Seafood | 0.0072551 |
| Side Dishes | 0.0108827 |
| Snack Foods | 0.1138061 |
| Specialty | 0.0205562 |
| Starchy Foods | 0.0197027 |
| Vegetables | 0.1229106 |
ggplot(data, aes(x = ProductCategory)) +
geom_bar(fill = "#e15759") +
labs(title = "Danh mục sản phẩm", x = "Danh mục", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét về nhóm sản phẩm được mua nhiều nhất
Phân tích dữ liệu cho thấy những nhóm sản phẩm được khách hàng lựa chọn nhiều nhất bao gồm:
Rau củ (Vegetables): 12.29%
Đồ ăn vặt (Snack Foods): 11.38%
Sản phẩm từ sữa (Dairy): 6.42%
Theo sau là các nhóm như: Trái cây (Fruit), Thịt (Meat), Thực phẩm đông lạnh (Frozen Foods),…
Các mặt hàng này đều thuộc nhóm hàng tiêu dùng thiết yếu, có tần suất mua cao và thời hạn sử dụng ngắn, phản ánh rõ nét hành vi mua sắm thường xuyên của khách hàng. Đây cũng là nhóm sản phẩm đóng vai trò cốt lõi trong doanh thu của các chuỗi siêu thị.
Việc khách hàng tập trung mua các sản phẩm cơ bản cho sinh hoạt hàng ngày cho thấy:
Siêu thị đang làm tốt vai trò phục vụ nhu cầu thiết yếu chứ không định vị là nơi cung cấp hàng hóa cao cấp hoặc xa xỉ.
Tính thực tế và tiện lợi là ưu tiên hàng đầu trong lựa chọn sản phẩm của khách hàng.
Tập trung vào các nhóm hàng có vòng đời ngắn giúp tăng lượt quay vòng tồn kho và tối ưu hóa vận hành kho hàng.
data %>%
mutate(Country = fct_lump(Country, n = 10)) %>%
ggplot(aes(x = Country)) +
geom_bar(fill = "#76b7b2") +
labs(title = "Top 10 quốc gia", x = "Quốc gia", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét về phân bố khách hàng theo quốc gia
Phân tích dữ liệu cho thấy sự phân bố khách hàng theo quốc gia như sau:
Hoa Kỳ (USA): chiếm 68.01% tổng số giao dịch – chiếm tỷ trọng lớn nhất trong ba quốc gia.
Mexico: chiếm 26.23%, một con số đáng kể, tương đương hơn 1/4 toàn bộ dữ liệu.
Canada: chiếm 5.75%, tuy chiếm tỷ lệ nhỏ nhưng vẫn thể hiện sự hiện diện nhất định.
Từ các con số này có thể rút ra một số nhận định:
Hoa Kỳ rõ ràng là thị trường trọng điểm, nơi có phần lớn khách hàng và doanh thu. Đây có thể là nơi đặt phần lớn các cửa hàng, với chiến lược phân phối và tiếp thị đã được ổn định.
Mexico là thị trường thứ cấp tiềm năng, có tỷ trọng khách hàng khá cao. Việc hơn 1/4 số giao dịch diễn ra tại đây cho thấy sức mua đáng kể, mở ra cơ hội:
Mở rộng hệ thống phân phối và cửa hàng.
Đầu tư thêm vào hoạt động tiếp thị địa phương để tăng mức độ nhận diện thương hiệu.
Tùy chỉnh danh mục sản phẩm phù hợp với sở thích tiêu dùng tại Mexico nhằm tăng độ phủ thị trường.
Canada tuy có tỷ trọng nhỏ, nhưng nếu xem đây là thị trường ngách, có thể triển khai các chiến lược phù hợp hơn với nhóm khách hàng mục tiêu cụ thể, như cung cấp sản phẩm nhập khẩu, hàng đặc sản hoặc dịch vụ cao cấp.
data %>%
mutate(StateorProvince = fct_lump(StateorProvince, n = 10)) %>%
ggplot(aes(x = StateorProvince)) +
geom_bar(fill = "#59a14f") +
labs(title = "Top 10 bang/tỉnh", x = "Bang/Tỉnh", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét về phân bố khách hàng theo bang tại Hoa Kỳ
Kết quả thống kê cho thấy sự phân bố khách hàng tại ba bang chính như sau:
Washington: chiếm 32.48% tổng số giao dịch – là bang có lượng khách hàng lớn nhất trong bộ dữ liệu.
California: chiếm 19.44%, đứng thứ hai.
Oregon: chiếm 16.09%, xếp thứ ba.
Tổng cộng, ba bang này chiếm gần 68% toàn bộ số lượng giao dịch – một tỷ lệ áp đảo, phản ánh rằng khu vực bờ Tây Hoa Kỳ là trung tâm hoạt động kinh doanh chủ đạo của chuỗi siêu thị.
data %>%
mutate(City = fct_lump(City, n = 23)) %>%
ggplot(aes(x = City)) +
geom_bar(fill = "#af7aa1") +
labs(title = "Thành phố", x = "Thành phố", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét về phân bố giao dịch theo thành phố
Kết quả phân tích cho thấy các thành phố có tỷ lệ giao dịch cao nhất bao gồm:
Salem chiếm khoảng 9.86% tổng số giao dịch,
Tacoma chiếm 8.94%,
Los Angeles chiếm 6.59%,
và Seattle chiếm 6.56%.
Nhận diện xu hướng: Nhìn chung, các thành phố này đều thuộc khu vực bờ Tây nước Mỹ, cụ thể là trong các bang Washington, Oregon và California – những trung tâm đô thị lớn và phát triển.
Ý nghĩa và hàm ý: Sự tập trung lưu lượng giao dịch lớn tại các thành phố này có thể phản ánh:
Mật độ dân cư cao, dẫn đến nhu cầu tiêu dùng thường xuyên và đa dạng.
Hoạt động thương mại sôi động, mức độ tiếp cận dịch vụ siêu thị thuận tiện do vị trí địa lý thuận lợi hoặc mạng lưới chi nhánh phát triển.
Các chi nhánh siêu thị tại những thành phố này có lượng khách hàng đông đảo, đóng góp quan trọng vào tổng doanh thu của chuỗi cửa hàng.
Đối với chiến lược kinh doanh, dữ liệu này gợi ý:
Tập trung củng cố và phát triển thêm các cửa hàng tại các thành phố có lưu lượng cao để khai thác tối đa tiềm năng thị trường.
Nâng cao chất lượng dịch vụ, đa dạng hóa sản phẩm và tổ chức các chương trình khuyến mãi phù hợp, nhằm duy trì và tăng cường sự trung thành của khách hàng.
Có thể nghiên cứu thêm các khu vực lân cận để mở rộng phạm vi phục vụ, tận dụng hiệu quả các chuỗi cung ứng hiện có.
# Bước 1: Tạo biến nhóm thu nhập từ AnnualIncome
data <- data %>%
mutate(IncomeGroup = factor(AnnualIncome,
levels = c("$0 - $30K", "$30K - $50K", "$50K - $70K", "$70K - $90K", "$90K - $110K", "$110K+"),
ordered = TRUE))
# Bước 2: Tạo bảng tần suất và tỷ lệ
table_income <- table(data$IncomeGroup)
prop_income <- prop.table(table_income) * 100
# Bước 3: Hiển thị bảng bằng kable
kable(as.data.frame(table_income), caption = "Tần suất theo nhóm thu nhập")
| Var1 | Freq |
|---|---|
| $0 - $30K | 0 |
| $30K - $50K | 4601 |
| $50K - $70K | 2370 |
| $70K - $90K | 1709 |
| $90K - $110K | 613 |
| $110K+ | 0 |
kable(as.data.frame(prop_income), caption = "Tỷ lệ theo nhóm thu nhập (%)")
| Var1 | Freq |
|---|---|
| $0 - $30K | 0.000000 |
| $30K - $50K | 49.510384 |
| $50K - $70K | 25.503067 |
| $70K - $90K | 18.390186 |
| $90K - $110K | 6.596363 |
| $110K+ | 0.000000 |
# Bước 4: Vẽ biểu đồ cột
ggplot(data, aes(x = AnnualIncome)) +
geom_bar(fill = "orchid") +
theme_minimal() +
labs(title = "Thu nhập hàng năm", x = "Annual Income", y = "Tần suất") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét về thu nhập của khách hàng
Phân tích cho thấy nhóm khách hàng có mức thu nhập hàng năm từ $30K - $50K chiếm tỷ lệ lớn nhất, 32.73% tổng số giao dịch. Các nhóm tiếp theo gồm:
$10K - $30K: chiếm 21.98%
$50K - $70K: chiếm 16.86%
Các nhóm thu nhập cao hơn, đặc biệt là trên $90K, có tỷ lệ rất thấp, chỉ chiếm một phần nhỏ trong tổng số khách hàng.
Hàm ý từ phân bố thu nhập: Rõ ràng, khách hàng chủ yếu tập trung ở tầng lớp có thu nhập trung bình và trung bình thấp, phản ánh định vị thị trường của chuỗi siêu thị là phục vụ nhu cầu thiết yếu và phổ thông.
Việc có rất ít khách hàng thuộc nhóm thu nhập cao cho thấy đây không phải là siêu thị định vị ở phân khúc cao cấp. Thay vào đó, nó phù hợp với nhóm khách hàng ưu tiên giá cả phải chăng, sản phẩm tiện lợi.
Dữ liệu cũng cho thấy cơ hội khai thác thị trường nằm ở những chiến lược hướng đến đại đa số người tiêu dùng phổ thông thay vì tìm cách mở rộng sang phân khúc cao cấp ít phổ biến trong hệ thống hiện tại.
# Bảng tần suất
table_productfamily <- table(data$ProductFamily)
# Bảng tỷ lệ phần trăm
prop_productfamily <- prop.table(table_productfamily) * 100
# Hiển thị bảng tần suất
knitr::kable(as.data.frame(table_productfamily),
caption = "Tần suất theo nhóm sản phẩm (ProductFamily)")
| Var1 | Freq |
|---|---|
| Drink | 1250 |
| Food | 10153 |
| Non-Consumable | 2656 |
# Hiển thị bảng tỷ lệ
knitr::kable(as.data.frame(round(prop_productfamily, 2)),
caption = "Tỷ lệ (%) theo nhóm sản phẩm (ProductFamily)")
| Var1 | Freq |
|---|---|
| Drink | 8.89 |
| Food | 72.22 |
| Non-Consumable | 18.89 |
# Biểu đồ cột cho ProductFamily
library(ggplot2)
ggplot(data, aes(x = ProductFamily)) +
geom_bar(fill = "#69b3a2") +
labs(title = "Phân bố nhóm sản phẩm", x = "Nhóm sản phẩm", y = "Số lượng") +
theme_minimal()
Nhận xét về phân bố nhóm sản phẩm (ProductFamily)
Food là nhóm sản phẩm phổ biến nhất trong bộ dữ liệu, chiếm hơn 2/3 tổng số quan sát. Điều này cho thấy rằng sản phẩm thực phẩm có vai trò trung tâm trong cơ cấu sản phẩm của doanh nghiệp hoặc tổ chức khảo sát. Việc Food chiếm tỷ trọng cao cũng có thể phản ánh định hướng kinh doanh thiên về hàng tiêu dùng nhanh (FMCG) hoặc nhóm sản phẩm thiết yếu.
Non-Consumable chiếm gần 1/5 tổng số quan sát, là nhóm sản phẩm phi tiêu dùng trực tiếp, ví dụ như đồ gia dụng, dụng cụ, thiết bị. Dù không chiếm đa số, nhóm này có tỷ lệ đủ lớn để được xem là một dòng sản phẩm phụ trợ quan trọng. Cần đánh giá sâu hơn để biết mức độ đóng góp của nhóm này vào doanh thu hoặc lợi nhuận.
Drink là nhóm có tỷ lệ thấp nhất, dưới 10%. Điều này cho thấy sản phẩm đồ uống không phải là trọng tâm trong danh mục hiện tại, hoặc có thể là một ngành hàng mới, đang phát triển. Nếu chiến lược kinh doanh có mục tiêu đa dạng hóa, nhóm này có thể là điểm cần đầu tư thêm.
# Tạo bảng tần suất
table_dept <- table(data$ProductDepartment)
# Tính tỷ lệ phần trăm
prop_dept <- prop.table(table_dept) * 100
# Hiển thị bảng tần suất
knitr::kable(as.data.frame(table_dept),
caption = "Tần suất theo phòng ban sản phẩm (ProductDepartment)")
| Var1 | Freq |
|---|---|
| Alcoholic Beverages | 356 |
| Baked Goods | 425 |
| Baking Goods | 1072 |
| Beverages | 680 |
| Breakfast Foods | 188 |
| Canned Foods | 977 |
| Canned Products | 109 |
| Carousel | 59 |
| Checkout | 82 |
| Dairy | 903 |
| Deli | 699 |
| Eggs | 198 |
| Frozen Foods | 1382 |
| Health and Hygiene | 893 |
| Household | 1420 |
| Meat | 89 |
| Periodicals | 202 |
| Produce | 1994 |
| Seafood | 102 |
| Snack Foods | 1600 |
| Snacks | 352 |
| Starchy Foods | 277 |
# Hiển thị bảng tỷ lệ phần trăm (làm tròn đến 2 chữ số)
knitr::kable(as.data.frame(round(prop_dept, 2)),
caption = "Tỷ lệ (%) theo phòng ban sản phẩm (ProductDepartment)")
| Var1 | Freq |
|---|---|
| Alcoholic Beverages | 2.53 |
| Baked Goods | 3.02 |
| Baking Goods | 7.63 |
| Beverages | 4.84 |
| Breakfast Foods | 1.34 |
| Canned Foods | 6.95 |
| Canned Products | 0.78 |
| Carousel | 0.42 |
| Checkout | 0.58 |
| Dairy | 6.42 |
| Deli | 4.97 |
| Eggs | 1.41 |
| Frozen Foods | 9.83 |
| Health and Hygiene | 6.35 |
| Household | 10.10 |
| Meat | 0.63 |
| Periodicals | 1.44 |
| Produce | 14.18 |
| Seafood | 0.73 |
| Snack Foods | 11.38 |
| Snacks | 2.50 |
| Starchy Foods | 1.97 |
ggplot(data, aes(x = ProductDepartment)) +
geom_bar(fill = "#1f77b4") +
labs(title = "Phân bố phòng ban sản phẩm",
x = "Phòng ban sản phẩm",
y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét biến ProductDepartment
Kết quả thống kê cho thấy danh mục sản phẩm được phân chia thành 22 phòng ban, với sự phân bố không đồng đều. Nhóm Produce (rau củ quả) chiếm tỷ lệ cao nhất (14.18%), tiếp theo là Snack Foods (11.38%), Household (10.10%) và Frozen Foods (9.83%). Điều này phản ánh trọng tâm phân phối của doanh nghiệp nghiêng về các mặt hàng thực phẩm thiết yếu, đồ ăn nhanh và hàng tiêu dùng gia dụng.
Một số phòng ban có tỷ lệ khá thấp như Snacks, Canned Products, Seafood và Meat, cho thấy phạm vi kinh doanh ở các nhóm này còn hạn chế hoặc sản phẩm ít được bán ra. Đáng chú ý, dữ liệu tồn tại các nhãn tương đồng như “Snack Foods” và “Snacks”, “Canned Foods” và “Canned Products”, cho thấy cần thực hiện chuẩn hóa tên phòng ban để đảm bảo độ chính xác trong phân tích sau này.
Nhìn chung, phân bố nhóm sản phẩm thể hiện rõ định hướng kinh doanh đa dạng, ưu tiên hàng tiêu dùng thiết yếu và thực phẩm nhanh, đồng thời mở rộng sang các sản phẩm gia dụng và chăm sóc cá nhân.