多元统计分析:对应分析

简介 (Correspondence Analysis, CA) 三种关系: Q型:样品 间 R型:变量 间 对应型:样品 与 变量 间 Q:对应分析 比较 因子分析? A:因子分析中,可用较少公共因子 来提取 样本数据 绝大部分信息,以便通过较少因素而获得足够信息, 缺点:对于R型、Q型因子分析,即对 变量、样本 分别做因子分析,并没有考虑变量与样本间联系,损失了一部分信息。 而且,在实际问题中,样本数目远大于变量数目,在Q型因子分析时,计算量远大于R型因子分析。 对应分析就是 通过 数学变换,把 Q型 、R型 因子分析 结合起来 卡方效验 H_0: 相互独立 H_1: 相互影响(不独立)
1
2
3
4
5
6
library(openxlsx)
d10.1 = read.xlsx('../Res/mvstats5.xlsx', 'd10.1', rowNames=T)

chisq.test(d10.1) # 卡方效验

# PS:chi 卡 s 方 q 查询
有结果可知: 由于 X-squared=118.1,p-value<0.001,所以 拒绝原假设 H_0,接受 H_1,认为因素A和因素B不独立, 即收入与满意度 之间 有密切联系,可以进一步做对应分析。 注意:相关性 与 独立 不是一回事 相关性检验 仅表 线性相关,对于非线性无作用 对应分析
1
2
3
library(ca)
cal = ca(d10.1)
summary(cal)
value 为特征值,cum% 为累积贡献率
1
cal$rowcoord # 行坐标
Q型因分、因子载荷矩阵(loadings)
1
cal$colcoord # 列坐标
R型因分

根据上述数据 作 对应分析图

1
plot(cal)
见图,相似的类会聚在一起,

对应图分析

据上图 可 将 样本点、变量 分为 3组:
    变量:< 1 万 样品:有些不满、很不满意 变量:1 万 - 3 万、 3 万 - 5万 样品:比较满意 变量:5 万 - 10万、>10万 样品:很满意

例 10.2

对应分析

1
2
d10.2 = read.xlsx('../Res/mvstats5.xlsx', 'd10.2', rowNames=T)
ca2 = ca(d10.2);ca2

对应分析图

1
plot(ca2)
1
summary(ca2)
案例 对应分析在农民收入分析中的应用
1
2
3
library(openxlsx)

Case10 = read.xlsx('../Res/mvcase5.xlsx', 'Case10', rowNames=T);Case10
1
2
C10d.1 = Case10[1:6,] # 文化程度数据
chisq.test(C10d.1)
1
2
C10d.2 = Case10[7:13,] # 总收入数据
chisq.test(C10d.2)
1
2
3
library(ca)

Ca1 = ca(C10d.1);summary(Ca1)
1
2
Ca1$rowcoord[,1:2]
Ca1$colcoord[,1:2]
1
plot(Ca1)
据图 可将 样品 与 变量 分为三类:
1
Ca2 = ca(C10d.2);summary(Ca2)
1
2
Ca2$rowcoord[,1:2]
Ca2$colcoord[,1:2]
1
plot(Ca2)
据图 可将 广东省农民 的收入来源与收入水平 的 相关关系 分为三类 补充

R语言中 数据标准化 scale()

默认,scale() 对矩阵或数据框 的指定列 进行 均值为0、标准差为1 的标准化
1
newdata <- scale(mydata)
    对每一列 进行 任意均值和标准差 的标准化
1
newdata <- scale(mydata)*SD + M
M: 想要的均值 SD: 想要的标准差 注意:在非数值型的列上使用scale() 将会报错
    对指定列 而不是 整个矩阵 或 数据框 进行标准化,使用下方代码
    1
    newdata <- transform(mydata, myvar = scale(myvar)*10+50)
    此句 将变量 myvar 标准化为均值 50、标准差为 10 的变量
经数据标准化后(均值0,标准差1 -> 方差1),协方差矩阵 等同 相关系数矩阵 标准差 就是 方差开根号 理由如下: 毫无疑问,分母 也可理解为 X的标准差 × Y的标准差 而经数据标准化后,标准差为1,所以此时分母为1,相关系数=协方差 标准化: 消除 列间 量纲差异,无法消除(行间)样本间 量纲差异 独立性效验 仅 判 因素A和因素B是否 独立,若 A、B独立,则 无需 进行 对应分析 这里 因素A、因素B 是 二维列联表 后 因素, 因素A 即 行因素(样本),因素B 即 列因素(指标/特征) 相关性检验 仅是说 线性相关,不能判非线性。 相关与独立不是一回事 参考 感谢帮助! 如何通俗易懂地解释「协方差」与「相关系数」的概念? 《多元统计分析与R语言建模》王斌会 《R语言实战》Robert I. Kabacoff