如何计算 R 平方值并评估模型是否适合多维缩放?

机器算法验证 r 多维尺度
2022-03-28 18:06:51

我想在 R 中使用多维缩放(MDS) 。我已经读过,通过尝试不同的kcmdscale()值来尝试有多少维度适合数据是很有用的,然后查看其中的方差比例是多少通过查看 R 平方值得到 MDS 结果。通常发现小于 0.6 的 R 平方值对于数据和维数之间的良好拟合是可以接受的。

但是,如何从生成的 MDS 计算 R 平方cmdscale()

2个回答

如果您指定维数,您可以查看结果的“GOF”组件(“拟合优度”)。它返回两个数字,除非距离矩阵不是正数,否则它们应该相等。

您也可以直接查看特征值:当它们变小时,您有足够的维度。

在以下示例中,两个维度似乎就足够了。

> cmdscale(eurodist, 1, eig=TRUE)$GOF
[1] 0.4690928 0.5401388
> cmdscale(eurodist, 2, eig=TRUE)$GOF
[1] 0.7537543 0.8679134
> cmdscale(eurodist, 3, eig=TRUE)$GOF
[1] 0.7904600 0.9101784
> r <- cmdscale(eurodist, eig=TRUE)
> plot(cumsum(r$eig) / sum(r$eig), 
       type="h", lwd=5, las=1, 
       xlab="Number of dimensions", 
       ylab=expression(R^2))
> plot(r$eig, 
       type="h", lwd=5, las=1, 
       xlab="Number of dimensions", 
       ylab="Eigenvalues")

cmdscale我个人更喜欢使用不会生成的 R 平方来衡量拟合优度。我写了一些额外的代码来执行这个;它在我的“认知与现实”博客文章中被描述和提供为以下条目:使用 R 计算 MDS 解决方案的拟合