При использовании функции princomp()
в R возникает следующая ошибка: "covariance matrix is not non-negative definite"
.
Я думаю, это связано с тем, что некоторые значения равны нулю (фактически близки к нулю, но становятся равными нулю при округлении) в ковариационной матрице.
Есть ли способ продолжить работу с PCA, когда ковариационная матрица содержит нули?
[К вашему сведению: получение ковариационной матрицы является промежуточным этапом внутри вызова princomp()
. Файл данных для воспроизведения этой ошибки можно скачать отсюда - http://tinyurl.com/6rtxrc3]
stats:::princomp.default
, вы увидите, что ошибка возникает, когда у вас есть отрицательные собственные значения в ковариационной матрице. - person Richie Cotton   schedule 19.12.2011cv <- matrix(c(1, 2, 2, 1), nrow = 2); princomp(covmat = cv)
воспроизводит ошибку. Не знаю, насколько это актуально для вашего набора данных. - person Richie Cotton   schedule 19.12.2011princomp()
), я обычно сначала заменяюNA's
на0's
, а затем добавляю транспонирование матрицы в исходную матрицу (что-то вроде этого -matrix <- matrix + t(matrix)
) - person 384X21   schedule 19.12.2011