我一直在尝试对仅包含名义变量和序数变量的数据集执行非线性或分类规范相关性分析。 SPSS软件包中有此OVERALS函数,另一方面,R中的homals
软件包或应该替代的Gifi
软件包具有此功能。就我而言,我在homals()
包中使用了homals
函数,但是其中一些输出令人费解,尤其是特征值。我主要参考了以下参考文献。
但是,关于特征值的解释非常难以理解,并且它如何与R函数的输出相关。我模糊地理解损失函数的最小化可以转化为特征方程问题。我试图通过检查源代码来找出特征值是如何得出的,并且我认为我确定了一些相关的块(对象r
存储了相关的特征值):
ssum <- totalSum(dframe, x, y, active, rank, level, sets)
qv <- normX(centerX((1/mis) * ssum, mis), mis)
z <- qv$q
r <- abs(qv$r)/2
...
x <- z
再往下走
totalSum <- function (dframe, x, y, active, rank, level, sets)
{
nobj <- dim(x)[1]
ndim <- dim(x)[2]
nset <- length(sets)
stot <- array(0, dim(x))
for (l in 1:nset) {
indi <- sets[[l]]
jndi <- indi[which(active[indi])]
if (length(jndi) == 0)
(next)()
ss <- sumSet(dframe, nobj, ndim, y, jndi)
ii <- which(!is.na(dframe[, jndi[1]]))
stot[ii, ] <- stot[ii, ] + ss[ii, ]
}
return(stot)
}
normX <- function (x, w)
{
qq <- qr((1/sqrt(w)) * x)
list(q = (1/sqrt(w)) * qr.Q(qq), r = abs(diag(qr.R(qq))))
}
很快我就迷路了。同样,我的问题是:homals()
函数返回的特征值到底是什么?以及如何用转换后的数据解释原始数据集的多少方差来解释这些值?