You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中非数值型字符串的因子分析方法及代码求教

字符串的因子分析(PCA/因子分析)及结果表格生成(基于GrpString)

GrpString包的StrKclust函数内部会先将字符串转换为特征矩阵,再进行降维聚类。要生成类似主成分分析(PCA)的因子分析结果表格,我们可以手动提取特征矩阵,再执行PCA或探索性因子分析(EFA)并整理结果。

步骤1:提取字符串特征矩阵

使用GrpString的Str2Features函数将字符串转换为基于字符频率的特征矩阵,这是后续分析的核心输入:

# 安装并加载包
devtools::install_github("dstgithub/GrpString")
library(GrpString)
library(tidyverse) # 用于数据整理

# 示例数据
strs3.vec <- c("ABCDdefABCDa", "AC3aABCD", "ACD1AB3", "xYZfgAxZY", "gf56xZYx", "AkfxzYZg")

# 生成字符串特征矩阵
str_features <- Str2Features(strs3.vec)
# 过滤无方差的特征(避免后续分析报错)
str_features_filtered <- str_features[, apply(str_features, 2, var) > 0]

步骤2:执行PCA并生成结果表格

用标准PCA分析特征矩阵,提取方差解释率和成分载荷表格:

# 执行PCA(标准化特征)
pca_result <- prcomp(str_features_filtered, scale. = TRUE)

# 生成方差解释率表格
variance_explained <- pca_result$sdev^2 / sum(pca_result$sdev^2)
pca_variance_table <- tibble(
  成分 = paste0("PC", 1:length(variance_explained)),
  方差解释率(%) = round(variance_explained * 100, 2),
  累计方差解释率(%) = round(cumsum(variance_explained) * 100, 2)
)

cat("主成分方差解释率:\n")
print(pca_variance_table)

# 生成前2个主成分的载荷表格
pca_loadings_table <- as_tibble(pca_result$rotation[, 1:2], rownames = "字符特征") %>%
  rename(PC1 = PC1, PC2 = PC2) %>%
  mutate(across(PC1:PC2, ~round(.x, 4)))

cat("\n前2个主成分载荷:\n")
print(pca_loadings_table)

步骤3:探索性因子分析(EFA)及结果表格

如果需要更贴近传统因子分析的结果(带旋转),可以使用psych包执行EFA:

library(psych)

# 执行因子分析(提取2个因子,方差最大化旋转)
fa_result <- fa(str_features_filtered, nfactors = 2, rotate = "varimax")

# 生成因子载荷表格
fa_loadings_table <- as_tibble(fa_result$loadings[, 1:2], rownames = "字符特征") %>%
  rename(因子1 = MR1, 因子2 = MR2) %>%
  mutate(across(因子1:因子2, ~round(.x, 4)))

cat("因子分析载荷:\n")
print(fa_loadings_table)

# 打印因子方差解释率
cat("\n因子方差解释率:\n")
print(fa_result$Vaccounted)

说明

  • Str2Features默认生成每个字符的出现频率特征,你也可以通过参数调整为n-gram特征(比如ngram=2生成双字符组合特征)。
  • 标准化特征(scale.=TRUE)在处理频率类特征时尤为重要,避免高频字符主导分析结果。

内容的提问来源于stack exchange,提问作者EB3112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:55:24