--------仅用于个人学习知识整理和sas/R语言/python代码整理
--------该文章首发于csdn 正在迁移优化文章中
1.前言
对应分析,主要适用于有多个类别的分类变量,可以揭示同一个变量各个类别之间的差异,以及不同变量各个类别之间的对应关系(简介摘录自:https://www.jianshu.com/p/77a0d15f0336)
以下通过实际例子 使用sas及r语言 进行实现,以及附上对应分析图的解读方式(没有找到python的实现方式,如果有,请不吝赐教!)
2.sas实现
2.1 源数据准备
以下数据全为测试虚构数据,只用来说明数据格式及辅助图的解读
输入数据集为以下交叉表格式,每一个数据代表该组别该变量的人数,假设这里要看五组人群和变量之间的关系,得到交叉表如下:
2.sas对应分析
sas对应分析主要使用proc corresp过程步,在进行对应分析是var参数需要输入所有变量名,所以先将所有变量放入宏变量中,实现代码如下:
proc contents data=rawdata out=cont noprint;run;
proc sql noprint;
select kcompress("'"||name||"'")||"n " into : name3 separated by ' ' from cont where name^='CLUSTER' and
name^='cluster' and name^='class' and name^='right';
quit;
/*打印宏变量*/
%put &name3.;
/*进行对应分析*/
proc corresp data=rawdata print=percent observed cellchi2 rp cp
short outc=data_out plot(flip);
var &name3;
id class;
run;
%plotit(data=duiying.data_out,datatype=corresp,plotvars=Dim1 Dim2,color=black,href=0,vref=0)
/*绘制对应分析图; %plotit中指定的参数分别是输入数据集名称、数据类型、绘图的变量名,坐标轴的颜色
和参考线。用前面的输出数据集results中两个变量Dim1 Dim2绘图*/
run;
3.对应分析图解读
首先可以看到,第一维度解释了65.41%,第二维度解释了24.92%,说明在两个维度上,能够说明数据的90.33%
对应分析图有很多种解读的方法,附上一篇很详细的对应分析图详解:
我们一般会使用向量分析,即看和这个人群比较关联的产品是哪些,在下图中,如果要看和a人群比较关联的label,会从原点出发,向a的方向画一个向量(原点到a的方向作为向量正向),然后每个产品点向这条直线做垂线,垂足和a点的正向越近,表示和a越关联
3.r语言实现
r语言主要使用ca包中的ca函数
ca_data
ca_data2
row.names(ca_data2)
library(ca)
plot(ca(ca_data2),dim = c(1,2),xlim=c(-1,1),ylim=c(-1,1), pch = c(16, 1, 17, 24))
文章一开始发在了csdn上,会有水印,之后的文章都会在知乎发表