文档来源:
Correspondence analysis
1 对应分析
参考:
对应分析的实质(理论很复杂,但是结果很明了简单)
- 就是对列联表中的数据信息进行浓缩,然后以易于阅读的图形方式呈现出来
- 以默认的卡方测量方式为例,首先以列联表为分析基础,计算基于H0假设的标化单元格残差
- 将每行看成是一条记录,基于列变量相关系数阵进行因子分析,计算出列变量各类的负荷值
- 将每列看成是一条记录,基于行变量相关系数阵进行因子分析,计算出行变量各类的负荷值
- 一句话来说就是计算出残差,残差做因子分析提取主成分之后绘图(散点图)表示
对应分析的局限性
- 不能进行变量间相关关系的检验,仍然只是一种统计描述方法
- 解决方案的所需维度需要研究者决定
- 对极端值敏感,对于小样本不推荐使用
数据要求: 列联表的形式
需要先做卡方检验:
Pearson卡方检验Sig.<0.05证明两个变量并不是没有关联的,并不是完全独立的
在做对应分析
对应分析图的正确解释:
- 错误的解释:金色头发的儿童中蓝色、浅色眼睛者居多
- 正确的解释:相对于平均水平而言,金色头发的儿童中蓝色、浅色眼睛的比例要高一些,也就是高于其他颜色头发的儿童
2 python代码
随笔记python实现对应分析:
import prince
dataset = prince.datasets.load_french_elections()
dataset[['Le Pen', 'Macron', 'Mélenchon', 'Abstention']].head()
# 拟合
ca = prince.CA(
n_components=3,
n_iter=3,
copy=True,
check_input=True,
engine='sklearn',
random_state=42
)
ca = ca.fit(dataset)
数据样例可见:
其中:
prince.CA
一定需要指定engine='sklearn'
;n_components
是降维维度数量,如果你只有两列,只能降低到1维
其他:
# Eigenvalues
ca.eigenvalues_summary
# 看最后的row维度的降维
ca.row_coordinates(dataset).head()
# 看最后的columns维度的降维
ca.column_coordinates(dataset).head()
可视化
ax1 = ca.plot(
dataset,
x_component=0,
y_component=1,
show_row_markers=True,
show_column_markers=True,
show_row_labels=False,
show_column_labels=False
)
ax1.save('ax1.html')
此时可以可视化并保存成Html