Phân tích dữ liệu định tính

2025-05-14

Thang đo

Các loại thang đo cơ bản:

  • Định danh (Nominal)
  • Thứ bậc (Ordinal)
  • Khoảng (Interval)
  • Tỷ lệ (Ratio)

Phân phối Poisson

  • Là một phân phối xác suất rời rạc.
  • Mô tả số lần một sự kiện xảy ra trong một khoảng thời gian hoặc không gian cố định.
  • Ký hiệu: \(X \sim Poisson(\lambda)\)

Dấu hiệu nhận biết:

  1. Các sự kiện xảy ra với một tốc độ trung bình không đổi (\(\lambda\)) trong một khoảng thời gian không đổi.
  2. Số lần sự kiện xảy ra trong các khoảng không giao nhau là độc lập.
  3. Xác suất để hai hay nhiều sự kiện xảy ra đồng thời trong một khoảng rất nhỏ là không đáng kể.

Tham số chính:

  • \(\lambda\) (lambda): Tốc độ trung bình (hay kỳ vọng) của các sự kiện xảy ra trong một khoảng nhất định. \(\lambda > 0\).

Một số ví dụ:

  • Số cuộc gọi đến tổng đài hỗ trợ khách hàng mỗi giờ.
  • Số khách hàng vào một cửa hàng bán lẻ mỗi 10 phút.
  • Số lỗi đánh máy trên một trang sách.
  • Số vụ vỡ nợ tín dụng mỗi tháng (của một tổ chức tín dụng).

Hàm xác suất (Probability Mass Function - PMF):

Xác suất để có đúng \(k\) sự kiện xảy ra trong khoảng đã cho là:

\[P(X=k) = \frac{\lambda^k e^{-\lambda}}{k!}\]

Trong đó:

  • \(k\): số lần sự kiện xảy ra (k = 0, 1, 2, …)
  • \(\lambda\): số lần xảy ra trung bình của sự kiện (tham số của phân phối)
  • \(e\): hằng số Euler (cơ số của logarit tự nhiên, \(e \approx 2.71828\))
  • \(k!\): \(k\) giai thừa (\(k \times (k-1) \times \dots \times 1\), và \(0! = 1\))

Đặc điểm quan trọng:

  • Kỳ vọng (Mean): \(E(X) = \lambda\)
  • Phương sai (Variance): \(Var(X) = \lambda\)
    • Lưu ý: Một đặc điểm nổi bật là kỳ vọng và phương sai bằng nhau.
  • Hình dạng:
    • Khi \(\lambda\) nhỏ, phân phối bị lệch phải.
    • Khi \(\lambda\) tăng (\(\lambda \ge 20\)), phân phối Poisson có thể được xấp xỉ tốt bằng phân phối Chuẩn \(N(\lambda, \lambda)\).

Ứng dụng trong kinh tế và kinh doanh:

  • Mô hình hóa số lượng sự kiện (ví dụ: lý thuyết hàng chờ, số lượng bán hàng).
  • Phân tích rủi ro (số vụ tai nạn, số lỗi sản phẩm).
  • Trong Kinh tế lượng: Hồi quy Poisson được sử dụng khi biến phụ thuộc là dữ liệu đếm (count data).

Kiểm định phân phối poisson

X <- rpois(n = 100, lambda = 2.6)

library(energy)
poisson.tests(X, R = 300)
      estimate statistic p.value      method
M-CvM      2.5   0.07093    0.50  M-CvM test
M-AD       2.5   0.34643    0.52   M-AD test
E          2.5   1.07182    0.22 Energy test

Phân phối Nhị thức

  • Là một phân phối xác suất rời rạc.
  • Mô tả số lần thành công (\(k\)) trong một chuỗi \(n\) phép thử Bernoulli độc lập.
  • Ký hiệu: \(X \sim B(n, p)\) hoặc \(X \sim Bin(n, p)\)

Điều kiện của một Phép thử Bernoulli:

  1. Chỉ có hai kết quả có thể xảy ra: “thành công” hoặc “thất bại”.
  2. Xác suất “thành công” (\(p\)) là không đổi cho mỗi phép thử.
  3. Các phép thử là độc lập với nhau.

Tham số chính:

  • \(n\): Số lần thực hiện phép thử (số nguyên dương).
  • \(p\): Xác suất thành công trong một phép thử đơn lẻ (\(0 \le p \le 1\)).

Một số ví dụ

  • Số lần tung được mặt ngửa khi tung đồng xu \(n\) lần.
  • Số sản phẩm lỗi trong một lô hàng \(n\) sản phẩm (nếu xác suất lỗi là như nhau cho mỗi sản phẩm).
  • Số người trả lời “Có” trong một cuộc khảo sát \(n\) người về một câu hỏi Có/Không.
  • Số khách hàng chọn sản phẩm A thay vì sản phẩm B trong số \(n\) khách hàng tiềm năng (nếu quyết định của mỗi người là độc lập và xác suất chọn A là như nhau).

Hàm xác suất (Probability Mass Function - PMF):

Xác suất để có đúng \(k\) lần thành công trong \(n\) phép thử là:

\[P(X=k) = C(n, k) \cdot p^k \cdot (1-p)^{n-k} = \binom{n}{k} p^k q^{n-k}\]

Trong đó:

  • \(k\): số lần thành công (\(k = 0, 1, 2, \dots, n\))
  • \(n\): tổng số phép thử
  • \(p\): xác suất thành công trong một phép thử
  • \(q = (1-p)\): xác suất thất bại trong một phép thử
  • \(C(n, k) = \binom{n}{k} = \frac{n!}{k!(n-k)!}\): Tổ hợp chập \(k\) của \(n\) (số cách chọn \(k\) thành công từ \(n\) phép thử)

Đặc điểm quan trọng:

  • Kỳ vọng (Mean): \(E(X) = np\)
  • Phương sai (Variance): \(Var(X) = np(1-p) = npq\)
  • Hình dạng:
    • Đối xứng khi \(p = 0.5\).
    • Lệch phải khi \(p < 0.5\).
    • Lệch trái khi \(p > 0.5\).
    • Khi \(n\) lớn và \(p\) không quá gần 0 hoặc 1 (thường \(np \ge 5\)\(n(1-p) \ge 5\)), phân phối Nhị thức có thể được xấp xỉ tốt bằng phân phối Chuẩn \(N(np, np(1-p))\).

Ứng dụng trong kinh tế và kinh doanh:

  • Kiểm soát chất lượng (tỷ lệ sản phẩm lỗi).
  • Nghiên cứu thị trường (tỷ lệ người ưa thích một sản phẩm/dịch vụ).
  • Phân tích tỷ lệ chuyển đổi trong marketing.
  • Trong Kinh tế lượng: Mô hình Logit/Probit thường được sử dụng khi biến phụ thuộc là biến nhị phân (0/1), có liên quan đến kết quả của một phép thử Bernoulli.

Trường hợp 1: \(n=10, p=0.2\) (Lệch phải)

Trường hợp 2: \(n=10, p=0.5\) (Đối xứng)

Trường hợp 3: \(n=20, p=0.8\) (Lệch trái, xấp xỉ Chuẩn)

Phân phối nhị thức

Phân phối Poisson

Bộ dữ liệu Supermarket Transactions

library(xlsx)
library(gt)
d <- read.csv("./data/Supermarket Transactions.csv", header = T)
gt(tmp)
X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children AnnualIncome City StateorProvince Country ProductFamily ProductDepartment ProductCategory UnitsSold Revenue
1 2007-12-18 7223 F S Y 2 $30K - $50K Los Angeles CA USA Food Snack Foods Snack Foods 5 27.38
2 2007-12-20 7841 M M Y 5 $70K - $90K Los Angeles CA USA Food Produce Vegetables 5 14.90
3 2007-12-21 8374 F M N 2 $50K - $70K Bremerton WA USA Food Snack Foods Snack Foods 3 5.52
4 2007-12-21 9619 M M Y 3 $30K - $50K Portland OR USA Food Snacks Candy 4 4.44
5 2007-12-22 1900 F S Y 3 $130K - $150K Beverly Hills CA USA Drink Beverages Carbonated Beverages 4 14.00
6 2007-12-22 6696 F M Y 3 $10K - $30K Beverly Hills CA USA Food Deli Side Dishes 3 4.37

Phân tích một biến

  • Lập bảng tần số
  • Vẽ đồ thị (cho bảng tần số).
  • Ước lượng tỷ lệ.
  • Kiểm định giả thuyết thống kê.

Phân tích nhiều hơn 1 biến

Bảng ngẫu nhiên 2 chiều

Là bảng tần số của 2 biến ngẫu nhiên định tính \(X, Y\). Các biểu hiện của biến phụ thuộc (respone variable) được xắp xếp trên hàng và các biểu hiện của biến độc lập (predictor variable) được xắp xếp trên cột. \[ \begin{array}{|c|c|c|c|c|} \hline \text{X \ Y} & A_1 & A_2 & \dots & A_n \\ \hline B_1 & f_{11} & f_{12} & \dots & f_{1n} \\ \hline B_2 & f_{21} & f_{22} & \dots & f_{2n} \\ \hline \dots & \dots &\dots &\dots &\dots \\ \hline B_m & f_{m1} & f_{m2} & \dots & f_{mn} \\ \hline \end{array} \] Nếu các biến \(X,Y\) chỉ có 2 biểu hiện khi đó bảng ngẫu nhiên 2 chiều sẽ trở thành: \[ \begin{array}{|c|c|c|c|c|} \hline \text{X \ Y} & A_1 & A_2 \\ \hline B_1 & f_{11} & f_{12}\\ \hline B_2 & f_{21} & f_{22}\\ \hline \end{array} \]

Bảng ngẫu nhiên 2 chiều (tt)

Bảng tần số của biến Gender

table(d$Gender)
Gender Freq
F 7170
M 6889

Bảng tần số và tần suất cho biến Gender và biến MaritalStatus

tmp <- table(d$Gender,d$MaritalStatus)
tmp
prop.table(tmp)
   
       M    S
  F 3602 3568
  M 3264 3625
   
         M      S
  F 0.2562 0.2538
  M 0.2322 0.2578

Bảng tần suất là ước lượng cho bảng phân phối xác suất đồng thời.

Phân phối biên/lề

Phân phối biên của biến Gender và biến Maritalstatus.

tmp <- table(d$Gender,d$MaritalStatus)
tmp
addmargins(tmp)

tmp <- prop.table(tmp)
tmp
addmargins(tmp)
   
       M    S
  F 3602 3568
  M 3264 3625
     
          M     S   Sum
  F    3602  3568  7170
  M    3264  3625  6889
  Sum  6866  7193 14059
   
         M      S
  F 0.2562 0.2538
  M 0.2322 0.2578
     
           M      S    Sum
  F   0.2562 0.2538 0.5100
  M   0.2322 0.2578 0.4900
  Sum 0.4884 0.5116 1.0000

Từ bảng phân phối xác suất đồng thời này ta có bảng phân phối biên cho biến Gender và biến Maritalstatus như sau:

\[ \begin{array}{|c|c|c|c|c|} \hline \text{Gender} & F & M \\ \hline P & 0.51 & 0.49\\ \hline \end{array} \] \[ \begin{array}{|c|c|c|c|c|} \hline \text{Maritalstatus} & M & S \\ \hline P & 0.4884 & 0.5116\\ \hline \end{array} \]

Relative risk

  • Ký hiệu \(\pi_i\) là tỷ lệ (xác suất) “thành công” của biến phụ thuộc (outcome variable) tương ứng với từng biểu hiện của biến độc lập (predictor variable).

  • Từ bảng tần xuất, chúng ta tính \(\frac{\pi_1}{\pi_2}\), phân số này gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện khác nhau của biến phụ thuộc. \[RR= \frac{\pi_1}{\pi_2}=\frac{n_{11}/(n_{11}+n_{12})}{n_{21}/(n_{21}+n_{22})}\]

library(DescTools)
tmp <- table(d$Homeowner,d$MaritalStatus)
addmargins(tmp)
RelRisk(tmp)
     
          M     S   Sum
  N    1719  3896  5615
  Y    5147  3297  8444
  Sum  6866  7193 14059
[1] 0.5023

Khoảng ước lượng cho Relative risk

\[log\left(\frac{\pi_1}{\pi_2}\right) = log\left(\frac{f_1}{f_2}\right)\pm Z_{\alpha/2}\sqrt{\frac{1-f_1}{n_{1+}\times f_1}+\frac{1-f_2}{n_{2+}\times f_2}}\]

table(d$Homeowner,d$MaritalStatus)
m <- matrix(c(1719,5147,3896,3297),nrow = 2)
RelRisk(m, conf.level = .95)

Kết quả:

   
       M    S
  N 1719 3896
  Y 5147 3297
rel. risk    lwr.ci    upr.ci 
   0.5023    0.4810    0.5241 

Odds ratio (tỷ lệ chênh)

Odd (tỷ lệ cược) của biểu hiện thứ \(i\) được định nghĩa: \[odd_i = \frac{\pi_i}{1-\pi_i} \tag{1}\] Với \(\pi_i\) là xác suất thành công của biểu hiện thứ \(i\). Từ công thức (1) chúng ta có:

  • \[odd_i = \frac{n_{i1}/n_{i+}}{1-n_{i1}/n_{i+}}=\frac{n_{i1}}{n_{i2}}\]
  • \[\pi_i = \frac{odd_i}{1+odd_i}\]
     
          M     S   Sum
  N    1719  3896  5615
  Y    5147  3297  8444
  Sum  6866  7193 14059

\[odd_1 = \frac{1719/5615}{3896/5615}=\frac{1719}{3896} = ; odd_2 = \frac{5147}{3297}\]

Odds ratio (tt)

Tỷ lệ chênh (Odds ratio): \[\theta= \frac{odd_1}{odd_2} = \frac{\pi_1(1-\pi_2)}{\pi_2(1-\pi_1)}\]

tmp <- table(d$Homeowner,d$MaritalStatus)
OddsRatio(tmp)
[1] 0.2826

Khoảng ước lượng cho odd ratios

\[log(\hat{\theta}) - u_{\alpha/2}\times ASE(log(\hat{\theta}))\le log(\theta) \le log(\hat{\theta}) + u_{\alpha/2}\times ASE(log(\hat{\theta}))\] với \[ASE(log(\hat{\theta}))=\sqrt{\frac{1}{n_{11}} +\frac{1}{n_{12}}+\frac{1}{n_{21}}+\frac{1}{n_{22}}}\]

tmp <- table(d$Homeowner,d$MaritalStatus)
OddsRatio(tmp,conf.level = .95)
odds ratio     lwr.ci     upr.ci 
    0.2826     0.2631     0.3036 

Kiểm định tính độc lập

(Cho biến định danh)

Có 2 biến định tính \(X,Y\), lập bảng tần số cho 2 biến này.

  • Giả thuyết: \(H_0:\) \(X,Y\) độc lập, \(H_1:\) \(X,Y\) không độc lập.
  • \[\chi^2 = \sum_{ij}\frac{(O_{ij}-E_{ij})^2}{E_{ij}}\]
  • Tính P- Value.

trong đó:

  • \(O_{ij}\):Tần số của ô ở vị trí hàng \(i\) cột \(j\)
  • \(E_{ij} = \frac{\text{tổng hàng }i\times \text{tổng cột }j}{\text{tổng quan sát}}\)
tmp <- table(d$Homeowner,d$MaritalStatus)
tmp
chisq.test(tmp)
   
       M    S
  N 1719 3896
  Y 5147 3297

    Pearson's Chi-squared test with Yates' continuity correction

data:  tmp
X-squared = 1241, df = 1, p-value <2e-16

Kiểm định tính độc lập

(Cho biến thứ bậc)

Phương pháp Hợp lý tối đa

(Maximum Likelihood)

\(Y\) là biến ngẫu nhiên với phân phối đã biết và có tham số là \(\theta\). \(\{Y_1,Y_2,\dots,Y_n\}\) là mẫu tổng quát và \(\{y_1,y_2,\dots,y_n\}\) là mẫu cụ thể.

Khi đó hàm hợp lý: \[L(\theta) = P(Y_1 = y_1,Y_2 = y_2,\dots,Y_n=y_n)\tag{2}=\Pi_{i=1}^nP(Y_i=y_i)\] Chúng ta sẽ tìm giá trị của \(\theta\) sao cho (2) đạt giá trị cực đại.

Lưu ý:

  • Do \(L(\theta)\) là tích của các thừa số chứa \(\theta\) nên việc tìm cực trị của hàm khá phức tạp.
  • Chúng ta sẽ tìm cực trị của hàm \(ln(L(\theta))\).

Phương pháp Hợp lý tối đa

Ví dụ: Ước lượng tỷ lệ sinh viên UFM có tập thể dục. Tập thể dục được định nghĩa như sau: Có chơi ít nhất 1 môn thể thao trong nhà hoặc ngoài trời ít nhất 3 lần mỗi tuần, mỗi lần ít nhất 30 phút.

Giả sử khảo sát 30 SV và thu được dãy số liệu sau: ()

Dùng phương pháp hợp lý tối đa để tính tỷ lệ này.

Giải

  • Mỗi SV khảo sát, gọi \(Y\) là số người có tập thể dục, \(Y\) được xem là một biến ngẫu nhiên có phân phối Bernoulli \(Y\sim B(p)\)\(P(Y=y) = p^{y}(1-p)^{1-y}\).
  • Khảo sát 30 sinh viên nghĩa là chúng ta có 30 biến ngẫu nhiên Bernoulli.

Hàm hợp lý: \[ \begin{align*} L(\hat{p}) & = \Pi_{i=1}^{30}P(Y_i=y_i)\\ & =\Pi_{i=1}^{30}\hat{p}^{x_i}(1-\hat{p})^{1-x_i}\\ & = \hat{p}^{\sum_{i=1}^{30}x_i}(1-\hat{p})^{n-\sum_{i=1}^{30}x_i} \end{align*} \] Lấy logarit \[lnL(\hat{p}) = \left(\sum x_i\right)ln(\hat{p})+\left(1-\sum x_i \right)ln(1-\hat{p})\] Đạo hàm theo \(\hat{p}\): \[\frac{\partial{lnL(\hat{p})}}{\partial{\hat{p}}}=\frac{\sum x_i}{\hat{p}} - \frac{1-\sum x_i}{1-\hat{p}} = 0\] \[\Leftrightarrow \sum x_i-n\hat{p} = 0\] \[\Leftrightarrow \hat{p} = \frac{\sum x_i}{n}\]

Mô hình tuyến tính tổng quát

(General Linear Modle - GLM)

Với \(Y\) là biến phụ thuộc và \(\{X_1,X_2,\dots,X_k\}\) là các biến độc lập, thì mô hình tuyến tính tổng quát là:

\[g(\mu) = \beta_0+\beta_1X_1+\beta_2X_2 +\dots +\beta_kX_k \tag{1}\] Các thành phần cơ bản của GLM

  • Thành phần ngẫu nhiên (Random component): Là phân phối xác suất của biến phụ thuộc.
  • Thành phần hệ thống (Systematic component): \(\beta_0+\beta_1X_1+\beta_2X_2 +\dots +\beta_kX_k\)
  • Hàm liên kết (Link): Là hàm \(g(.)\) trong (1).

Dữ liệu nhị phân

Biến nhị phân \(Y\) hay còn gọi là biến Bernoulli, là biến ngẫu nhiên chỉ nhận 2 giá trị, 0 và 1.

Đặt \(P(Y=1) = \pi\). Khi đó \(Y\) có bảng phân phối xác suất là: \[ \begin{array}{|c|c|c|} \hline Y & 0 & 1 \\ \hline P & 1-\pi & \pi \\ \hline \end{array} \]

Với kỳ vọng và phương sai tương ứng là: \(E(Y) = \pi, Var(Y) = \pi(1-\pi)\)

  • Một biến định tính có 2 biểu hiện, khi thu thập dữ liệu chúng ta sẽ có dữ liệu nhị phân.
  • Một biến định tính có 2 biểu hiện tương đương với một biến ngẫu nhiên có phân phối Bernoulli.

Mô hình xác suất tuyến tính - cho dữ liệu nhị phân

Linear Probability Model

Giả sử \(Y\) là biến định tính có 2 biểu hiện, \(X\) (có thể là định tính hoặc định lượng) là biến tác động lên \(Y\). Đặt \(P(Y=1) = \pi\).

\(Y \sim X\)

\(Y = f(X) = \beta_0 +\beta_1X\)

\(E(Y|X) \equiv\mu = f(X)=\beta_0 +\beta_1X\)

\(g(\mu) = f(X)=\beta_0 +\beta_1X\)

\[g(\pi)=\pi = \beta_0 + \beta_1x \tag{2}\]

Mô hình xác suất tuyến tính - cho dữ liệu nhị phâns (tt)

Chúng ta sẽ dùng ML để ước lượng \(\beta_0,\beta_1\) cho (2).

Với bộ dữ liệu \(Y=\{y_1,y_2,\dots,y_n\}, X = \{x-1,x_2,\dots,x_n\}\) hàm hợp lý: \[ \begin{align*} L(\beta_0,\beta_1)&= \Pi_{i=1}^n P(Y_i=y_i|x_i)\\ &= \Pi_{i=1}^n\hat{\pi}^{y_i}(1-\hat{\pi})^{1-y_i}\\ &=\Pi_{i=1}^n(\hat{\beta}_0+\hat{\beta}_1x_i)^{y_i}(1-\hat{\beta}_0+\hat{\beta}_1x_i)^{1-y_i} \end{align*} \] Lấy logarit:

\[ \begin{align*} lnL(\hat{\beta}_0,\hat{\beta}_1)&=ln\left(\Pi_{i=1}^n(\hat{\beta}_0+\hat{\beta}_1x_i)^{y_i}(1-\hat{\beta}_0+\hat{\beta}_1x_i)^{1-y_i}\right)\\ &= \sum_{i=1}^n\left(ln(y_i)(\hat{\beta}_0+\hat{\beta}_1x_i) + ln(1-y_i)(1-\hat{\beta}_0-\hat{\beta}_1x_i)\right)\\ \end{align*} \] Cực trị cho hàm số này:

\[ \left\{ \begin{array}{l} \frac{\partial lnL(\hat{\beta}_0,\hat{\beta}_1)}{\partial\hat{\beta}_0}&= 0\\ \frac{\partial lnL(\hat{\beta}_0,\hat{\beta}_1)}{\partial\hat{\beta}_1}&= 0 \end{array} \right. \]

\[ \left\{ \begin{array}{l} n&\hat{\beta}_0&+&\left(\sum_{i = 1}^{n}x_i\right)\hat{\beta}_1 &= \sum_{i = 1}^{n} y_i\\ \left(\sum_{i = 1}^{n}x_i\right)&\hat{\beta}_0 &+ &\left(\sum_{i = 1}^{n}x_i^2\right)\hat{\beta}_1 &= \sum_{i = 1}^{n} x_i y_i \end{array} \right. \] Lưu ý: Đây cũng là hệ số hồi quy của hàm hồi quy tuyến tính được ước lượng bởi phương pháp OLS.

Mô hình xác suất tuyến tính - cho dữ liệu nhị phân (tt)

ví dụ:

library(tidyverse)
tmp <- d %>% select(Homeowner,AnnualIncome)
tmp <- tmp %>% mutate(HomeownerC = if_else(Homeowner =='Y',1,0))
tmp <- tmp %>% mutate(AnnualIncomeC = case_when(
  AnnualIncome == '$10K - $30K'~20,
  AnnualIncome == '$30K - $50K'~40,
  AnnualIncome == '$50K - $70K'~60,
  AnnualIncome == '$70K - $90K'~80,
  AnnualIncome == '$90K - $110K'~100,
  AnnualIncome == '$110K - $130K'~120,
  AnnualIncome == '$130K - $150K'~140,
  AnnualIncome == '$150K +'~160))

lpm.OLS <- lm(HomeownerC ~ AnnualIncomeC, data = tmp)
lpm.ML <- glm(HomeownerC ~ AnnualIncomeC, data = tmp)

Kết quả:


Call:
lm(formula = HomeownerC ~ AnnualIncomeC, data = tmp)

Coefficients:
  (Intercept)  AnnualIncomeC  
      0.46525        0.00234  

Call:  glm(formula = HomeownerC ~ AnnualIncomeC, data = tmp)

Coefficients:
  (Intercept)  AnnualIncomeC  
      0.46525        0.00234  

Degrees of Freedom: 14058 Total (i.e. Null);  14057 Residual
Null Deviance:      3370 
Residual Deviance: 3270     AIC: 19400

Mô hình logit - cho dữ liệu nhị phân

Khi hàm liên kết có dạng \(g(\mu) =logit(\mu)=ln\left( \frac{\mu}{1-\mu}\right)\), mô hình hồi quy \[ln\left(\frac{\mu}{1-\mu}\right) = ln\left(\frac{\pi}{1-\pi}\right)= logit(\pi)= \beta_0+\beta_1x\] Được gọi là mô hình logit.

Lưu ý: \(Y\) là biến nhị phân thì \(E(Y)=\pi\) với \(\pi=P(Y=\) “thành công”\()\).

Thực hiện lại ví dụ trên nhưng với mô hình logit;

tmp$Homeowner <- factor(tmp$Homeowner, levels = c('Y','N'))
reglogit <- glm(Homeowner ~ AnnualIncomeC, data = tmp, family = binomial(link = 'logit'))

Kết quả của hàm hồi quy:


Call:  glm(formula = Homeowner ~ AnnualIncomeC, family = binomial(link = "logit"), 
    data = tmp)

Coefficients:
  (Intercept)  AnnualIncomeC  
       0.1849        -0.0106  

Degrees of Freedom: 14058 Total (i.e. Null);  14057 Residual
Null Deviance:      18900 
Residual Deviance: 18500    AIC: 18500

Vậy mô hình logit: \[ln\left(\frac{\hat{\pi}}{1-\hat{\pi}}\right)= 0.1849 + -0.0106\times AnnualIncome\]

Mô hình probit - cho dữ liệu nhị phân

Khi hàm liên kết có dạng: \(g(\mu) =g(\pi) = probit(\pi)=\Phi^{-1}(\pi)\). Với \(\Phi(t) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^te^{-\frac{t^2}{2}}dt\), hoặc có thể viết lại như sau: \[\pi(x) = \Phi(\beta_0+\beta_1x)\] Thực hiện lại ví dụ trên với mô hình Probit:

tmp$Homeowner <- factor(tmp$Homeowner, levels = c('Y','N'))
regprobit <- glm(Homeowner ~ AnnualIncomeC, data = tmp, family = binomial(link = 'probit'))

Kết quả của hàm hồi quy:


Call:  glm(formula = Homeowner ~ AnnualIncomeC, family = binomial(link = "probit"), 
    data = tmp)

Coefficients:
  (Intercept)  AnnualIncomeC  
      0.11285       -0.00653  

Degrees of Freedom: 14058 Total (i.e. Null);  14057 Residual
Null Deviance:      18900 
Residual Deviance: 18500    AIC: 18500

Vậy mô hình probit: \[\hat{\pi}= \Phi(0.1128 + -0.0065\times AnnualIncome)\]

Dự báo từ mô hình

predict.glm(lpm.ML, type="response")
predict.glm(reglogit, type="response")
predict.glm(regprobit, type="response")

Mô hình xác suất tuyến tính

nd <- data.frame(AnnualIncomeC=c(26.5, 33.8,48.5, 69, 82, 95, 108, 139))
predict.glm(lpm.ML, newdata = nd, type="response")
     1      2      3      4      5      6      7      8 
0.5273 0.5443 0.5787 0.6267 0.6571 0.6875 0.7180 0.7905 

Mô hình logistic

nd <- data.frame(AnnualIncomeC=c(26.5, 33.8,48.5, 69, 82, 95, 108, 139))
predict.glm(reglogit, newdata = nd, type="response")
predict.glm(reglogit, newdata = nd, type="link")
predict.glm(reglogit, newdata = nd, type="term")
     1      2      3      4      5      6      7      8 
0.4762 0.4571 0.4188 0.3672 0.3359 0.3060 0.2776 0.2169 
       1        2        3        4        5        6        7        8 
-0.09507 -0.17220 -0.32752 -0.54411 -0.68146 -0.81882 -0.95617 -1.28370 
  AnnualIncomeC
1       0.33122
2       0.25409
3       0.09878
4      -0.11782
5      -0.25517
6      -0.39252
7      -0.52987
8      -0.85741
attr(,"constant")
[1] -0.4263

Mô hình probit

nd <- data.frame(AnnualIncomeC=c(26.5, 33.8,48.5, 69, 82, 95, 108, 139))
predict.glm(regprobit, newdata = nd, type="response", interval = "confidence")
     1      2      3      4      5      6      7      8 
0.4760 0.4571 0.4193 0.3679 0.3364 0.3060 0.2769 0.2135 

Đánh giá mô hình

  • Chỉ số AIC \[AIC = 2k-2\ln(L)\] Với \(k\) là số biến của mô hình, \(\hat{L}\) là giá trị cực đại của hàm hợp lý. AIC càng nhỏ mô hình càng tốt.
AIC(reglogit)
AIC(lpm.ML)
[1] 18483
[1] 19409
  • Hệ số Brier Score \[B = \frac{1}{n}\sum_{i=1}^n(\hat\pi_i -o_i)^2\] Với \(\hat\pi_i,o_i\) lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình. Giá trị của hệ số Brier Score càng nhỏ mô hình càng tốt.
library(DescTools)
BrierScore(regprobit)
BrierScore(lpm.ML)
[1] 0.233
[1] 0.2328
  • Ma trận nhầm lẫn (Confusion matrix)
library(DescTools)
Conf(table(predict(regprobit, type="response") >= 0.3,regprobit$data$Homeowner == 'Y'))

Confusion Matrix and Statistics

          Reference
Prediction FALSE TRUE
     FALSE   420 1869
     TRUE   5195 6575

                Total n : 14'059
               Accuracy : 0.498
                 95% CI : (0.489, 0.506)
    No Information Rate : 0.601
    P-Value [Acc > NIR] : 1.0000

                  Kappa : -0.163
 Mcnemar's Test P-Value : < 2.2e-16

            Sensitivity : 0.075
            Specificity : 0.779
         Pos Pred Value : 0.183
         Neg Pred Value : 0.559
             Prevalence : 0.399
         Detection Rate : 0.163
   Detection Prevalence : 0.030
      Balanced Accuracy : 0.427
         F-val Accuracy : 0.106
     Matthews Cor.-Coef : -0.194

       'Positive' Class : FALSE

Khoảng tin cậy cho hệ số hồi quy

\[\hat{\beta}_j-z_{\alpha/2}se(\hat{\beta}_j) \le \beta_j \le \hat{\beta}_j+z_{\alpha/2}se(\hat{\beta}_j)\]

confint(reglogit)
                2.5 %    97.5 %
(Intercept)    0.1194  0.250578
AnnualIncomeC -0.0116 -0.009537

Phân phối đa thức

Xét:

  • Có 1 dãy gồm \(n\) phép thử độc lập nhau.
  • Mỗi phép thử có \(K\) khả năng (ký hiệu là \(E_1,E_2,\dots,E_K), \sum P(E_k)=1\).
  • Xác suất xảy ra từng khả năng trong mỗi phép thử là bằng nhau và ký hiệu là \(\pi_k, k=1,\dots K\).

Gọi \(X_k\) là số lần xuất hiện khả năng thứ \(k\) trong \(n\) lần thử, khi đó \(X\) được gọi là có phân phối đa thức và được ký hiệu là: \[X\sim Mult(n,\pi), \text{với } \pi=\{\pi_1,\pi_2,\dots, \pi_k\}\] khi đó: \[P(X_1=r_1,X_2=r_2,\dots,X_K=r_K)=\frac{n!}{r_1!r_2!\dots r_K!}\pi_1^{r_1}\pi_2^{r_2}\dots\pi_K^{r_K}\]

Hồi quy logistic cho dữ liệu định danh

Multinomial Logistic Regression

Khi biến phụ thuộc (định tính) có \(K\) biểu hiện:

  • Các biểu hiện sẽ được mã hóa thành \(\{1,\dots,K\}\).
  • Tương ứng với mỗi biểu hiện chúng ta sẽ xây dựng một hàm hồi quy, trừ 1 biểu hiện được chọn làm chuẩn (chúng ta chọn biểu hiện cuối để làm chuẩn).

\[\ln\left(\frac{\pi_i}{\pi_K}\right) = \beta_{0i}+\beta_{1i}X, i=1,\dots,K-1\tag{4}\] Từ (4) ta có: \[\pi_i = \pi_Ke^{\beta_{0i} + \beta_{1i}X}, i=1,\dots,K-1 \tag{5}\] Do tổng xác suất là 1 \((\pi_1+\pi_2+\dots + \pi_K =1)\) nên: \[\pi_Ke^{\beta_{01} + \beta_{11}X} + \pi_Ke^{\beta_{02} + \beta_{12}X}+\dots +\pi_K =1\] suy ra: \[\pi_K = \frac{1}{1+\sum_{j=1}^{K-1} e^{\beta_{0j}+\beta_{1j}X}}\]

Thay vào (5): \[\pi_i = \frac{e^{\beta_{0i} + \beta_{1i}X}}{1+\sum_{j=1}^{K-1} e^{\beta_{0j}+\beta_{1j}X}}\]

Hồi quy logistic cho dữ liệu định danh

Ví dụ: Chúng ta sử dụng bộ dữ liệu iris để làm ví dụ

data(iris)
library(VGAM)
reg <- vglm(Species ~ Sepal.Length, family=multinomial,data =iris)
reg

Kết quả:


Call:
vglm(formula = Species ~ Sepal.Length, family = multinomial, 
    data = iris)


Coefficients:
 (Intercept):1  (Intercept):2 Sepal.Length:1 Sepal.Length:2 
        38.759         12.677         -6.846         -2.031 

Degrees of Freedom: 300 Total; 296 Residual
Residual deviance: 182.1 
Log-likelihood: -91.03 

This is a multinomial logit model with 3 levels

Nghĩa là: \[\ln\left(\frac{\pi_1}{\pi_3}\right) = 38.759-6.846*Sepal.Length\\ \ln\left(\frac{\pi_2}{\pi_3}\right) = 12.677-2.031*Sepal.Length\]

Hàm xác suất tích lũy

Cho \(X\) là biến ngẫu nhiên, hàm: \[F(x) = P(X\le x)\] được gọi là hàm xác suất tích lũy của \(X\).

  • \(F(x) = P(X\le x) = \sum_j P(X= x_j)\) nếu \(X\) là biến ngẫu nhiên rời rạc.
  • \(F(x) = P(X\le x) =\int_{-\infty}^xf(x)dx\) nếu \(X\) là biến ngẫu nhiên liên tục với \(f(x)\) là hàm mật độ xác suất.

Hồi quy logistic cho dữ liệu thứ bậc

Ordinal Logistic Regression

Khi biến phụ thuộc (định tính) có \(K\) biểu hiện, các biểu hiện được xắp xếp theo thứ tự tăng dần:

  • Các biểu hiện sẽ được mã hóa thành \(\{1,\dots,K\}\).
  • Xác suất hiện biểu hiện thứ \(i\)\(\pi_i\).
  • Mỗi biểu hiện chúng ta sẽ xây dựng một hàm hồi quy: \[\ln\left(\frac{P(Y \leq j)}{P(Y > j)}\right)= \ln\left(\frac{P(Y \leq j)}{1-P(Y \le j)}\right)=\beta_{0j}+\beta_{1j}X \quad\mbox{với }j=1,\dots,K-1 \tag{a}\] \[\begin{array}{rcl} L_1 &=& \ln\left(\dfrac{\pi_1}{\pi_2+\pi_3+\cdots+\pi_K}\right)\\ L_2 &=& \ln\left(\dfrac{\pi_1+\pi_2}{\pi_3+\pi_4+\cdots+\pi_K}\right)\\ & \vdots & \\ L_{K-1} &=& \ln\left(\dfrac{\pi_1+\pi_2+\cdots+\pi_{r-1}}{\pi_K}\right) \end{array}\]

Từ \((a)\) suy ra: \[P(Y \leq j)=\frac{e^{\beta_{0j}+\beta_{1j}X}}{1+e^{\beta_{0j}+\beta_{1j}X}}\]

Hồi quy logistic cho dữ liệu thứ bậc

Ví dụ:

library(foreign)
d <- read.spss('ologit.sav')
d <- as.data.frame(d)
d$apply <- ordered(d$apply)
d$pared <- factor(d$pared)
d$public <- factor(d$public)
head(d)
  apply pared public  gpa
1     2     0      0 3.26
2     1     1      0 3.21
3     0     1      1 3.94
4     1     0      0 2.81
5     1     0      0 2.53
6     0     0      1 2.59

Giải thích bộ dữ liệu:

  • Biến apply = {0,1,2}, tương ứng với việc nộp hồ sơ vào: Trung cấp, Cao đẳng, Đại học.
  • Bến pared = {0,1}, tương ứng với việc Bố/Mẹ Không/Có trình độ đại học.
  • Biến public = {0,1}, tương ứng với việc nộp hồ sơ vào Trường công/Trường tư.
  • Biến gpa: Là điểm trung bình.

Chạy mô hình:

library(VGAM)
reg <- vglm(apply ~ gpa, family=cumulative(parallel=F), d)
reg

Kết quả:


Call:
vglm(formula = apply ~ gpa, family = cumulative(parallel = F), 
    data = d)


Coefficients:
(Intercept):1 (Intercept):2         gpa:1         gpa:2 
       2.1817        5.4763       -0.6595       -1.0698 

Degrees of Freedom: 800 Total; 796 Residual
Residual deviance: 731.6 
Log-likelihood: -365.8 

Nghĩa là: \[ \ln\left(\frac{P(Y \leq 0)}{P(Y > 0)}\right)=2.1817-0.6595*gpa \\ \ln\left(\frac{P(Y \leq 1)}{P(Y > 1)}\right)=5.4763-1.0698*gpa \]

Hồi quy Poisson cho dữ liệu đếm

Poisson regression for count data.

Khi biến phụ thuộc là số lần xuất hiện biến cố mà chúng ta quan tâm trong một đơn vị thời gian, ví dụ:

  • Số tàu chở hàng bị sóng đánh hỏng trong 1 năm.
  • Số vụ tai nạn xe hơi hàng ngày trên hệ thống đường cao tốc.
  • Số bạn của một đứa trẻ trong một lớp học.
  • Số ổ đĩa cứng bị hư trong 1 tháng tại một trung tâm lưu trữ dữ liệu.
  • Số sự cố về máy chủ tại các trung tâm dữ liệu.

Nhắc lại phân phối Poisson: \(X \sim P(\mu), E(X) = var(X) = \mu\). Và \[P(X=x) = \frac{e^{-\mu}\mu^x}{x!} \]

Hồi quy Poisson cho dữ liệu đếm

\[\ln(\mu) = \beta_0 +\beta_1X \tag{a}\] Từ (a) ta có: \(\mu = e^{\beta_0+\beta_1X}\)

Ví dụ:

Bộ dữ liệu crab:

  color spine width satellite weight y
1     3     3  28.3         8   3050 1
2     4     3  22.5         0   1550 0
3     2     1  26.0         9   2300 1
4     4     3  24.8         0   2100 0
5     4     3  26.0         4   2600 1
6     3     3  23.8         0   2100 0
library(xlsx)
cr <- read.xlsx("./data/crab.xlsx", sheetIndex = 1, header = T)
PoiRegC <- glm(satellite ~ width + weight, family = poisson(link = 'log'), data = cr)

Kết quả thu được là:


Call:  glm(formula = satellite ~ width + weight, family = poisson(link = "log"), 
    data = cr)

Coefficients:
(Intercept)        width       weight  
  -1.295211     0.046076     0.000447  

Degrees of Freedom: 172 Total (i.e. Null);  170 Residual
Null Deviance:      633 
Residual Deviance: 560  AIC: 921

Vậy hàm hồi quy là: \[\ln(\mu) = -1.295211+0.046076\times width+0.000447\times weight\]

Hồi quy Poisson cho dữ liệu tỷ lệ

Poisson regression for rate data.

Khi dữ liệu đếm (count data) không cùng đơn vị chúng ta cần phải đưa về dạng cùng đơn vị và dùng mô hình:

\[\ln \left(\frac{\mu}{t}\right)=\ln(\mu)-\ln(t) =\beta_0+\beta_1X \tag{b}\] Ví dụ: Bộ dữ liệu cancer

        city   age  pop cases
1 Fredericia 40-54 3059    11
2    Horsens 40-54 2879    13
3    Kolding 40-54 3142     4
4      Vejle 40-54 2520     5
5 Fredericia 55-59  800    11
6    Horsens 55-59 1083     6

Lưu ý: Trong trường hợp này biến phụ thuộc là cases. Nếu để nguyên biến cases để hồi quy thì điều này không hợp lý vì liên quan đến dân số, nên chúng ta phải hồi quy biến phụ thuộc sẽ phải biến đổi thành \(\mu/pop\). Lúc chúng ta sẽ sử dụng mô hình (b).

Xử lý dữ liệu:

library(tidyverse)
ca <- ca %>% mutate(agecoded = case_when(
  age == '40-54' ~ 47,
  age == '55-59' ~ 57,
  age == '60-64' ~ 62,
  age == '65-69' ~ 67,
  age == '70-74' ~ 72,
  age == '75+' ~ 77
))
ca <- ca %>% mutate(lpop=log(pop))

Chạy mô hình và kết quả:

PoiRegR <- glm(cases ~ agecoded, offset = lpop, family=poisson(link = 'log'), data = ca)
PoiRegR

Call:  glm(formula = cases ~ agecoded, family = poisson(link = "log"), 
    data = ca, offset = lpop)

Coefficients:
(Intercept)     agecoded  
    -7.9317       0.0521  

Degrees of Freedom: 23 Total (i.e. Null);  22 Residual
Null Deviance:      130 
Residual Deviance: 55.3     AIC: 156

Vậy hàm hồi quy là: \[\ln(\mu) = ln(pop) + \beta_0 + \beta_1\times agecoded = -7.9317 + 0.0521\times agecoded\]

Yêu cầu thực hành

Chọn một vấn đề hoặc một bộ dữ liệu mà biến phân tích là biến định tính, biến độc lập vừa có biến định tính vừa có biến định lượng. Thực hiện các yêu cầu sau:

  1. Lập bảng tần số, vẽ đồ thị cho biến phân tích (biến phụ thuộc).
  2. Ước lượng tỷ lệ cho các biểu hiện của biến phân tích.
  3. Lập bảng ngẫu nhiên cho biến phân tích và các biến độc lập.
  4. Ước lượng tỷ lệ và chênh lệch 2 tỷ lệ cho các biểu hiện của biến phân tích và biến độc lập.
  5. Tính và ước lượng khoảng cho Relative risk.
  6. Tính và ước lượng khoảng cho Odd ratio.
  7. Kiểm định tính độc lập.
  8. Chạy các mô hình hồi quy cho dữ liệu nhị phân.
  9. Chạy mô hình hồi quy cho dữ liệu nhiều hơn 2 biểu hiện.
  10. Chạy mô hình hồi quy cho dữ liệu thứ bậc.
  11. Chạy mô hình hồi quy Poisson cho dữ liệu đếm.
  12. Chạy mô hình hồi quy Poisson cho dữ liệu tỷ lệ.

Lưu ý: Tất cả các bước đều phải có nhận xét! ## Data https://vincentarelbundock.github.io/Rdatasets/articles/data.html

  • Trang web này liệt kê rất nhiều (2k+) bộ dữ liệu (datasets).
  • Có nhiều dữ liệu định tính.
  • Có giải thích về các bộ dữ liệu.