【问题标题】:Extract Identifier from Principal Component Analysis with Missing Data in R从 R 中缺少数据的主成分分析中提取标识符
【发布时间】:2013-08-20 05:10:54
【问题描述】:

我正在 R 中对缺少数据的向量进行主成分分析。我想从主成分中提取分数,并将值与原始帧中没有丢失的观察值匹配,但我不知道如何提取和匹配正确的标识符。例如:

x1 <- c(1,2,3,NA, 5,6,7)
x2 <- c(7,NA,6,NA, 4,3,2)

frame <- cbind(x1,x2)

pca_ob<- princomp(~frame)
pca_ob$score[,1]

这会产生以下输出:

    1         3         5         6         7 
  4.273146  2.104705 -0.715732 -2.125950 -3.536168 

我想根据标识符将 pca_ob$score[,1] 与原始帧绑定,并用 NA 填充其余部分,以便生成以下矩阵:

    x1 x2 x3
1    1  7  4.273146
2    2  NA NA
3    3  6  2.104705
4    NA NA NA
5    5  4  -0.715732
6    6  3  -2.125950
7    7  2  -3.536168

这会获取第一组分数的输出并将它们匹配回框架,其中 NA 填充所有没有 pca 分数的点并匹配有分数的变量。有什么想法吗?谢谢。

【问题讨论】:

  • 我可以看到您正在尝试,但仍然不太清楚您在问什么。也许如果您提供了一个简短的示例输入和您想要实现的输出。通常,R PCA 例程会为您返回一个旋转矩阵、比例和方法,可用于从 PC“倒退”回数据,或从新数据到 PC。
  • 嗨,保罗 - 我刚刚编辑了它,所以希望这能更清楚地解释问题。谢谢
  • 我做了 goodFrame&lt;-na.omit(frame) 并从 goodFrame 获得了相同的 pca 分数,因此 R 完全删除了您丢失的数据以计算 PCA。
  • 确实,这就是正在发生的事情,这不是问题。我只想将 PCA 分数的向量重新绑定到带有 NA 的向量,并在它们的标识符上匹配它们。在上面的输出中,您可以看到 PCA 为元素 1、3、5、6、7 生成值。我的问题是如何将它们与另一个向量中的元素 1、3、5、6、7 相匹配,并为元素 2 和 4 引入 NA。
  • 不幸的是,R 中真正基本的数据操作往往是曲折的小段落迷宫

标签: r pca


【解决方案1】:

这感觉有点像 hack。可能有更好的解决方案。

这里的方法是创建一个初始充满NA的新对象,然后转 将稀疏数据的名称转换为数字索引并使用它们进行分配。

> p1 <- pca_ob$scores[,1]
> p1
        1         3         5         6         7 
 4.273146  2.104705 -0.715732 -2.125950 -3.536168 
> z<-rep(NA, 7)
> z[as.numeric(names(p1))]<-p1
> z
[1]  4.273146        NA  2.104705        NA -0.715732 -2.125950 -3.536168

【讨论】:

    【解决方案2】:

    我想你在找na.exclude:

    > princomp(~frame, na.action = na.exclude)$scores
         Comp.1      Comp.2
    1  4.273146  0.24540178
    2        NA          NA
    3  2.104705 -0.30036459
    4        NA          NA
    5 -0.715732 -0.08790757
    6 -2.125950  0.01832094
    7 -3.536168  0.12454944
    

    我在na.omit 的帮助页面中找到了这个(它也涵盖了其他NA 操作),它链接自princompna.action 参数描述。

    【讨论】:

    • 这很有用,而且比击退恶龙要好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2015-03-10
    • 2016-03-30
    相关资源
    最近更新 更多