(Correspondence Analysis, CA)
三种关系:
Q:对应分析 比较 因子分析? A:因子分析中,可用较少公共因子 来提取 样本数据 绝大部分信息,以便通过较少因素而获得足够信息, 缺点:对于R型、Q型因子分析,即对 变量、样本 分别做因子分析,并没有考虑变量与样本间联系,损失了一部分信息。 而且,在实际问题中,样本数目远大于变量数目,在Q型因子分析时,计算量远大于R型因子分析。 对应分析就是 通过 数学变换,把 Q型 、R型 因子分析 结合起来
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不独立
,
即收入与满意度 之间 有密切联系,可以进一步做对应分析。
注意:
相关性 与 独立 不是一回事
相关性检验 仅表 线性相关,对于非线性无作用
library(ca)
cal = ca(d10.1)
summary(cal)
value 为特征值,cum% 为累积贡献率
cal$rowcoord # 行坐标
Q型因分、因子载荷矩阵(loadings)
cal$colcoord # 列坐标
R型因分
plot(cal)
见图,相似的类会聚在一起,
据上图 可 将 样本点、变量 分为 3组:
d10.2 = read.xlsx('../Res/mvstats5.xlsx', 'd10.2', rowNames=T)
ca2 = ca(d10.2);ca2
plot(ca2)
summary(ca2)
对应分析在农民收入分析中的应用
library(openxlsx)
Case10 = read.xlsx('../Res/mvcase5.xlsx', 'Case10', rowNames=T);Case10
C10d.1 = Case10[1:6,] # 文化程度数据
chisq.test(C10d.1)
C10d.2 = Case10[7:13,] # 总收入数据
chisq.test(C10d.2)
library(ca)
Ca1 = ca(C10d.1);summary(Ca1)
Ca1$rowcoord[,1:2]
Ca1$colcoord[,1:2]
plot(Ca1)
据图 可将 样品 与 变量 分为三类:
Ca2 = ca(C10d.2);summary(Ca2)
Ca2$rowcoord[,1:2]
Ca2$colcoord[,1:2]
plot(Ca2)
据图 可将 广东省农民 的收入来源与收入水平 的 相关关系 分为三类
scale()
默认,scale()
对矩阵或数据框 的指定列 进行 均值为0、标准差为1 的标准化
newdata <- scale(mydata)
newdata <- scale(mydata)*SD + M
M: 想要的均值
SD: 想要的标准差
注意:在非数值型的列上使用scale() 将会报错
newdata <- transform(mydata, myvar = scale(myvar)*10+50)
经数据标准化后(均值0,标准差1 -> 方差1),协方差矩阵 等同 相关系数矩阵 标准差 就是 方差开根号 理由如下:
毫无疑问,分母 也可理解为 X的标准差 × Y的标准差
而经数据标准化后,标准差为1,所以此时分母为1,相关系数=协方差
标准化: 消除 列间 量纲差异,无法消除(行间)样本间 量纲差异
独立性效验 仅 判 因素A和因素B是否 独立,若 A、B独立,则 无需 进行 对应分析 这里 因素A、因素B 是 二维列联表 后 因素, 因素A 即 行因素(样本),因素B 即 列因素(指标/特征)
相关性检验 仅是说 线性相关,不能判非线性。 相关与独立不是一回事
感谢帮助!