这里的对应分析与典型相关分析仍然用于降维,因子分析的进阶!
对应分析:在同一张图上,直观的展现样本和属性的聚类效果,同时省去因子选择、因子轴旋转等复杂过程。具体操作,可以概括为,先将矩阵标准化(比如概率矩阵),再将样本集和属性集作为两组点集表示在同一个二维坐标中(选取最优二维表示)。 典型相关分析:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用U1和V1之间的相关关系来反映两组指标之间的整体相关性。目标通常是找到使U1和V1相关性最高的两个系数向量。
(↓R)
## 数据读入 ## inputData <- read.csv("*C:\\Users\\lenovo\\Desktop\\1.csv*", header = TRUE, sep = ",") X <- inputData[, -1] rownames(X) <- inputData[, 1] ## 进行对应分析,生成报表,绘制因子分析的散点图 ## library(ca) X.ca <- ca(X) summary(X.ca) plot(X.ca)(↓R)
## 数据读入 ## inputData <- read.csv("*C:\\Users\\lenovo\\Desktop\\1.csv*", header = TRUE, sep = ",") X <- inputData[, -1] rownames(X) <- inputData[, 1] X.scale <- scale(X) # 数据标准化 ## 对标准化的数据做典型相关分析,并生成报表 ## numVarientsFirstGroup <- 3 # 修改列数,选取出两组待研究变量 numVarientsSecondGroup <- 3 X.ca <- cancor(X.scale[, 1:numVarientsFirstGroup], X.scale[, (numVarientsFirstGroup + 1):(numVarientsFirstGroup + numVarientsSecondGroup)]) X.ca ## 计算数据在典型变量下的得分,U=AX,V=BY ## U <- as.matrix(X.scale[, 1:numVarientsFirstGroup]) %*% X.ca$xcoef V <- as.matrix(X.scale[, (numVarientsFirstGroup + 1):(numVarientsFirstGroup + numVarientsSecondGroup)]) %*% X.ca$ycoef ## 画出Ui、Vi为组表的数据散点图 ## plot(U[, 1], V[, 1], xlab = "U1", ylab = "V1") plot(U[, 2], V[, 2], xlab = "U2", ylab = "V2") plot(U[, 3], V[, 3], xlab = "U3", ylab = "V3") ## 典型相关系数的显著性检验 ## source("*D:\\数学建模\\corcoef.test.R*") corcoef.test(r = X.ca$cor, n = nrow(X.scale), p = numVarientsFirstGroup, q = numVarientsSecondGroup)其他参考
(↓R)
corcoef.test <- function(r, n, p, q, alpha = 0.1) { m <- length(r); Q <- rep(0, m); lambda <- 1; for (k in m:1) { lambda <- lambda * (1 - r[k]^2); # test statistic Q[k]<- -log(lambda); # logarithm of test statistics } s <- 0; i <- m; for (k in 1:m) { Q[k] <- (n - k + 1 - 1/2 * (p + q + 3) + s) * Q[k] # statistic chi <- 1 - pchisq(Q[k], (p - k + 1) * (q - k + 1)) if (chi > alpha) { i <- k - 1; break } s <- s + 1 / r[k]^2 } i #output, which pair of typical variables selected }R部分:荔枝编写
附: 对应分析方法与对应图解读方法——七种分析角度 5中降维方法