[{"data":1,"prerenderedAt":1346},["ShallowReactive",2],{"navigation_docs":3,"-statistic-cramers-v-for-categorical-association":352,"-statistic-cramers-v-for-categorical-association-surround":1341},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":193,"body":354,"description":1328,"extension":1329,"links":1330,"meta":1331,"navigation":840,"path":194,"seo":1339,"stem":195,"__hash__":1340},"docs/statistic/cramers-v-for-categorical-association.md",{"type":355,"value":356,"toc":1311},"minimark",[357,362,371,414,417,434,437,448,455,462,465,471,474,479,486,489,493,502,505,516,519,564,567,579,582,587,589,593,600,603,606,609,620,623,639,642,649,652,654,658,665,670,677,726,729,742,745,748,759,762,768,771,779,781,785,792,795,899,902,917,920,998,1001,1003,1007,1010,1015,1021,1034,1041,1046,1053,1087,1089,1097,1103,1107,1110,1115,1117,1144,1147,1150,1158,1162,1168,1170,1222,1225,1230,1232,1236,1239,1243,1246,1251,1254,1259,1263,1266,1274,1277,1289,1292,1294,1297,1304,1307],[358,359,361],"h2",{"id":360},"為什麼需要衡量類別變數之間的關聯","為什麼需要衡量「類別變數之間的關聯」？",[363,364,365,366,370],"p",{},"在資料分析與機器學習中，我們常會遇到",[367,368,369],"strong",{},"類別型資料（categorical data）","，例如：",[372,373,374,387],"table",{},[375,376,377],"thead",{},[378,379,380,384],"tr",{},[381,382,383],"th",{},"customer_gender",[381,385,386],{},"payment_method",[388,389,390,399,407],"tbody",{},[378,391,392,396],{},[393,394,395],"td",{},"male",[393,397,398],{},"credit_card",[378,400,401,404],{},[393,402,403],{},"female",[393,405,406],{},"paypal",[378,408,409,411],{},[393,410,395],{},[393,412,413],{},"bank_transfer",[363,415,416],{},"這類資料的特點是：",[418,419,420,427],"ul",{},[421,422,423,424],"li",{},"資料不是數值，而是",[367,425,426],{},"分類",[421,428,429,430,433],{},"無法直接用 ",[367,431,432],{},"相關係數（correlation）"," 來衡量關係",[363,435,436],{},"例如：",[418,438,439,442,445],{},[421,440,441],{},"性別 vs 付款方式",[421,443,444],{},"城市 vs 商品類型",[421,446,447],{},"職業 vs 是否購買保險",[363,449,450,451,454],{},"這些變數之間可能存在某種關聯，但因為它們不是連續數值，我們不能直接使用 ",[367,452,453],{},"Pearson correlation"," 來測量。",[363,456,457,458,461],{},"因此，在統計學中，我們通常會使用 ",[367,459,460],{},"卡方檢定（Chi-square test）"," 來判斷兩個類別變數是否相關。",[363,463,464],{},"但卡方檢定只能回答一個問題：",[466,467,468],"blockquote",{},[363,469,470],{},"兩個變數是否存在關係？",[363,472,473],{},"卻沒有告訴我們：",[466,475,476],{},[363,477,478],{},"關係有多強？",[363,480,481,482,485],{},"這時候就會使用 ",[367,483,484],{},"Cramér’s V","。",[487,488],"hr",{},[358,490,492],{"id":491},"cramérs-v-是什麼","Cramér’s V 是什麼？",[363,494,495,497,498,501],{},[367,496,484],{}," 是一種用來衡量 ",[367,499,500],{},"兩個類別變數之間關聯強度（association strength）"," 的統計指標。",[363,503,504],{},"它的值介於：",[506,507,513],"pre",{"className":508,"code":510,"language":511,"meta":512},[509],"language-text","0 ≤ Cramér’s V ≤ 1\n","text","",[514,515,510],"code",{"__ignoreMap":512},[363,517,518],{},"含義如下：",[372,520,521,530],{},[375,522,523],{},[378,524,525,527],{},[381,526,484],{},[381,528,529],{},"解釋",[388,531,532,540,548,556],{},[378,533,534,537],{},[393,535,536],{},"0",[393,538,539],{},"完全沒有關聯",[378,541,542,545],{},[393,543,544],{},"0.1 ~ 0.3",[393,546,547],{},"弱關聯",[378,549,550,553],{},[393,551,552],{},"0.3 ~ 0.5",[393,554,555],{},"中等關聯",[378,557,558,561],{},[393,559,560],{},"> 0.5",[393,562,563],{},"強關聯",[363,565,566],{},"換句話說：",[418,568,569,574],{},[421,570,571],{},[367,572,573],{},"越接近 0 → 幾乎沒有關係",[421,575,576],{},[367,577,578],{},"越接近 1 → 關係越強",[363,580,581],{},"Cramér’s V 可以視為：",[466,583,584],{},[363,585,586],{},"類別變數版本的相關係數。",[487,588],{},[358,590,592],{"id":591},"cramérs-v-與卡方檢定的關係","Cramér’s V 與卡方檢定的關係",[363,594,595,596,599],{},"Cramér’s V 的計算其實是建立在 ",[367,597,598],{},"卡方統計量（Chi-square statistic）"," 之上。",[363,601,602],{},"公式如下：",[363,604,605],{},"$$\nV = \\sqrt{\\frac{\\chi^2}{n \\times (k-1)}}\n$$",[363,607,608],{},"其中：",[418,610,611,614,617],{},[421,612,613],{},"$\\chi^2$：卡方統計量",[421,615,616],{},"$n$：樣本數",[421,618,619],{},"$k$：列或欄中較小的類別數",[363,621,622],{},"簡單理解：",[624,625,626,633],"ol",{},[421,627,628,629,632],{},"先透過 ",[367,630,631],{},"卡方檢定"," 算出變數之間的差異程度",[421,634,635,636],{},"再將結果",[367,637,638],{},"標準化到 0~1 之間",[363,640,641],{},"因此 Cramér’s V 本質上就是：",[466,643,644],{},[363,645,646],{},[367,647,648],{},"卡方檢定結果的標準化版本",[363,650,651],{},"讓我們更容易理解關聯強度。",[487,653],{},[358,655,657],{"id":656},"用一個簡單例子理解-cramérs-v","用一個簡單例子理解 Cramér’s V",[363,659,660,661,664],{},"假設我們分析一個 ",[367,662,663],{},"電商資料集","，想知道：",[466,666,667],{},[363,668,669],{},"性別與付款方式是否有關聯？",[363,671,672,673,676],{},"我們整理出以下 ",[367,674,675],{},"交叉表（contingency table）","：",[372,678,679,696],{},[375,680,681],{},[378,682,683,686,690,693],{},[381,684,685],{},"Gender",[381,687,689],{"align":688},"right","Credit Card",[381,691,692],{"align":688},"PayPal",[381,694,695],{"align":688},"Bank Transfer",[388,697,698,712],{},[378,699,700,703,706,709],{},[393,701,702],{},"Male",[393,704,705],{"align":688},"120",[393,707,708],{"align":688},"60",[393,710,711],{"align":688},"20",[378,713,714,717,720,723],{},[393,715,716],{},"Female",[393,718,719],{"align":688},"80",[393,721,722],{"align":688},"140",[393,724,725],{"align":688},"30",[363,727,728],{},"從表面上看：",[418,730,731,737],{},[421,732,733,734],{},"男性比較常用 ",[367,735,736],{},"信用卡",[421,738,739,740],{},"女性比較常用 ",[367,741,692],{},[363,743,744],{},"但這只是直覺觀察。",[363,746,747],{},"如果我們進一步計算：",[418,749,750,755],{},[421,751,752],{},[367,753,754],{},"Chi-square test",[421,756,757],{},[367,758,484],{},[363,760,761],{},"假設結果為：",[506,763,766],{"className":764,"code":765,"language":511,"meta":512},[509],"Cramér’s V = 0.32\n",[514,767,765],{"__ignoreMap":512},[363,769,770],{},"這代表：",[466,772,773],{},[363,774,775,776,485],{},"性別與付款方式之間存在 ",[367,777,778],{},"中等程度的關聯",[487,780],{},[358,782,784],{"id":783},"python-實作-cramérs-v","Python 實作 Cramér’s V",[363,786,787,788,791],{},"在 Python 中，我們可以透過 ",[514,789,790],{},"scipy"," 計算 Cramér’s V。",[363,793,794],{},"首先建立交叉表：",[506,796,800],{"className":797,"code":798,"language":799,"meta":512,"style":512},"language-python shiki shiki-themes github-dark","import numpy as np\nfrom scipy.stats import chi2_contingency\n\ntable = np.array([\n    [120, 60, 20],\n    [80, 140, 30]\n])\n","python",[514,801,802,821,835,842,854,875,893],{"__ignoreMap":512},[803,804,807,811,815,818],"span",{"class":805,"line":806},"line",1,[803,808,810],{"class":809},"snl16","import",[803,812,814],{"class":813},"s95oV"," numpy ",[803,816,817],{"class":809},"as",[803,819,820],{"class":813}," np\n",[803,822,824,827,830,832],{"class":805,"line":823},2,[803,825,826],{"class":809},"from",[803,828,829],{"class":813}," scipy.stats ",[803,831,810],{"class":809},[803,833,834],{"class":813}," chi2_contingency\n",[803,836,838],{"class":805,"line":837},3,[803,839,841],{"emptyLinePlaceholder":840},true,"\n",[803,843,845,848,851],{"class":805,"line":844},4,[803,846,847],{"class":813},"table ",[803,849,850],{"class":809},"=",[803,852,853],{"class":813}," np.array([\n",[803,855,857,860,863,866,868,870,872],{"class":805,"line":856},5,[803,858,859],{"class":813},"    [",[803,861,705],{"class":862},"sDLfK",[803,864,865],{"class":813},", ",[803,867,708],{"class":862},[803,869,865],{"class":813},[803,871,711],{"class":862},[803,873,874],{"class":813},"],\n",[803,876,878,880,882,884,886,888,890],{"class":805,"line":877},6,[803,879,859],{"class":813},[803,881,719],{"class":862},[803,883,865],{"class":813},[803,885,722],{"class":862},[803,887,865],{"class":813},[803,889,725],{"class":862},[803,891,892],{"class":813},"]\n",[803,894,896],{"class":805,"line":895},7,[803,897,898],{"class":813},"])\n",[363,900,901],{},"接著計算卡方統計量：",[506,903,905],{"className":797,"code":904,"language":799,"meta":512,"style":512},"chi2, p, dof, expected = chi2_contingency(table)\n",[514,906,907],{"__ignoreMap":512},[803,908,909,912,914],{"class":805,"line":806},[803,910,911],{"class":813},"chi2, p, dof, expected ",[803,913,850],{"class":809},[803,915,916],{"class":813}," chi2_contingency(table)\n",[363,918,919],{},"最後計算 Cramér’s V：",[506,921,923],{"className":797,"code":922,"language":799,"meta":512,"style":512},"n = table.sum()\nk = min(table.shape)\ncramers_v = np.sqrt(chi2 / (n * (k - 1)))\n\nprint(\"Cramér's V:\", cramers_v)\n",[514,924,925,935,948,979,983],{"__ignoreMap":512},[803,926,927,930,932],{"class":805,"line":806},[803,928,929],{"class":813},"n ",[803,931,850],{"class":809},[803,933,934],{"class":813}," table.sum()\n",[803,936,937,940,942,945],{"class":805,"line":823},[803,938,939],{"class":813},"k ",[803,941,850],{"class":809},[803,943,944],{"class":862}," min",[803,946,947],{"class":813},"(table.shape)\n",[803,949,950,953,955,958,961,964,967,970,973,976],{"class":805,"line":837},[803,951,952],{"class":813},"cramers_v ",[803,954,850],{"class":809},[803,956,957],{"class":813}," np.sqrt(chi2 ",[803,959,960],{"class":809},"/",[803,962,963],{"class":813}," (n ",[803,965,966],{"class":809},"*",[803,968,969],{"class":813}," (k ",[803,971,972],{"class":809},"-",[803,974,975],{"class":862}," 1",[803,977,978],{"class":813},")))\n",[803,980,981],{"class":805,"line":844},[803,982,841],{"emptyLinePlaceholder":840},[803,984,985,988,991,995],{"class":805,"line":856},[803,986,987],{"class":862},"print",[803,989,990],{"class":813},"(",[803,992,994],{"class":993},"sU2Wk","\"Cramér's V:\"",[803,996,997],{"class":813},", cramers_v)\n",[363,999,1000],{},"執行後就可以得到兩個變數之間的關聯強度。",[487,1002],{},[358,1004,1006],{"id":1005},"cramérs-v-在機器學習中的用途","Cramér’s V 在機器學習中的用途",[363,1008,1009],{},"在資料科學實務中，Cramér’s V 常用於：",[1011,1012,1014],"h3",{"id":1013},"_1-feature-selection特徵選擇","1) Feature selection（特徵選擇）",[363,1016,1017,1018,676],{},"如果你的資料有很多 ",[367,1019,1020],{},"categorical feature",[418,1022,1023,1026,1029,1032],{},[421,1024,1025],{},"country",[421,1027,1028],{},"job",[421,1030,1031],{},"device_type",[421,1033,386],{},[363,1035,1036,1037,1040],{},"可以透過 ",[367,1038,1039],{},"Cramér’s V vs target"," 來判斷：",[466,1042,1043],{},[363,1044,1045],{},"哪些類別特徵與目標變數最相關。",[363,1047,1048,1049,1052],{},"例如在 ",[367,1050,1051],{},"詐欺偵測模型"," 中：",[372,1054,1055,1064],{},[375,1056,1057],{},[378,1058,1059,1062],{},[381,1060,1061],{},"Feature",[381,1063,484],{"align":688},[388,1065,1066,1073,1080],{},[378,1067,1068,1070],{},[393,1069,386],{},[393,1071,1072],{"align":688},"0.41",[378,1074,1075,1077],{},[393,1076,1031],{},[393,1078,1079],{"align":688},"0.28",[378,1081,1082,1084],{},[393,1083,1025],{},[393,1085,1086],{"align":688},"0.05",[363,1088,770],{},[418,1090,1091,1094],{},[421,1092,1093],{},"payment_method → 重要特徵",[421,1095,1096],{},"country → 幾乎沒有關聯",[363,1098,1099,1100,485],{},"因此可以作為 ",[367,1101,1102],{},"特徵篩選依據",[1011,1104,1106],{"id":1105},"_2-檢查類別特徵之間的關係","2) 檢查類別特徵之間的關係",[363,1108,1109],{},"Cramér’s V 也可以用來檢查：",[466,1111,1112],{},[363,1113,1114],{},"兩個 feature 是否高度相關。",[363,1116,436],{},[372,1118,1119,1131],{},[375,1120,1121],{},[378,1122,1123,1126,1129],{},[381,1124,1125],{},"Feature A",[381,1127,1128],{},"Feature B",[381,1130,484],{"align":688},[388,1132,1133],{},[378,1134,1135,1138,1141],{},[393,1136,1137],{},"city",[393,1139,1140],{},"zipcode",[393,1142,1143],{"align":688},"0.92",[363,1145,1146],{},"這代表兩者幾乎是同一件事情。",[363,1148,1149],{},"如果同時放入模型，可能會造成：",[418,1151,1152,1155],{},[421,1153,1154],{},"資訊冗餘",[421,1156,1157],{},"feature leakage",[1011,1159,1161],{"id":1160},"_3-建立-categorical-correlation-matrix","3) 建立 categorical correlation matrix",[363,1163,1164,1165,485],{},"在 EDA（Exploratory Data Analysis）中，我們甚至可以建立：",[367,1166,1167],{},"Categorical correlation matrix",[363,1169,436],{},[372,1171,1172,1186],{},[375,1173,1174],{},[378,1175,1176,1178,1180,1183],{},[381,1177,1061],{},[381,1179,685],{"align":688},[381,1181,1182],{"align":688},"Device",[381,1184,1185],{"align":688},"Country",[388,1187,1188,1201,1212],{},[378,1189,1190,1192,1195,1198],{},[393,1191,685],{},[393,1193,1194],{"align":688},"1",[393,1196,1197],{"align":688},"0.12",[393,1199,1200],{"align":688},"0.08",[378,1202,1203,1205,1207,1209],{},[393,1204,1182],{},[393,1206,1197],{"align":688},[393,1208,1194],{"align":688},[393,1210,1211],{"align":688},"0.35",[378,1213,1214,1216,1218,1220],{},[393,1215,1185],{},[393,1217,1200],{"align":688},[393,1219,1211],{"align":688},[393,1221,1194],{"align":688},[363,1223,1224],{},"這有點像：",[466,1226,1227],{},[363,1228,1229],{},"categorical version 的 correlation matrix。",[487,1231],{},[358,1233,1235],{"id":1234},"cramérs-v-的限制","Cramér’s V 的限制",[363,1237,1238],{},"雖然 Cramér’s V 很實用，但仍然有一些限制：",[1011,1240,1242],{"id":1241},"_1-不代表因果關係","1) 不代表因果關係",[363,1244,1245],{},"就算 Cramér’s V 很高，也只能說：",[466,1247,1248],{},[363,1249,1250],{},"兩個變數相關",[363,1252,1253],{},"但不能說：",[466,1255,1256],{},[363,1257,1258],{},"A 導致 B。",[1011,1260,1262],{"id":1261},"_2-對樣本數敏感","2) 對樣本數敏感",[363,1264,1265],{},"當樣本數很大時：",[418,1267,1268,1271],{},[421,1269,1270],{},"即使差異很小",[421,1272,1273],{},"也可能得到顯著關聯",[363,1275,1276],{},"因此通常會搭配：",[418,1278,1279,1284],{},[421,1280,1281],{},[367,1282,1283],{},"Chi-square p-value",[421,1285,1286],{},[367,1287,1288],{},"domain knowledge",[363,1290,1291],{},"一起判斷。",[487,1293],{},[358,1295,1296],{"id":1296},"結論",[363,1298,1299,1300,1303],{},"Cramér’s V 是一種用來衡量 ",[367,1301,1302],{},"兩個類別變數之間關聯強度"," 的統計指標，其數值介於 0 到 1 之間。它是建立在卡方檢定之上的標準化指標，因此可以視為「類別資料版本的相關係數」。",[363,1305,1306],{},"在資料科學與機器學習中，Cramér’s V 常被用於特徵選擇、EDA 分析以及檢查類別特徵之間的關聯。透過這個指標，我們可以更清楚地了解資料結構，並幫助模型建立更有效的特徵集合。",[1308,1309,1310],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":512,"searchDepth":823,"depth":823,"links":1312},[1313,1314,1315,1316,1317,1318,1323,1327],{"id":360,"depth":823,"text":361},{"id":491,"depth":823,"text":492},{"id":591,"depth":823,"text":592},{"id":656,"depth":823,"text":657},{"id":783,"depth":823,"text":784},{"id":1005,"depth":823,"text":1006,"children":1319},[1320,1321,1322],{"id":1013,"depth":837,"text":1014},{"id":1105,"depth":837,"text":1106},{"id":1160,"depth":837,"text":1161},{"id":1234,"depth":823,"text":1235,"children":1324},[1325,1326],{"id":1241,"depth":837,"text":1242},{"id":1261,"depth":837,"text":1262},{"id":1296,"depth":823,"text":1296},"介紹 Cramér’s V 的概念、計算方式與實務應用，理解如何衡量兩個類別變數之間的關聯強度。","md",null,{"tags":1332,"category":182,"date":1338},[1333,1334,1335,1336,1337],"statistics","cramers_v","chi_square","feature_analysis","data_science","2026-03-08",{"title":193,"description":1328},"OmeGxh91ZBChuv0HPc-J5jO6uXmpdYZeCtuQbFbWwQg",[1342,1344],{"title":189,"path":190,"stem":191,"description":1343,"children":-1},"介紹統計學中常見的五種抽樣方法，包括分層抽樣、配額抽樣、便利抽樣、系統抽樣與簡單隨機抽樣，並說明其原理與適用情境。",{"title":197,"path":198,"stem":199,"description":1345,"children":-1},"以直觀方式介紹 Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定，理解兩種常見的非參數統計方法，以及在資料科學與機器學習中的實際應用。",1776690844180]