# Multivariate Analysis

> Skill: multivariate-analysis

- Skill: `kaito41418-ux/multivariate-analysis` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add kaito41418-ux/multivariate-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kaito41418-ux/multivariate-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kaito41418-ux (https://skillmd.com/u/kaito41418-ux)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kaito41418-ux/multivariate-analysis

---


# Skill: multivariate-analysis

多變量分析（PCA / Clustering / MANOVA）與 Word 報告匯出。

## Metadata
- **Description**: 對多變量資料執行主成分分析降維、K-means/階層式聚類、MANOVA 多依變量假設檢驗；輸出載荷矩陣、碎石圖、雙標圖、集群輪廓圖、Box's M 檢驗、Wilks/Pillai 統計量。
- **Version**: 1.0.0
- **Entrypoint**: `orchestrator.py`（CLI: `--source {local,sql,hadoop}` + `--analysis {pca,cluster,manova}` + 對應模式參數）
- **Related**:
  - 假設檢驗：`advanced-data-analytics`
  - 迴歸建模：`regression-analytics`
  - 因素分析（EFA/CFA）：`factor-analysis`
  - 多因子 ANOVA：`factorial-anova`
  - 生存分析：`survival-analysis`

## Analysis Modes

### 1. `pca` — 主成分分析
- **輸入**: 多個連續數值欄位（`--vars X1 X2 ... Xn`；至少 3 個）
- **決策流程**:
  1. **標準化**: 預設 z-score（`--no-scale` 關閉）
  2. **KMO 適當性檢驗**：與 EFA 一致的判定標準
  3. **主成分萃取**：計算所有 PC，依 Kaiser 準則（eigenvalue > 1）自動決定保留數，或 `--n-components` 指定
  4. **輸出**:
     - 特徵值表（每 PC 的解釋變異量、累積比例）
     - 載荷矩陣（loading matrix）
     - **雙標圖 Biplot**（前 2 PC 上的觀測點 + 變量向量）
     - **碎石圖**（Scree Plot）
     - PC 得分表（每個觀測在每個 PC 的分數，供下游使用）

### 2. `cluster` — 聚類分析
- **輸入**: 多個連續數值欄位（`--vars`）
- **方法**（`--method`）:
  - `kmeans`（預設）: K-means 分群
  - `hclust`: 階層式聚類（Ward.D2 連結法）
- **K 值決定** (K-means)（`--k` 覆寫；否則自動）:
  - **Elbow method**（within-cluster SS 曲線）
  - **Silhouette method**（輪廓係數最大）
  - 綜合判定，取眾數
- **輸出**:
  - 分群結果表（每觀測的 cluster label + PC 座標）
  - 每 cluster 的中心點與樣本量
  - **輪廓係數** (Silhouette coefficient)
  - **Cluster viz**（在 PCA 空間投影，用顏色標記 cluster）
  - **Elbow / Silhouette 曲線圖**

### 3. `manova` — 多依變量變異數分析
- **輸入**: 多個連續數值 outcome（`--ys Y1 Y2 ... Yn`；至少 2 個）+ 1 個以上類別因子（`--factors A [B ...]`）
- **決策流程**:
  1. **前置檢驗**:
     - **Box's M 檢驗**（`heplots::boxM`）：多變量方差齊性
     - **Multivariate normality**（每 cell 的 Mardia 檢驗，若 semTools 可用）
  2. **MANOVA**（`manova(cbind(Y1, Y2, ...) ~ factors)`）:
     - **4 種統計量**: Wilks Lambda、Pillai Trace、Hotelling-Lawley Trace、Roy's Greatest Root
     - 每個效應項的多變量 F 值 + df + p 值
  3. **後續分析**（有顯著效應時）:
     - 每個 outcome 的單變量 ANOVA
     - 判別分析（LDA, Linear Discriminant Analysis）作為視覺化
- **輸出**:
  - 前置檢驗表
  - MANOVA 多變量檢驗表
  - 單變量 ANOVA 表（每個 outcome）
  - LDA 投影圖（前 2 個判別函數）

## Output Location

**預設輸出目錄**：`./outcome-temp/`

- `fetched_data.csv`：資料快照
- `Multivariate_Report.docx`：Word 報告
- `pca_biplot.png` / `pca_scree.png`：PCA 圖
- `cluster_viz.png` / `elbow_silhouette.png`：Cluster 圖
- `lda_plot.png`：MANOVA LDA 投影圖

## Workflow (SOP)
1. **fetch**: schema 校驗（欄位存在、型別對）+ 零方差偵測
2. **execute**: 依 analysis mode 分派到對應 R body
3. **render**: 依 analysis mode 動態組裝章節
4. **交付**: `.docx` 落地在 output-dir

## Constraints
- PCA/Cluster: `--vars` 中所有欄位需為連續數值，非常數
- MANOVA: `--ys` 每個必為連續數值；`--factors` 為類別
- Listwise deletion：任一必需欄位為 NA 的列丟棄
- PCA/Cluster 預設標準化（z-score），避免尺度差異主導結果

## Dependencies
- Python 3.10+: `pandas sqlalchemy python-docx openpyxl pyhive thrift thrift-sasl pure-sasl`
- R 4.x:
  - **必要**: `ggplot2 jsonlite psych cluster factoextra`
  - **MANOVA 專用**: `heplots MASS`
  - **可選**: `showtext sysfonts` (CJK 字型)

