У меня есть корреляционная матрица:Собственное значение разложения корреляционной матрицы
cor.table <- matrix(sample(c(0.9,-0.9) , 2500 , prob = c(0.8 , 0.2) , repl = TRUE) , 50 , 50)
diag(cor.table) <- 1
я пытаюсь сделать собственное значение разложения:
library(psych)
fit<-principal(cor.table, nfactors=50,rotate="none")
или
stopifnot(eigen(cor.table)$values > 0)
В обоих случаях я получаю сообщение об ошибке :
Error in eigens$values < .Machine$double.eps :
invalid comparison with complex values
Что я делаю неправильно?
Возможно, вам понадобится симметричная матрица, которой у вас нет в вашем примере. – dayne
Сделав матрицу симметричной - используя тот же метод в ответе, который я дал вам ранее (http://stackoverflow.com/questions/18763723/create-covariance-matrix-from-correlation-table-with-both-positively-and -negativ/18764141 # 18764141) - Я не получил ошибку с 'eigen (cor.table)'. – dayne
Чтобы иметь действительную корреляционную матрицу, вам также необходимо убедиться, что собственные значения неотрицательны. –