Я пытался выполнить нелинейный или категоричный канонический корреляционный анализ для набора данных, состоящего только из номинальных и порядковых переменных. Эта функция OVERALS есть в пакете SPSS и, с другой стороны, в пакете homals
в R или в пакете Gifi
, который должен быть заменой. В моем случае я использовал функцию homals()
в пакете homals
, но некоторые результаты были озадачивающими, в частности собственные значения. Я в основном ознакомился с этими ссылками, как показано ниже.
- ван де Вельден, Мишель. «Об обобщенном каноническом корреляционном анализе». В Материалы 58-го Всемирного статистического конгресса . 2011
- де Леув, Ян и Патрик Мэйр. 2009. «Методы Gifi для оптимального масштабирования в R: пакетные гомалы». Журнал статистического программного обеспечения 31 (4).
- Гифи, Альберт. 1990. Нелинейный многомерный анализ . Чичестер; Нью-Йорк: Уайли.
Однако объяснения относительно собственных значений были совершенно непонятны, и как это относится к выходу 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()
? И как интерпретировать эти значения с точки зрения того, насколько дисперсия исходного набора данных объясняется преобразованными данными?