Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e6370e2c3c | |||
| 1bdd9d19af |
@@ -0,0 +1,98 @@
|
||||
# Quy Trình Phân Tích Dữ Liệu Nghiên Cứu UGS & ESS
|
||||
|
||||
## I. MỤC TIÊU CHUNG & CÂU HỎI NGHIÊN CỨU
|
||||
* **Mục tiêu chung:** Đánh giá nhận thức của người dân về giá trị của các Không gian xanh đô thị (UGS) và các Dịch vụ/Phi dịch vụ hệ sinh thái (ESS/DES), qua đó xác định các yếu tố (nhân khẩu học, thói quen và nhận thức) tác động đến các quyết định tài chính của họ (sự sẵn sàng quyên góp bảo tồn công viên và quyết định mua bất động sản gần không gian xanh).
|
||||
* **Các câu hỏi nghiên cứu (Research Questions):**
|
||||
1. Không gian xanh nào cung cấp dịch vụ/phi dịch vụ hệ sinh thái nào?
|
||||
2. Nhận thức của người dân về các ESS có tính hệ thống không?
|
||||
3. Có thể phân chia người dân thành các cụm nhận thức như thế nào? Sự khác biệt về nhận thức giữa các nhóm nhân khẩu học và thói quen ra sao?
|
||||
4. Những yếu tố nào tác động đến quyết định đóng góp tài chính (Donation) và quyết định mua bất động sản (Decision)?
|
||||
|
||||
---
|
||||
|
||||
## II. THÔNG TIN QUAN TRỌNG VỀ DỮ LIỆU & CỠ MẪU
|
||||
* **Tổng cỡ mẫu tối đa:** **307 quan sát (307 hàng)**.
|
||||
* **Nguyên tắc xử lý biến Income:** Do biến `Income` (Thu nhập) bị khuyết thiếu nhiều trong khảo sát và chỉ có **200 quan sát (200 hàng)** có dữ liệu đầy đủ, nên:
|
||||
* Bất kỳ bước phân tích nào sử dụng biến `Income` (như mô tả riêng về Thu nhập hoặc các mô hình Hồi quy kiểm soát Thu nhập) thì **cỡ mẫu bắt buộc phải rút gọn về N = 200**.
|
||||
* Đối với các bước không liên quan đến biến `Income`, sử dụng toàn bộ dữ liệu sạch với cỡ mẫu **N = 307**.
|
||||
|
||||
---
|
||||
|
||||
## III. QUY TRÌNH THỰC HIỆN CHI TIẾT CÁC BƯỚC
|
||||
|
||||
### Bước 0: Thống kê mô tả (Descriptive Statistics)
|
||||
* **Mục tiêu:** Phác họa bức tranh tổng thể về nhân khẩu học của mẫu khảo sát và thói quen tương tác với Không gian xanh đô thị (UGS).
|
||||
* **Các biến sử dụng:**
|
||||
* **Nhân khẩu học:** Giới tính (`Gender`), Thu nhập (`Income`), Học vấn (`Literacy`), Nghề nghiệp (`Career`). *(Lưu ý: Không đưa biến Tuổi - Age vào phân tích)*.
|
||||
* **Thói quen tương tác:** Khoảng cách đến UGS (`Distance`), Tần suất đi (`Frequency`), Thời gian lưu lại (`Time`), Phương tiện di chuyển (`Transportation`).
|
||||
* **Hoạt động thường làm:** `Jogging`, `Workout`, `Petwalking`, `Sightseeing`, `Talking`, `Photography`.
|
||||
* **Thuật toán / Phép thử:** Frequencies (Tần số, Tỷ lệ phần trăm) và Descriptives (Mean, Standard Deviation cho các thang đo Likert).
|
||||
* **Cỡ mẫu áp dụng:** **N = 307** (Riêng đối với các mô tả liên quan trực tiếp đến biến `Income`, cỡ mẫu sử dụng là **N = 200**).
|
||||
* **Kết quả mong muốn:**
|
||||
* Biểu đồ tròn/cột mô tả cơ cấu nhân khẩu học.
|
||||
* Bảng tóm tắt thói quen tương tác của người dân (tần suất, khoảng cách, phương tiện, hoạt động phổ biến).
|
||||
|
||||
---
|
||||
|
||||
### Bước 1: Liên kết loại hình và dịch vụ (CA - Correspondence Analysis)
|
||||
*(Lưu ý: Bước CA được đẩy lên chạy TRƯỚC bước PCA)*
|
||||
* **Câu hỏi nghiên cứu:** Không gian xanh nào cung cấp dịch vụ hệ sinh thái nào?
|
||||
* **Thuật toán:** Phân tích tương ứng (Correspondence Analysis - CA). Tuyệt đối **KHÔNG** sử dụng Phân tích tương quan chính tắc (CCA).
|
||||
* **Các biến đưa vào mô hình:**
|
||||
* **Tập X (UGS):** 7 loại hình không gian xanh gồm `Park`, `Residential`, `Garden`, `Rooftop`, `Recreation`, `Agriculture`, `Nature`.
|
||||
* **Tập Y (ESS/DES):** Các nhóm dịch vụ/phi dịch vụ hệ sinh thái trung bình gồm `MEAN RES`, `MEAN CES`, `MEAN DES`. *(Lưu ý: Không đưa các biến Herb và Biodiversity vào phân tích)*.
|
||||
* **Cỡ mẫu áp dụng:** **N = 307**.
|
||||
* **Kết quả mong muốn:**
|
||||
* Biểu đồ **Biplot 2D** biểu diễn mối quan hệ không gian giữa UGS (tập X) và dịch vụ (tập Y).
|
||||
* **Chỉ số tương quan rho ($\rho$):** Trích xuất chỉ số để đánh giá chính xác mức độ liên kết, xác định loại hình UGS nào cung cấp dịch vụ gì.
|
||||
|
||||
---
|
||||
|
||||
### Bước 2: Kiểm tra cấu trúc nhận thức (PCA)
|
||||
* **Câu hỏi nghiên cứu:** Nhận thức về các ESS có tính hệ thống không?
|
||||
* **Thuật toán:** Phân tích thành phần chính (Principal Component Analysis - PCA) kết hợp phép xoay Varimax để kiểm tra mức độ kết tụ của các biến.
|
||||
* **Các biến đưa vào mô hình:**
|
||||
* **RES (Dịch vụ điều hòa):** `Temperature`, `Noise`, `Stormwind`, `Respiratory`.
|
||||
* **CES (Dịch vụ văn hóa):** `Exercises`, `Culture`, `Beauty`, `Education`, `Society`, `Spirit`.
|
||||
* **DES (Phi dịch vụ):** `Dirty`, `Unsafe`, `Danger`.
|
||||
* *(Lưu ý: Không đưa các biến thuộc nhóm PES/SES vào phân tích)*.
|
||||
* **Cỡ mẫu áp dụng:** **N = 307**.
|
||||
* **Kết quả mong muốn:**
|
||||
* Hệ số **KMO & Bartlett's Test** đạt chuẩn (KMO > 0.6, p < 0.05).
|
||||
* Ma trận xoay nhân tố (**Rotated Component Matrix**) để xem các biến nhận thức có nhóm lại một cách có hệ thống theo các nhân tố lớn hay không.
|
||||
|
||||
---
|
||||
|
||||
### Bước 3: Phân khúc nhận thức theo đặc điểm cư dân (HCA & ANOVA)
|
||||
* **Câu hỏi nghiên cứu:** Các nhóm cư dân với đặc điểm nhân khẩu học và thói quen khác nhau có nhận thức về UGS & ESS khác nhau thế nào?
|
||||
* **Thuật toán:** Phân tích cụm phân cấp (Hierarchical Cluster Analysis - HCA) dựa trên Factor Scores rút ra từ bước PCA. Sau đó dùng kiểm định ANOVA để đánh giá sự khác biệt.
|
||||
* **Quy trình thực hiện:**
|
||||
* **Giai đoạn 3.1 - Gom cụm (HCA):** Dùng phương pháp Ward và khoảng cách Squared Euclidean trên các biến nhận thức trung bình (`MEAN RES`, `MEAN CES`, `MEAN DES`) để chia tập mẫu thành **3 cụm (clusters)** cư dân có đặc điểm nhận thức đồng nhất.
|
||||
* **Giai đoạn 3.2 - Dựng chân dung cụm (Profiling):** Thực hiện so sánh chéo bằng ANOVA hoặc Chi-square:
|
||||
* **Lần so sánh 1 (với Nhân khẩu học):** So sánh 3 cụm nhận thức với các đặc điểm Giới tính (`Gender`), Nghề nghiệp (`Career`), Trình độ học vấn (`Literacy`). *(Lưu ý: Không dùng biến Tuổi - Age)*.
|
||||
* **Lần so sánh 2 (với Thói quen tương tác):** So sánh 3 cụm nhận thức với Khoảng cách (`Distance`), Tần suất đi (`Frequency`), Thời gian lưu lại (`Time`), Phương tiện di chuyển (`Transportation`).
|
||||
* **Cỡ mẫu áp dụng:** **N = 307**.
|
||||
* **Kết quả mong muốn:** Xác định đặc điểm nổi bật của từng cụm nhận thức (Ví dụ: Cụm nhận thức cao chủ yếu có thói quen đi bộ, trình độ học vấn cao...).
|
||||
|
||||
---
|
||||
|
||||
### Bước 4: Hồi quy dự báo hành vi kinh tế (Regression)
|
||||
*Đây là bước phân tích mô hình tác động để dự báo hai quyết định tài chính quan trọng của người dân.*
|
||||
|
||||
#### 4.1. Mô hình quyết định quyên góp (Donation)
|
||||
* **Thuật toán:** Hồi quy Logistic (Binary Logistic Regression) do biến phụ thuộc `Donation` là biến nhị phân (Có/Không).
|
||||
* **Biến phụ thuộc (Y):** `Donation`.
|
||||
* **Biến độc lập (X / Factors):**
|
||||
* **Nhóm nhân khẩu học:** Giới tính (`Gender`), Nghề nghiệp (`Career`), Trình độ học vấn (`Literacy`).
|
||||
* **Nhóm thói quen:** Tần suất (`Frequency`), Khoảng cách (`Distance`), Thời gian (`Time`), Phương tiện di chuyển (`Transportation`).
|
||||
* **8 biến loại hình UGS.**
|
||||
* *(Lưu ý: Không đưa biến Nhận thức về biến đổi khí hậu - 03.Climatechange vào mô hình)*.
|
||||
* **Cỡ mẫu áp dụng:** **N = 200** (Do mô hình có kiểm soát thêm biến Thu nhập - `Income`).
|
||||
* **Kết quả mong muốn:** Hệ số hồi quy Beta, Odds Ratio (EXP(B)) và trị số P-value để xác định nhân tố nào thực sự thúc đẩy/cản trở ý định đóng góp tiền cho công viên của cư dân.
|
||||
|
||||
#### 4.2. Mô hình quyết định mua nhà (Decision)
|
||||
* **Thuật toán:** Hồi quy Logistic nhị phân (Binary Logistic Regression) do biến phụ thuộc `Decision` là biến nhị phân.
|
||||
* **Biến phụ thuộc (Y):** `Decision`.
|
||||
* **Biến độc lập (X / Factors):** Sử dụng **y chang** tập biến độc lập và các nhóm nhân khẩu học, thói quen, UGS của mô hình Donation ở Bước 4.1.
|
||||
* **Cỡ mẫu áp dụng:** **N = 200** (Do mô hình có kiểm soát thêm biến Thu nhập - `Income`).
|
||||
* **Kết quả mong muốn:** Xác định những yếu tố về loại hình không gian xanh, đặc tính nhân khẩu và thói quen di chuyển nào tác động mạnh mẽ nhất đến quyết định chi trả cao hơn để mua bất động sản gần UGS.
|
||||
@@ -0,0 +1,87 @@
|
||||
# Kế hoạch Triển khai: Bước 2 (PCA) và Bước 3 (HCA & Chi-Square)
|
||||
|
||||
Kế hoạch này mô tả chi tiết phương án triển khai lập trình Python cho hai bước phân tích thống kê đa biến tiếp theo: Phân tích thành phần chính (PCA) và Phân tích cụm phân cấp (HCA) kết hợp kiểm định Chi-square, nhằm mục đích đối chiếu và khớp 100% kết quả với JASP mẫu.
|
||||
|
||||
## Proposed Changes
|
||||
|
||||
Để thực hiện phân tích và xuất báo cáo khớp với JASP, chúng tôi đề xuất tạo một script Python mới: `run_pca_hca.py` trong thư mục gốc của dự án.
|
||||
|
||||
### ⚙️ Quy trình xử lý và Thuật toán áp dụng
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["Đọc dữ liệu Data_VN_filter_v5.xlsx"] --> B["Trích xuất 13 biến nhận thức (N=307)"]
|
||||
B --> C["Kiểm định KMO & Bartlett (factor_analyzer)"]
|
||||
C --> D["Tính ma trận tương quan Spearman / Pearson"]
|
||||
D --> E["Phân tích PCA, trích xuất 2 PC chính (eigenvalues > 1)"]
|
||||
E --> F["Xoay ma trận loadings bằng thuật toán Varimax (đồng bộ dấu với JASP)"]
|
||||
F --> G["Tính Standardized Component Scores (Factor Scores)"]
|
||||
G --> H["Phân cụm HCA (phương pháp Ward, khoảng cách Squared Euclidean)"]
|
||||
H --> I["Đánh giá cụm (Silhouette, R², AIC, BIC, Means)"]
|
||||
I --> J["Kiểm định Chi-square & Cramer's V giữa Cụm với Nhân khẩu học và Thói quen"]
|
||||
J --> K["Xuất các bảng kết quả dạng CSV/Markdown & Vẽ đồ thị trực quan"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### [NEW] [run_pca_hca.py](file:///c:/Users/NASPC/Documents/Du%20án%20tại%20SG%20tháng%208/run_pca_hca.py)
|
||||
|
||||
Script Python này sẽ thực hiện toàn bộ quy trình từ kiểm định sơ bộ, chạy PCA, xoay loadings, phân cụm HCA, tính toán thống kê mô tả cụm và chạy các kiểm định Chi-Square profiling.
|
||||
|
||||
#### 1. Bước 2: Principal Component Analysis (PCA)
|
||||
- **Chuẩn hóa dữ liệu:** Sử dụng phân phối mẫu Bessel-corrected chuẩn hóa ($ddof=1$) để tương thích với JASP.
|
||||
- **Kiểm định KMO & Bartlett:**
|
||||
- Sử dụng `factor_analyzer.factor_analyzer.calculate_kmo` cho KMO (Overall & per-variable MSA).
|
||||
- Sử dụng `factor_analyzer.factor_analyzer.calculate_bartlett_sphericity` cho Bartlett.
|
||||
- **PCA & Varimax Rotation:**
|
||||
- Phân tích trị riêng (eigenvalues) và vectơ riêng (eigenvectors) từ ma trận tương quan.
|
||||
- Sử dụng thuật toán xoay trực giao Varimax tự lập trình để đảm bảo độ chính xác cao nhất và tránh lỗi thư viện tương thích.
|
||||
- Đồng bộ hóa dấu (signs alignment) của loadings ( Beauty/Spirit dương ở PC1, Dirty/Unsafe/Danger dương ở PC2) để kết quả khớp hoàn toàn với JASP.
|
||||
- **Thống kê đặc trưng:** Tính Eigenvalues, Proportion Variance, Cumulative Variance cho cả giải pháp chưa xoay và đã xoay.
|
||||
- **Visualizations:**
|
||||
- Scree Plot (Biểu đồ trị riêng để chọn số lượng PC).
|
||||
- Loading Plot (Biểu đồ loadings 2D của PC1 vs PC2).
|
||||
|
||||
#### 2. Bước 3: Hierarchical Cluster Analysis (HCA) & Profiling
|
||||
- **Tính toán Component Scores:** Tính toán điểm số thành phần chuẩn hóa (standardized component scores) để làm đầu vào cho HCA.
|
||||
- **Phân cụm HCA:**
|
||||
- Sử dụng `scipy.cluster.hierarchy.linkage` với phương pháp `ward` và khoảng cách `euclidean` (Squared Euclidean tương đương do thuật toán Ward tối thiểu hóa phương sai nội cụm).
|
||||
- Xác định 3 cụm chính (đối chiếu kích thước cụm là 47, 61, 199).
|
||||
- Tính toán các chỉ số chất lượng phân cụm: $R^2$, AIC, BIC, Silhouette score (Overall & per-cluster).
|
||||
- **Profiling (Chi-Square & Contingency Tables):**
|
||||
- Sử dụng `scipy.stats.chi2_contingency` để chạy kiểm định Chi-square chéo giữa 3 Cụm nhận thức với:
|
||||
- **Nhân khẩu học:** Giới tính, Nghề nghiệp, Trình độ học vấn.
|
||||
- **Thói quen:** Khoảng cách, Tần suất đi, Thời gian lưu lại, Phương tiện di chuyển.
|
||||
- Tính toán hệ số liên hệ: Contingency Coefficient và Cramer's V.
|
||||
- Định dạng bảng đầu ra: Tần số quan sát (Count), Tần số kỳ vọng (Expected Count), và Tỷ lệ hàng (% within row).
|
||||
- **Visualizations:**
|
||||
- Cluster Mean Plot (Biểu đồ cột biểu diễn điểm trung bình PC1 và PC2 của từng cụm).
|
||||
- Cluster Scatter Plot (Phân bố 2D của các đáp viên theo cụm trên không gian PC1 và PC2).
|
||||
|
||||
---
|
||||
|
||||
## Open Questions
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Lưu kết quả phân cụm ngược lại file dữ liệu gốc?**
|
||||
> Bạn có muốn script tự động lưu lại nhãn phân cụm (Cluster ID) của từng đáp viên và điểm số nhân tố (PC1, PC2 Scores) thành các cột mới trong file excel chính `Data_VN_filter_v5.xlsx` để hỗ trợ chạy lại các mô hình hồi quy Logistic ở Bước 4 với độ chính xác cao hơn không?
|
||||
|
||||
---
|
||||
|
||||
## Verification Plan
|
||||
|
||||
### Automated Tests
|
||||
Chúng tôi sẽ chạy script trực tiếp bằng Python venv của dự án và in kết quả ra log để kiểm tra tính đúng đắn:
|
||||
```powershell
|
||||
& "c:\Users\NASPC\Documents\Du án tại SG tháng 8\venv\Scripts\python.exe" run_pca_hca.py
|
||||
```
|
||||
|
||||
### Manual Verification
|
||||
Đối chiếu trực tiếp từng bảng kết quả được in ra với dữ liệu trong file mẫu [PCA n HCA.xlsx](file:///c:/Users/NASPC/Documents/Du%20án%20tại%20SG%20tháng%208/PCA_HCA_sample/PCA%20n%20HCA.xlsx) theo các tiêu chuẩn sau:
|
||||
- **KMO Test:** So sánh giá trị Overall MSA (kỳ vọng: `0.91008`) và MSA của từng biến.
|
||||
- **Bartlett's Test:** So sánh $\chi^2$ (kỳ vọng: `3291.53951`), df (`78`), và p-value (`< .00001`).
|
||||
- **Component Loadings:** So sánh ma trận loadings sau xoay Varimax và Uniqueness của 13 biến.
|
||||
- **Eigenvalues:** So sánh trị riêng của PC1 (`7.27767`) và PC2 (`2.06694`).
|
||||
- **Cluster Sizes:** Đảm bảo số lượng phần tử mỗi cụm khớp chính xác: Cụm 1 = 47, Cụm 2 = 61, Cụm 3 = 199.
|
||||
- **Cluster Means:** Kiểm tra giá trị trung bình điểm PC1 và PC2 của từng cụm (ví dụ: Cụm 1: 0.45761, 1.66282).
|
||||
- **Chi-Square profiling:** Kiểm tra giá trị $\chi^2$, df, p-value của kiểm định chéo với các biến thói quen và nhân khẩu học (ví dụ: chéo với Distance kỳ vọng $\chi^2 = 15.94524$, df = 10, p = 0.10121).
|
||||
Reference in New Issue
Block a user