Correspondence Analysis 对应分析原理及R实现

  • 多元统计分析

  • 列联表分析:简单情形下可以视为p的假设检验,不涉及此部分

  • 对应分析

多元统计分析-对应分析

对应分析(correspondence) 由J.P.Bepzecri 于1970年提出,是在因子分析基础上发展的多元统计方法,也称R-Q分析。通过分析属性(attribute-categorial)构成的列联表来揭示变量之间的关系,可以用列联表显示。对应分析利用降维的思想对行和列同时处理来达到简化数据结构的目的。最后列联表的行和列中各属性的比例结构会以点的形式在低维空间中表示出来。

对应分析

  • 目的:降维与可视化 (dimensional reduction and perceptual mapping)
  • 数据类型:行与列都是名义变量(nominal measurement scales) e.g:年龄大中小,产品ABC
  • 数据汇总:列联表(contingency table)

e.g

Product
Age A B C Total
Young(18-35) 20 20 20 60
Middle(36-55) 40 10 40 90
Senior(56+) 20 10 40 70
Total 80 40 100 220
  • 可以解决的问题(Marketing Analysis)

    1. 在打分问题中(Likert scale,levels),一些需要打分的类别是否相近,因此衡量的是同一种preference,与Factor Analysis中降维解决的问题背景一致。
    2. 一些属性是否相似,衡量的是产品的同一方面?
    3. 识别不同产品之间的竞争关系
    4. 划分消费者群体
    5. 行与列之间,e.g 年龄与产品选择之间 是否相关?

    实现步骤及原理

  • 假设

    H_0:行列属性之间没有关系。

    H_1:行列属性之间有关系。

  • 卡方检验

    \chi^2=\sum_{ij}\frac{(f_{ij}-e_{ij})^2}{e_{ij}}\sim \chi_{(r-1)(c-1)}^2 r:行数,c:列数

    • Case 1: \sqrt {\chi_{ij}^2}=0 实际观察到的频数等于在原假设之下的频数,行i与列j没有关系
    • Case 2: \sqrt {\chi_{ij}^2 }> 0 实际观察到的频数大于在原假设之下的频数,行i与列j有正关系
    • Case 3: \sqrt {\chi_{ij}^2} < 0 实际观察到的频数小于在原假设之下的频数,行i与列j有负关系
  • 衡量相关性(measure of association)

    • 列联表第ij元的\chi^2值:

      \sqrt {\chi_{ij}^2}=\frac{f_{ij}-e_{ij}}{\sqrt{e_{ij}}} 其中f_{ij}是表中观察到的频数,e_{ij}是在原假设下的频数。

      e_{ij}=\frac{f_{i\cdot}f_{\cdot j}}{n}=\frac{(ith \ \ row \ \ total) \cdot (jth\ \ column \ \ total)}{overall \ \ total}

      在表中各\sqrt {\chi_{ij}^2}即为:

      Product
      Age A B C
      Young(18-35) -0.389 2.752 -1.393
      Middle(36-55) 1.271 -1.573 -0.142
      Senior(56+) -1.081 -0.764 1.450

      e_{11}=\frac{60 \times 80} {220}=21.82

      \sqrt{\chi_{11}^2}=\frac{20-21.82} {\sqrt 21.82}=-0.389

  • 计算行与列各属性/种类的坐标以便画图

    • 假设

      • 各对象之间能够比较 e.g :产品ABC可比
    • \textbf{Y}=(y_i),代表行的指标的位置,\textbf{X}=(x_i),代表列的指标的位置。

      对于任意两行可以用y_k=( \chi_{k1},\chi_{k2},\cdots,\chi_{kc}), y_l=( \chi_{l1},\chi_{l2},\cdots,\chi_{lc})表示,其中c为列数,如果y_ky_l的距离相近,则可以认为lk相近。

    • 降维

      目标:使用更少的维度表示y_ky_l,同时使 distance(y_k,y_l) \approx distance( y_k^{'} ,y_l^{'})

  • 奇异值分解 Singular Value Decomposition

    对矩阵M=n^{-1/2}X使用奇异值分解,其中X=(\sqrt {\chi_{ij}^2})_{ij},n为总体频数。

    e.g
    M=\left[ \matrix { -0.026 & 0.186 & -0.094\\ \nonumber 0.086 & -0.106 & -0.010\\ \nonumber -0.073 & -0.052 & 0.098 } \right]
    其中m_{11}=\frac{-0.389}{\sqrt {220}}=-0.026

SVD: M=UQV^{T}

此处
M=\left[ \matrix { 0.852 & -0.032\\ -0.416 & -0.646\\ -0.317 & 0.762 } \right]\left[ \matrix { 0.246 & 0\\ 0 & 0.146 } \right]\left[ \matrix { -0.142 & -0.785\\ \nonumber 0.889 & 0.167 \\ \nonumber -0.435 & 0.597 } \right]
Q中有2个非零奇异值,因此选取维数为2。

奇异值分解

在矩阵M的奇异值分解中

  • 计算坐标YX

    • 计算占比矩阵

      D_rD_c为对角矩阵,对角线上元素代表每一行或每一列的占比。

      D_{r11}=f_{1\cdot}/n,D_{c22}=f_{\cdot 2}/n

      此例中D_{r11}=60/220=0.273,D_{c22}=40/220=0.182
      D_r=\left[ \matrix { 0.273 & 0 & 0\\ \nonumber 0 & 0.409 & 0\\ \nonumber 0 & 0 & 0.318 } \right] and \ \ D_c=\left[ \matrix { 0.364 & 0 & 0\\ \nonumber 0 & 0.182 & 0\\ \nonumber 0 & 0 & 0.455 } \right]

    • 计算坐标,此例:行坐标Y(年龄 Young,Middle,Old),列坐标X产品ABC:
      Y=D_r^{-1/2}UQ=\left[ \matrix { 0.4013 & 0.0085\\ \nonumber -0.1599 & 0.1418\\ \nonumber -0.1384 & -0.1896 } \right]

      X=D_c^{-1/2}VQ=\left[ \matrix { 0.0578 & 0.1827\\ \nonumber 0.5127 & -0.0549\\ \nonumber -0.1588 & -0.1241 } \right]

  • 相关指标

    • MASS:行与列的占比,即D_rD_c,反映了每行与每列在样本中的重要性。

    • Inertia 总惯量: 惯量就是奇异值的平方,用于说明对于分析各个维度的结果能解释列联表中两变量联系的程度。所有维度惯量的总和则可以用来表示总信息量(total variance)的大小,通常维度的选取使总惯性的和大于80%为好。

      Variance of the row and column coorddinates weighted by masses(importance)

      Y^TD_{r}Y=QU^TD_r^{-1/2}D_rD_r^{-1/2}UQ=Q^2

    • 维度的选择:

      最大可选维度:min \ \ (\ \ no.of\ \ rows\ \ ,\ \ no.of\ \ columns \ \ )-1

      • 根据可解释的总差异累计百分比或百分比变化的拐点选择
    • 对惯量的贡献:奇异值分解矩阵UV u_{ij}^2v_{ij}^2

      • 与因子分析中的载荷矩阵意义相近
      • 衡量每一行或列的种类与每个维度的关系
      • 利用每个维度相近的行或列种类为维度命名
    • 每个维度的解释力

      • \frac{y_{ij}^2}{\sum_{j=1}^{k}y_{ij}^2}\frac{x_{ij}^2} {\sum_{j=1}^{k}x_{ij}^2},其中k为维度数目,j为给定的维度,x_{ij}y_{ij}为坐标。
    • 质量 (quality)

      • 给定的维度的解释力之和
      • 最大值为100\%
      • 显示出模型对每行和每列指标的解释力
      • 与因子分析中的communality相似

本例中:

维度1的惯量:0.246^2=0.060

维度2的惯量: 0.140^2=0.020

总惯量:0.060+0.020=0.080

由维度1解释的总差异百分比:(proportion of variance explained by dimension1)0.060/0.080=0.754

由维度2解释的总差异百分比:(proportion of variance explained by dimension2)0.020/0.080=0.246
[u_{ij}^2]=\left[ \matrix { 0.852^2 & (-0.032)^2\\ \nonumber (-0.416)^2 & (-0.646)^2\\ \nonumber (-0.317)^2 & 0.672^2 } \right] =\left[ \matrix { 0.726 & 0.001 \\ \nonumber 0.173 & 0.418\\ \nonumber 0.101 & 0.581 } \right]
对惯量的贡献:

行对应的组 维度1 维度2
Young 0.726 0.001
Middle 0.173 0.418
Old 0.101 0.581

即young(0.726)对维度1主要贡献,middle(0.418)与 old (0.581)对维度2有主要贡献。同时由于符号问题-0.646与0.6752,因此维度2还体现了middle组与old组之间的差异

(y_{ij})^2=\left[ \matrix { 0.1610 & 0.0001\\ \nonumber 0.0256 & 0.0201\\ \nonumber 0.0192 & 0.0359 } \right] \\ \left( \sum_{j} y_{ij}^2 \right)=\left[ \matrix { 0.1611\\ \nonumber 0.0457 \\ \nonumber 0.0551 } \right] \\ \left[ \matrix { 0.1610/0.1611 & 0.0001/0.1611\\ \nonumber 0.0256/0.0457 & 0.0201/0.0457\\ \nonumber 0.0192/0.0551 & 0.0359/0.0551 } \right] =\left[ \matrix { 0.9996 & 0.0004\\ \nonumber 0.5597 & 0.4403\\ \nonumber 0.3476 & 0.6524 } \right]
本例中维度为2解释力为100\%

  • 可视化 perceptual map ——衡量行与列指标之间的关系
    使用降维后的坐标 (图的解释性只限于相对位置,而不是图上的绝对坐标,图上点之间的距离没有意义)

    此例最后将产品ABC与年龄大中小画在图中:

    可见年轻人更偏好B产品,中年人更偏好A产品,年长的更偏好A产品。

R语言实现 基于包ca

问题背景

为了跟踪1980年至1983年银行和储蓄与贷款(SL)机构形象的变化,并在一个二维空间中表示它们,向750名随机受访者邮寄了问卷,1980年和1983年的回复率分别为43%和42%,受访者被要求决定在13种具体的金融服务中,选择两类机构中哪一种(或两种)更好。结果以百分比形式储存在列联表中。

数据情况

选项:Bank only in 1980,SL only in 1980, Both bank and SL in 1980,Don’t know in 1980,Bank only in 1983,SL only in 1983,Both bank and SL in 1983, Don’t know in 1983

即在1980年,2\%的受访者认为SL的Checking accounts服务更好,6\%的受访者认为二者服务的质量一样。

R代码实现与结果解读

  • 导入包与数据

    library(ca)
    #rownames are the labels of attributes
    images<-read.csv("images.csv", header = TRUE,row.names = 1)
    
  • 进行对应分析并导出结果

    #obj= contingency table 导入的数据为列联表形式
    fit<-ca(obj=images)#此处没有规定维度目前
    summary(fit)
    #使用 ??ca 可以看ca包的具体参数选项 也可见本笔记最后
    
  • 结果解读

此为惯量值与对应的维数,其中value为对应奇异值的平方,cum\%为从1到此维数的解释百分比

维数最大为7是因为min \ \ (\ \ no.of\ \ rows\ \ ,\ \ no.of\ \ columns \ \ )-1=min(13,8)-1=7

本例中选维数为2即能得到解释力大于80\%的结果,同时二维也方便可视化。

行衡量的是服务方面的信息,结果如下:

此结果为每个行指标的mass,qlt: quality表示给定的维度的对行指标解释力之和,其中对Convenient locations的解释度最低为52.1\%,对Savings return 的解释度最高为99.6\%

k=1与k=2代表维度1与维度2每行中对应的坐标,ctr代表每个行指标对维度的contribution

例如Mortgage Loans对维度1的贡献达到了34.4\%,Savings return 达到了44.6\%;Checking accounts 对维度2的贡献达到了23.9\%

同时坐标的正负能够体现两行的差异,比如k=1中Savings return的坐标为1.091,而Checking accounts的坐标为-0.490。

本例中基于维度1与2可解释:

客户将从以下方面区分SL和银行的形象:

  • 抵押贷款和储蓄方面的服务(SL还是银行更好?)Services in mortgage and saving 维度1中贡献度较大的行
  • 在支票、信用卡、汽车贷款和安全方面的服务(SL或银行更好?)Services in checking, credit cards, car loans and safety 维度2中贡献较大的行

列衡量的是随时间对两种服务的感知状况,结果如下:

解释方法类似。

  • 每行每列的新坐标

    cacoord(fit,type="principal",dim=1:2)#代表只有2个维度
    
  • 将其绘制在二维平面中

    plot(fit)
    
  • 通过图形自己进行解读 从时间维度:80-83,相对位置等 <u>注意:实际距离没有有效信息</u>

结果解读

  • 该图说明了银行和SL之间的主要差异以及1980年至1983年的变化情况
  • 银行被认为在支票账户、信用卡、汽车贷款和有用的服务方面更好。S & Ls被认为在储蓄和抵押贷款方面更好。
  • 两类机构在非金融属性方面大致相当:有经验的人、反应能力、方便的地点和时间、最安全、最快的服务、以及提供有用的信息。
  • 从1980年到1983年,S & Ls的13个属性的整体形象比银行的形象变化更大,因为前者的差距更远。
  • 就所有13个属性的组合而言,银行和S & Ls在1983年被认为比1980年更相似,因为它们的位置在1983年比1980年更接近。

参考资料

附录

  1. ca包具体参数,不设置nd会出现1-最大维数的结果。

2.ca包的结果 可用fit$读取

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容