文档来源:
Correspondence analysis


1 对应分析

参考:

对应分析的实质(理论很复杂,但是结果很明了简单)

  • 就是对列联表中的数据信息进行浓缩,然后以易于阅读的图形方式呈现出来
  • 以默认的卡方测量方式为例,首先以列联表为分析基础,计算基于H0假设的标化单元格残差
  • 将每行看成是一条记录,基于列变量相关系数阵进行因子分析,计算出列变量各类的负荷值
  • 将每列看成是一条记录,基于行变量相关系数阵进行因子分析,计算出行变量各类的负荷值
  • 一句话来说就是计算出残差,残差做因子分析提取主成分之后绘图(散点图)表示

对应分析的局限性

  • 不能进行变量间相关关系的检验,仍然只是一种统计描述方法
  • 解决方案的所需维度需要研究者决定
  • 对极端值敏感,对于小样本不推荐使用

数据要求: 列联表的形式
python实现对应分析的随笔记-LMLPHP
需要先做卡方检验:
Pearson卡方检验Sig.<0.05证明两个变量并不是没有关联的,并不是完全独立的
在做对应分析
python实现对应分析的随笔记-LMLPHP

对应分析图的正确解释:

  • 错误的解释:金色头发的儿童中蓝色、浅色眼睛者居多
  • 正确的解释:相对于平均水平而言,金色头发的儿童中蓝色、浅色眼睛的比例要高一些,也就是高于其他颜色头发的儿童
    python实现对应分析的随笔记-LMLPHP

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)

数据样例可见:

python实现对应分析的随笔记-LMLPHP
其中:

  • prince.CA一定需要指定engine='sklearn'
  • n_components是降维维度数量,如果你只有两列,只能降低到1维

其他:

# Eigenvalues
ca.eigenvalues_summary

# 看最后的row维度的降维
ca.row_coordinates(dataset).head()
# 看最后的columns维度的降维
ca.column_coordinates(dataset).head()

python实现对应分析的随笔记-LMLPHP

可视化

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

python实现对应分析的随笔记-LMLPHP

05-25 02:41