r - 使用 R 进行多重对应分析

标签 r statistics

你好,
我的问题是技术性的(使用 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 在不同的轴组合上绘制每个人。

我做了什么 :

  • used fdata <- read.table("filename.dat") to read the matrix file exported by Java
  • used mca_obj <- dudi.acm(fdata,scann=FALSE, nf=3) That gives an error saying all values should be a factor (Could someone clarify what does it mean a factor)
  • used burt_data=acm.burt(fdata, fdata) to use the burt method since I have many variables
  • that gave me a very big table I couldn't understand (I experimented with removing the row names)


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

谢谢

最佳答案

编辑 :

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

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

如果归一化频率确实是您的数据,则您拥有数值数据,并且无法对其执行 MCA。

A factor是R中的向量类型,可以看作是分类类型或枚举类型。如果您拥有上述格式的数据,并且您仍然拥有字符变量而不是因子变量,则可以将 fdata 转换为
fdata2 <- as.data.frame(lapply(fdata,as.factor))

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

关于 Burt table :当然,那个 table 很大。它是矩阵乘法 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 表。

关于r - 使用 R 进行多重对应分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869853/

相关文章:

reshape 但扩展 R 中的数据

r - 使用 savePlot 另存为 pdf 时图例被截断

r - 在 Evince 中查看时,Knit 图没有轴(更新了 RStudio、R 和 Texlive)

r - 编写 R 包 : needing a package I don't explicitly call

r - 具有因子水平的双色热图

sql - 在 SQL Server 中通过标准差消除异常值

r - 计算均值的 95% 置信区间

r - Mann-Whitney U 的 p 值为 1 - 伪影?

c++ - 调用 numDeriv :hessian() with multiple-parameter-objective-function in Rcpp

python - split 正态分布