Построение R2 каждого / определенного компонента PCA на длину волны с R

У меня есть некоторый опыт использования PCA, но я впервые пытаюсь использовать PCA для спектральных данных...

У меня есть большие данные со спектрами, где я использовал команду prcomp для расчета PCA для всего набора данных. Мои результаты показывают, что 3 компонента объясняют 99% дисперсии.

Я хотел бы представить вклад каждого из трех компонентов PCA на каждой длине волны (с шагом 4, 200-1000 нм), как пример графика 2, который я нашел на этом сайте: https://learnche.org/pid / латентное переменное-моделирование / принципал-компонентный анализ / PCA-пример-анализ-оф-спектрально-данных

У кого-нибудь есть код, как я мог бы сделать это в R?

Спасибо

1 ответ

Решение

Я считаю, что матрица переменных нагрузок находится в model.pca$rotation см. документацию prcomp. Так что-то вроде этого должно быть сделано (используя пример на вашем сайте):

file <- 'http://openmv.net/file/tablet-spectra.csv'
spectra <- read.csv(file, header = FALSE)
n.comp <- 4

model.pca <- prcomp(spectra[,2:651],
                    center = TRUE,
                    scale =TRUE,
                    rank. = n.comp)
summary(model.pca)


par(mfrow=c(n.comp,1))
sapply(1:n.comp, function(comp){
  plot(2:651, model.pca$rotation[,comp], type='l', lwd=2,
       main=paste("Comp.", comp), xlab="Wavelength INDEX")

})

У меня нет значений длины волны, поэтому я использовал индексы массива здесь; вывод ниже.

Другие вопросы по тегам