Анализ основных компонентов (коллинеарные предикторы) и функция прогнозирования в R

У меня есть набор данных, который имеет 3 коллинеарных предиктора. В конце концов я извлекаю эти предикторы и использую анализ основных компонентов, чтобы уменьшить мультиколлинеарность. Я хочу использовать эти предикторы для дальнейшего моделирования.

  1. Неправильно ли использовать функцию predict и получать значения для 3 коллинеарных предикторов и использовать предсказанные значения для дальнейшего анализа?
  2. Или, поскольку первые две оси охватывают большую часть дисперсии (70% в демонстрационном наборе данных и 96% в фактическом наборе данных), следует ли использовать для дальнейшего анализа только значения из первых двух осей вместо трех прогнозируемых значений?
#Creating sample dataset
df<- data.frame(ani_id = as.factor(1:10), var1 = rnorm(500), var2=rnorm(500),var3=rnorm(500))

### Principal Component Analysis
myPCA1 = prcomp(df[,-1],data = df , scale. = TRUE, center = TRUE)
summary(myPCA1)

Это был мой результат из демонстрационного набора данных, когда я запустил

> summary(myPCA1)
Importance of components:
                          PC1    PC2    PC3
Standard deviation     1.0355 1.0030 0.9601
Proportion of Variance 0.3574 0.3353 0.3073
Cumulative Proportion  0.3574 0.6927 1.0000

Это показывает, что первые две оси охватывают почти 70% дисперсии.

Теперь правильно ли сделать следующее?

## Using predict function to predict the values of the 3 collinear predictors
axes1 <- predict(myPCA1, newdata = df)
head(axes1)

subset1 <- cbind(df, axes1)
names(subset1)

### Removing the actual 3 collinear predictors and getting a dataset with the ID and 3 predictors who are no long collinear
subset1<- subset1[,-c(2:4)]

summary(subset1)

## Merge this to the actual dataset to use for further analysis in linear mixed effect models

Спасибо за помощь! :)

PS: я прочитал https://stats.stackexchange.com/questions/72839/how-to-use-r-prcomp-results-for-prediction/72847#72847

Но все равно был неуверен. Вот почему я спрашиваю здесь.


person Srivats Chari    schedule 03.05.2021    source источник


Ответы (1)


Неправильно ли использовать функцию прогнозирования и получать значения для трех коллинеарных предикторов и использовать прогнозируемые значения для дальнейшего анализа?

Да. Значения такие же, как myPCA1$x

Или, поскольку первые две оси охватывают большую часть дисперсии (70% в демонстрационном наборе данных и 96% в фактическом наборе данных), следует ли использовать для дальнейшего анализа только значения из первых двух осей вместо трех прогнозируемых значений?

Я лично пользуюсь только первой осью (но это когда она объясняет не менее 70%). Однако я не вижу никаких проблем с использованием нескольких. Вторая ось ортогональна первой оси. Я предполагаю, что мое предостережение будет заключаться в том, что вам нужно будет понять, что представляет собой ось PCA с точки зрения ваших переменных-предикторов (например, увеличивает или уменьшает предиктор 1 вдоль PCA1 по сравнению с PCA2?). Включение третьего увеличивает количество предикторов в модели, и вы должны задаться вопросом, где стоит включать дополнительные 30 процентов вариации по сравнению с потенциальным переоснащением модели?

Также не уверен, что это вопрос для stackoverflow или перекрестной проверки.

person Leo Ohyama    schedule 03.05.2021
comment
Туре! Я на самом деле забыл, что прогнозирование только извлекает значения, так что на самом деле это не имеет значения. ›› На второй вопрос вы сказали 70%, скажем, если 3 оси в сумме составляют 70%, остальное я могу игнорировать? - person Srivats Chari; 04.05.2021
comment
70% - это моя произвольная отсечка. Я уверен, что есть литература, которая советует подобные пороги или отсечки. Если три оси в сумме составляют 70%, вы можете игнорировать другую ось для более поздних моделей. Как я упоминал ранее, мое предостережение заключается в том, что вы должны понимать, что представляет собой ось PCA с точки зрения ваших переменных-предикторов. - person Leo Ohyama; 04.05.2021