【问题标题】:Multiple correspondence analysis with R使用 R 进行多重对应分析
【发布时间】:2011-08-17 17:04:18
【问题描述】:

嗨, 我的问题既是技术问题(使用 R)又是统计问题。我正在从事图像处理研究项目,我需要执行 MCA。我之前发布了一个关于如何使用 Java Multivariate correspondence analysis (MCA) with JAVA 执行此操作的问题,感谢我决定使用 R 执行此操作的答案。所以这里是: 我有一个从提取的特征创建的列联表,其形式为:

            var1_1 var1_2 var1_3 var2_1 var2_2 var2_3 ... var18_1 var18_2 var18_3

个人1
个人2
个人3
个人4
...
个人


在每个单元格中,我有一个 double 值,表示 0.0 到 1.0 之间的归一化频率计数。我的最终目标是能够使用 MCA 在不同的轴组合上绘制每个人。

我做了什么:

  • 使用fdata
  • 使用 mca_obj (有人可以澄清它是什么意思)
  • 使用 burt_data=acm.burt(fdata, fdata) 来使用 burt 方法,因为我有很多变量
  • 这给了我一个我无法理解的非常大的表(我尝试删除行名)

所以总结一下: 我知道我已经非常接近找到对我的数据执行 MCA 的正确方法我只需要一些关于如何正确执行它的提示。谁能帮忙!

感谢

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    编辑:

    如果我理解正确,您的数据不适合任何 mca 函数。您需要原始数据,而不是任何类型的标准化频率计数。 MCA 适用于分类变量,而不是数值。您需要的是以下意义上的数据:

                  color   beak ...
    individual1   red     big
    individual2   red     small
    individual3   blue    medium
    individual4   green   small
    ...
    

    如果归一化频率确实是您的数据,那么您有数字数据,您无法对其执行 MCA。


    factor是R中的一个向量类型,可以看成是分类或枚举类型。如果您有上述格式的数据,并且仍然有字符变量而不是因子变量,则可以使用

    转换 fdata
    fdata2 <- as.data.frame(lapply(fdata,as.factor))
    

    这个你应该可以在dudi.acm()函数中使用。

    关于 Burt 桌子:当然,那张桌子很大。它是矩阵乘法 X'X,其中 X 是您的因子的指标矩阵。所以你得到一个表(实际上是一个数据框),其中行名和列名形成为nameOfFactor.nameOfLevel。因此,如果每 5 个级别有 4 个因子,则您已经拥有一个 20x20 矩阵。

    您可以使用这些知识来剖析 Burt 表并获取有关某些感兴趣因素的信息。按照帮助文件中的示例,您可以执行以下操作:

    require(ade4)
    data(banque)
    banque.acm <- dudi.acm(banque, scann = FALSE, nf = 3)
    bb <- acm.burt(banque, banque)
    
    idrow <- grepl("csp.",rownames(bb),fixed=T)
    idcol <- grepl("duree.",names(bb),fixed=T)
    
    > bb[idrow,idcol]
              duree.dm2 duree.d24 duree.d48 duree.d812 duree.dp12
    csp.agric         3         6         6          3         11
    csp.artis         7         3        15         13         10
    csp.cadsu        13        19        32          9         30
    csp.inter        12        14        19         25         32
    csp.emplo        13        19        38         28         53
    csp.ouvri        12        26        46         43         56
    csp.retra         4         8         9          7         24
    csp.inact        15        14        22         15         19
    csp.etudi        12        23        20          1          1
    

    它为您提供了数据框中因素 csp 和 duree 的 Burt 表。

    【讨论】:

      【解决方案2】:

      很难为您的案例提供真正具体的反馈,因为很难猜测您的数据是什么样的。

      我建议你这样做:

      1. 使用包MASS中的函数mca进行对应分析
      2. 研究帮助文件中提供的示例:?mca

      你会发现mca的需求也是一个由因子组成的dataframe。 (有关更多信息,请参阅帮助文件?factor。)但mca 中的示例说明了这一点。它使用作为包MASS的一部分提供的数据集farms

      library(MASS)
      head(farms)
      
        Mois Manag Use Manure
      1   M1    SF  U2     C4
      2   M1    BF  U2     C2
      3   M2    SF  U2     C4
      4   M2    SF  U2     C4
      5   M1    HF  U1     C2
      6   M1    HF  U2     C2
      

      请注意,表中的每个点都是一个因子条目。这意味着您必须将输入数据重新设计为类似的格式。您提到您的输入数据是频率表,这不是必需的数据格式。

      farms.mca <- mca(farms, abbrev=TRUE)
      farms.mca
      plot(farms.mca)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 2015-09-30
        • 2021-12-09
        • 2013-03-23
        • 2012-05-01
        相关资源
        最近更新 更多