Подтвердить что ты не робот

R-функция prcomp терпит неудачу с значениями NA, даже если NA разрешено

Я использую функцию prcomp для вычисления первых двух основных компонентов. Однако мои данные имеют некоторые значения NA, и поэтому функция вызывает ошибку. Определенная na.action, похоже, не работает, хотя она упоминается в файле справки ?prcomp

Вот мой пример:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

d$V1[5] <- NA
d$V2[7] <- NA

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

Я использую новейшую R версию 2.15.1 для Mac OS X.

Может ли кто-нибудь увидеть причину, пока prcomp не удается?

Вот мой новый пример:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

d$V1[5] <- NA

result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

Можно ли сохранить строку 5 в PC1 и PC2? В моем реальном наборе данных у меня, конечно, более двух столбцов переменных, и только некоторые из них отсутствуют, и я не хочу потерять оставшуюся информацию, скрытую в других значениях!

4b9b3361

Ответ 1

Да, это похоже на "особенность" (ошибка), что na.action полностью игнорируется, если вы не используете интерфейс formula. Ранее это было в списке развития R.

Я думаю, что это должно быть документировано или помечено как ошибка.

Чтобы быть понятным, это будет работать, потому что он обращается к интерфейсу формулы:

prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)

Ответ 2

Другое решение, если вы не хотите использовать интерфейс формулы,

prcomp(na.omit(d), center = TRUE, scale = TRUE)

которые состоят в применении na.omit непосредственно к кадру данных.