即使允许使用 NA,R 函数 prcomp 也会因 NA 的值而失败
Posted
技术标签:
【中文标题】即使允许使用 NA,R 函数 prcomp 也会因 NA 的值而失败【英文标题】:R function prcomp fails with NA's values even though NA's are allowed 【发布时间】:2012-08-18 04:21:32 【问题描述】:我正在使用函数prcomp
来计算前两个主成分。但是,我的数据有一些 NA 值,因此该函数会引发错误。即使在帮助文件?prcomp
中提到过,定义的 na.action 似乎也不起作用
这是我的例子:
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))
prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
d$V1[5] <- NA
d$V2[7] <- NA
prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
我正在使用适用于 Mac OS X 的最新 R 版本 2.15.1。
prcomp
失败时,谁能看到原因?
这是我的新示例:
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))
result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
d$V1[5] <- NA
result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
是否可以在 PC1 和 PC2 中保留第 5 行?在我的真实数据集中,我当然有两列以上的变量,只有其中一些缺失,我不想丢失隐藏在其他值中的剩余信息!
【问题讨论】:
【参考方案1】:是的,除非您使用formula
接口,否则na.action
看起来像是一个“功能”(错误),将被完全忽略。这是brought up before on the R Development list。
我认为这应该被记录或标记为错误。
需要明确的是,这会起作用,因为它访问公式接口:
prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
【讨论】:
好吧太棒了。感谢公式方法! 我同意应该记录下来(我是R开发列表上查询的作者);如果有人愿意,最好的方法是提出对文档的更改并将其提交给 r-devel 列表(和/或 R 错误跟踪器)。【参考方案2】:如果您不愿意使用公式界面,另一种解决方案是
prcomp(na.omit(d), center = TRUE, scale = TRUE)
其中包括将na.omit
直接应用于数据框。
【讨论】:
也感谢您的解决方案。我刚刚意识到使用 na.omit 会导致更少的主成分。我刚刚编辑了上面的示例。以上是关于即使允许使用 NA,R 函数 prcomp 也会因 NA 的值而失败的主要内容,如果未能解决你的问题,请参考以下文章
R语言进行主成分分析(PCA)使用prcomp函数进行主成分分析:碎石图可视化(scree plot)R通过线图(line plot)来可视化主成分分析的碎石图(scree plot)
R语言进行主成分分析(PCA)使用prcomp函数进行主成分分析:碎石图可视化(scree plot)R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)
R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析使用summary函数查看主成分分析的结果计算每个主成分解释方差的每个主成分解释的方差的比例以及多个主成分累积解释的方差比例
为啥即使 jar 存在,火花应用程序也会因 java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
jquery:即使在我使用单击事件隐藏 div 之后也会触发 mouseout 事件
R语言ggplot2可视化移除数据中的NA值再可视化实战:消除图形中非常突出的NA柱状图使用subset函数使用drop_na函数