
前面的假設檢驗、方差分析基本上都是圍繞差異性分析,不論是單個總體還是兩個總體及以上,總之都是屬于研究“區別”,從本節開始,我們關注“聯系”,變量之間的關系分為 函數關系和相關關系。 本節這里重點探討的是不同類型變量之間的相關性,千萬記住一點相關性不代表因果性。除表中列出的常用方法外,還有Tetrachoric、相關系數等。
變量類型 | 變量類型 | 相關系數計算方法 | 示例 |
---|---|---|---|
連續型變量 | 連續型變量 | Pearson(正態)/Spearman(非正態) | 商品曝光量和購買轉化率 |
二分類變量(無序) | 連續型變量 | Point-biserial | 性別和疾病指數 |
無序分類變量 | 連續型變量 | 方差分析 | 不同教育水平的考試成績 |
有序分類變量 | 連續型變量 | 連續指標離散化后當做有序分類 | 商品評分與購買轉化率 |
二分類變量 | 二分類變量 | 數學公式: 檢驗 聯合 Cramer's V | 性別和是否吸煙 |
二分類變量(有序) | 連續型變量 | Biserial | 樂器練習時間與考級是否通過 |
無序分類變量 | 無序分類變量 | 數學公式: 檢驗 / Fisher檢驗 | 手機品牌和年齡段 |
有序分類變量 | 無序分類變量 | 數學公式: 檢驗 | 滿意度和手機品牌 |
有序分類變量 | 有序分類變量 | Spearman /Kendall Tau相關系數 | 用戶等級和活躍程度等級 |
Pearson相關系數度量了兩個連續變量之間的線性相關程度;
import random
import numpy as np
import pandas as pd
np.random.seed(10)
df = pd.DataFrame({'商品曝光量':[1233,1333,1330,1323,1323,1142,1231,1312,1233,1123],
'購買轉化率':[0.033,0.034,0.035,0.033,0.034,0.029,0.032,0.034,0.033,0.031]})
df
pd.Series.corr(df['商品曝光量'], df['購買轉化率'],method = 'pearson') # pearson相關系數
# 0.885789300493948
import scipy.stats as stats
# 假設有兩個變量X和Y
X = df['商品曝光量']
Y = df['購買轉化率']
# 使用spearmanr函數計算斯皮爾曼相關系數和p值
corr, p_value = stats.pearsonr(X, Y)
print("Pearson相關系數:", corr)
print("p值:", p_value)
# Pearson相關系數: 0.8857893004939478
# p值: 0.0006471519603654732
Spearman等級相關系數可以衡量非線性關系變量間的相關系數,是一種非參數的統計方法,可以用于定序變量或不滿足正態分布假設的等間隔數據;
import random
import numpy as np
import pandas as pd
np.random.seed(10)
df = pd.DataFrame({'品牌知名度排位':[9,4,3,6,5,8,1,7,10,2],
'售后服務質量評價排位':[8,2,5,4,7,9,1,6,10,3]})
df
pd.Series.corr(df['品牌知名度排位'], df['售后服務質量評價排位'],method = 'spearman') # spearman秩相關
# 0.8787878787878788
import scipy.stats as stats
# 假設有兩個變量X和Y
X = df['品牌知名度排位']
Y = df['售后服務質量評價排位']
# 使用spearmanr函數計算斯皮爾曼相關系數和p值
corr, p_value = stats.spearmanr(X, Y)
print("斯皮爾曼相關系數:", corr)
print("p值:", p_value)
# 斯皮爾曼相關系數: 0.8787878787878788
# p值: 0.0008138621117322101
結論:p = 0.0008<0.05
,表明兩變量之間的正向關系很顯著。
假設我們想要研究性別對于某種疾病是否存在影響。我們有一個二元變量“性別”(男、女)和一個連續型變量“疾病指數”。我們想要計算性別與疾病指數之間的相關系數,就需要用到Point-biserial相關系數。
import scipy.stats as stats
# 創建一個列表來存儲數據
gender = [0, 1, 0, 1, 1, 0]
disease_index = [3.2, 4.5, 2.8, 4.0, 3.9, 3.1]
# 使用pointbiserialr函數計算Point-biserial相關系數和p值
corr, p_value = stats.pointbiserialr(gender, disease_index)
print("Point-biserial相關系數:", corr)
print("p值:", p_value)
# Point-biserial相關系數: 0.9278305692406299
# p值: 0.007624695507848026
結論:p = 0.007<0.05
,表明兩變量之間的正向關系很顯著。即性別與疾病指數正相關
假設我們想要比較不同教育水平的學生在CDA考試成績上是否存在顯著差異。我們有一個無序分類變量“教育水平”(高中、本科、研究生)和一個連續型變量“考試成績”。
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# 創建一個DataFrame來存儲數據
data = pd.DataFrame({
'教育水平': ['高中', '本科', '本科', '研究生', '高中', '本科', '研究生'],
'考試成績': [80, 90, 85, 95, 75, 88, 92]
})
# 使用ols函數創建一個線性模型
model = ols('考試成績 ~ C(教育水平)', data=data).fit()
# 使用anova_lm函數進行方差分析
anova_table = sm.stats.anova_lm(model, typ=2)
anova_table
結論:p = 0.0102<0.05
,拒絕原假設,表明兩變量之間的正向關系很顯著。教育水平與考試成績正相關
將連續型變量離散化后當做有序分類,然后用 有序分類變量 VS 有序分類變量的方法
一項研究調查了不同性別的成年人對在公眾場合吸煙的態度,結果如表所示。那么,性別與對待吸煙的態度之間的相關程度
- | 贊同 | 反對 |
---|---|---|
男 | 15 | 10 |
女 | 10 | 26 |
import numpy as np
from scipy.stats import chi2_contingency
observed = np.array([[15, 10],
[10, 26]])
observed
chi2, p, dof, expected = chi2_contingency(observed,correction =False) # correction =False
# 卡方值
# P值
# 自由度:
# 與原數據數組同維度的對應期望值
chi2, p
#(6.3334567901234555, 0.011848116168529757)
結論:p = 0.0118<0.05
,拒絕原假設,表明兩變量之間的正向關系很顯著。
phi = np.sqrt(chi2/n)
print("phi's V:", phi)
# phi's V: 0.3222222222222222
這里只列出 指標 和 Cramer V指標 的計算,其他計算方式請讀者自行研究。
# 計算Cramer's V
contingency_table = observed
n = contingency_table.sum().sum()
phi_corr = np.sqrt(chi2 / (n * min(contingency_table.shape) - 1))
v = phi_corr / np.sqrt(min(contingency_table.shape) - 1)
print("Cramer's V:", v)
# Cramer's V: 0.22878509151645754
import numpy as np
from scipy.stats import pearsonr
# 生成隨機的二元變量
binary_variable = np.random.choice([0, 1], size=100)
# 生成隨機的連續變量
continuous_variable = np.random.normal(loc=0, scale=1, size=100)
# 注:此處的代碼未經嚴格考證,請謹慎使用
def biserial_correlation(binary_variable, continuous_variable):
binary_variable_bool = binary_variable.astype(bool)
binary_mean = np.mean(binary_variable_bool)
binary_std = np.std(binary_variable_bool)
binary_variable_norm = (binary_variable_bool - binary_mean) / binary_std
corr, _ = pearsonr(binary_variable_norm, continuous_variable)
biserial_corr = corr * (np.std(continuous_variable) / binary_std)
return biserial_corr
# 計算Biserial相關系數
biserial_corr = biserial_correlation(binary_variable, continuous_variable)
print("Biserial相關系數:", biserial_corr)
Biserial相關系數: -0.2061772328681707
參考 檢驗
參考 檢驗
Kendall秩相關系數也是一種非參數的等級相關度量,類似于Spearman等級相關系數。
import random
import numpy as np
import pandas as pd
np.random.seed(10)
df = pd.DataFrame({'品牌知名度排位':[9,4,3,6,5,8,1,7,10,2],
'售后服務質量評價排位':[8,2,5,4,7,9,1,6,10,3]})
df
pd.Series.corr(df['品牌知名度排位'], df['售后服務質量評價排位'],method = 'kendall') # Kendall Tau相關系數
# 0.7333333333333333
from scipy.stats import kendalltau
# 兩個樣本數據
x = df['品牌知名度排位']
y = df['售后服務質量評價排位']
# 計算Kendall Tau相關系數
correlation, p_value = kendalltau(x, y)
print("Kendall Tau相關系數:", correlation)
print("p值:", p_value)
# Kendall Tau相關系數: 0.7333333333333333
# p值: 0.002212852733686067
浮生皆縱,恍如一夢,讓我們只爭朝夕,不負韶華!
下期將為大家帶來《統計學極簡入門》之 再看t檢驗、F檢驗、檢驗
《CDA一級教材》適合CDA一級考生備考,也適合業務及數據分析崗位的從業者提升自我。完整電子版已上線CDA網校,累計已有10萬+在讀~
免費加入閱讀:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25