R语言主坐标分析(PCO)结果类似prcomp的summary汇总方法求荐
针对cmdscale主坐标分析结果的自定义汇总方案
你可以通过轻量的自定义函数实现和prcomp完全对齐的汇总输出,实现逻辑基于cmdscale返回的特征值计算相关统计量即可。
自定义汇总函数代码
summary.pco <- function(pco_obj, digits = 4) { # 提取正特征值(负特征值无实际方差解释意义) eig <- pco_obj$eig[pco_obj$eig > 0] # 计算标准差 sdev <- sqrt(eig) # 方差占比 var_prop <- eig / sum(eig) # 累计方差占比 cum_prop <- cumsum(var_prop) # 组合成结果矩阵,和prcomp的summary格式对齐 importance <- rbind( `Standard deviation` = round(sdev, digits), `Proportion of Variance` = round(var_prop, digits), `Cumulative Proportion` = round(cum_prop, digits) ) # 列名改为PCO前缀 colnames(importance) <- paste0("PCO", seq_along(eig)) # 输出格式化结果 cat("Importance of PCO components:\n") print(importance) # 不可见返回结果矩阵方便后续调用 invisible(importance) }
调用示例
# 示例数据计算PCO data(cars) pco <- cmdscale(dist(cars), eig=TRUE) # 调用自定义汇总函数 summary.pco(pco)
输出效果示例
Importance of PCO components: PCO1 PCO2 Standard deviation 26.1252 3.0808 Proportion of Variance 0.9863 0.0137 Cumulative Proportion 0.9863 1.0000
补充说明
- 函数默认自动过滤负特征值,这部分是度量校正产生的残差,无实际方差解释意义,符合常规PCO分析规范
- 可通过
digits参数自定义输出小数位数,默认保留4位,和prcomp的默认输出格式一致 - 如果需要适配S3泛型调用,可在生成pco对象后添加代码
class(pco) <- c("pco", class(pco)),之后直接调用summary(pco)即可触发汇总方法,无需每次指定函数名
内容的提问来源于stack exchange,提问作者maurobio
相关产品推荐
相关产品推荐

