如何在 R 中处理 PCA 的文本和数字?

机器算法验证 r 主成分分析 分类数据
2022-04-02 06:56:32

我对 R 比较陌生,并且正在使用一个非常大的数据集,其中包含数字分数(例如,家庭收入)和文本值(即种族)。我计划使用 PCA 来分析这个数据集,但它只适用于数值数据。有什么好的选择吗?

2个回答

查看包中的dudi.mix()功能ade4:混合定量变量和因素的表格排序。例子:

library(ade4)
scatter.dudi(dudi.mix(iris,scannf=FALSE))

还有其他几个包可以进行混合对应分析。

您也可以继续对分类变量进行完全虚拟编码。这在理论上并不合理,但它确实完成了工作。

制作变量

使您的文本值使用名义变量factor或使用序数变量,ordered例如,如果您有一个名为mydatathen的数据框

mydata <- transform(race=factor(race))

将文本竞赛变量转换为名义变量。详情请参阅?transform

这样,当您适合任何模型时,R 将向您显示标签,但会在后台为您构建适当的虚拟变量。您可以使用 更改默认对比编码中的基线类别relevel

如果您曾经read.csv获取过数据,那么这可能已经在您没有请求的情况下发生了。您可以使用检查每个变量的类

lapply(mydata, class)

作为因素的事物列出了它们的水平。事实上,与 R 的一半战斗是说服不要进行这些“方便”的变量转换。

尺度变量?

如果您正在考虑 PCA,那么我想您正在尝试以某种方式扩展这些数据。如果是这种情况,您可以使用可以处理混合变量类型的因子分析方法。一种这样的方法是MCMCmixfactanalMCMCpack R 包中。

另一方面,您可能会问自己,您将从包含如此多不同内容的大型模型中获得什么空间。在拟合常规多元模型的背景下,也许更明智的计划是将名义变量保留为条件/分层的事物。

如果您想详细说明您的 PCA 计划的目的,我们或许可以提供更多替代方案。您试图通过扩展从数据中获取哪些信息?