Phân tích thành phần chính với dữ liệu nhóm


7

Trong thí nghiệm của tôi, tôi đã sử dụng 30 phần khác nhau của một loài. Một nhóm bị hạn hán và nhóm còn lại là kiểm soát. Tôi đã thu thập dữ liệu trên 6 thông số khác nhau. Tôi muốn biết việc gia nhập nào dễ chịu hay nhạy cảm hơn, việc gia nhập nào bị ảnh hưởng nhiều hơn bởi biến nào (tham số) và biến nào là quan trọng nhất, v.v. Tôi có thể sử dụng phân tích thành phần chính không? Tôi có nên kết hợp dữ liệu trong quá trình phân tích PCA hoặc trừ dữ liệu điều trị khỏi nhóm kiểm soát? hoặc làm thế nào tôi có thể làm PCR với cả dữ liệu nhóm?

Câu trả lời:


2

Nói chung, tôi sẽ không thấy vấn đề tại sao bạn không thể làm PCA để trực quan hóa và giải thích bộ dữ liệu đa biến của bạn (tuy nhiên vì bạn không cung cấp dữ liệu, tôi không thể chắc chắn). Đối với câu hỏi thứ hai của bạn, tôi sẽ giữ hai nhóm ( drought, control) và không trừ chúng khỏi nhau. Bằng cách đó, bạn sẽ có thể biết liệu điểm thành phần (được minh họa là điểm trong ô) sẽ phân cụm và cách tải thành phần (được minh họa là vectơ trong ô) liên quan đến chúng.

Dưới đây là một ví dụ để minh họa điều tôi muốn nói (cũng là câu hỏi thứ ba của bạn):

Tạo một tập dữ liệu mẫu (dựa trên mô tả của bạn):

set.seed(13)
d <- data.frame(
  treatment = rep(c("drought", "control"), each = 15),
  y1 = rnorm(30, 3, 1),
  y2 = rnorm(30, 6, 3),
  y3 = rnorm(30, 4, 2),
  y4 = rnorm(30, 9, 4),
  y5 = rnorm(30, 5, 2),
  y6 = rnorm(30, 12, 5)
)

Các bước sau đây có thể đạt được bằng nhiều cách khác nhau (có lẽ tốt hơn và hiệu quả hơn) với các Rgói khác nhau . Nhưng đây là những gì thường làm việc cho tôi:

PCA sử dụng FactoMineR :

require(FactoMineR)
my.pca = PCA(d[, c(2:7)], scale.unit = T, graph = F)

# EXTRACTING VALUES FROM my.pca FOR PLOT BELOW
PC1.ind <- my.pca$ind$coord[,1]
PC2.ind <- my.pca$ind$coord[,2]
PC1.var <- my.pca$var$coord[,1]
PC2.var <- my.pca$var$coord[,2]
PC1.expl <- round(my.pca$eig[1,2],2)
PC2.expl <- round(my.pca$eig[2,2],2)
Treatment <- factor(d$treatment,levels=c('drought', 'control'))
labs.var<- rownames(my.pca$var$coord)

Xây dựng cốt truyện với ggplot2gói:

require(ggplot2)
require(grid)
ggplot() +
  geom_point(aes(x = PC1.ind, y = PC2.ind, fill = Treatment), colour='black', pch = 21,size = 2.2) + 
  scale_fill_manual(values = c("red", "blue")) +   
  coord_fixed(ratio = 1) +
  geom_segment(aes(x = 0, y = 0, xend = PC1.var*2.8, yend = PC2.var*2.8), arrow = arrow(length = unit(1/2, 'picas')), color = "grey30") + 
  geom_text(aes(x = PC1.var*3.2, y = PC2.var*3.2),label = labs.var, size = 3) + 
  xlab(paste('PC1 (',PC1.expl,'%',')', sep ='')) + 
  ylab(paste('PC2 (',PC2.expl,'%',')', sep ='')) +
  ggtitle("Some title")

nhập mô tả hình ảnh ở đây

Các vectơ đại diện cho các thành phần tải, đó là mối tương quan của các thành phần chính với các biến ban đầu. Độ mạnh của mối tương quan được biểu thị bằng độ dài vectơ và hướng cho biết phần nào có giá trị cao cho các biến ban đầu.

Ngoài ra tôi sẽ đề nghị xem ở đây để biết thêm thông tin về cách diễn giải PCA nói chung (nếu điều đó là cần thiết).

Ngoài ra vì bạn có các nhóm được xác định trước, tức là droughtcontrolbạn cũng có thể xem xét phân tích phân biệt tuyến tính (LDA). Cả PCA và LDA đều là các kỹ thuật dựa trên xoay vòng. Trong khi PCA cố gắng tối đa hóa tổng phương sai được giải thích trong tập dữ liệu, LDA tối đa hóa sự phân tách (hoặc phân biệt đối xử) giữa các nhóm. Để biết thêm thông tin, bạn có thể xem candiscchức năng trong candiscgói hoặc lda()chức năng trong MASSgói chẳng hạn (cả trong R).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.