PCA를 사용하여 다변량 데이터를 진단하는 데 자주 사용했습니다 (수십만 개의 변수와 수십 또는 수백 개의 샘플이있는 omics 데이터). 데이터는 종종 일부 그룹을 정의하는 몇 가지 범주 형 독립 변수를 사용한 실험에서 나온 것이므로 관심 그룹 사이의 분리를 나타내는 요소를 찾기 전에 종종 몇 가지 구성 요소를 거쳐야합니다. 나는 그러한 차별적 인 구성 요소를 찾는 다소 원시적 인 방법을 생각해 냈습니다.
- 이것이 어느 정도 합리적이고 정당한지, 그리고
- 이를 달성하는 더 좋은 방법이 있는지 여부.
이것은 탐색 적입니다. 다른 사람을 설득하기 전에 자신을 설득하고 싶습니다. 관심 그룹 (예 : 제어 대 치료)을 명확하게 구분하는 구성 요소가있는 경우 응답 분산의 작은 부분을 담당하더라도 감독 된 기계의 결과보다 더 신뢰할 수 있습니다. 배우기.
여기 내 접근 방식이 있습니다. R에서 pca3d의 "metabo"예제 데이터 세트를 사용하겠습니다.
아이디어는 독립 변수에 의해 각 성분의 분산이 얼마나 많은지를 설명하는 것입니다. 이를 위해 각 구성 요소에 대한 간단한 모델을 계산하고 를 메트릭으로 사용하여 구성 요소를 "가장 흥미로운"에서 "가장 흥미로운 것"으로 정렬합니다.
require( pca3d )
# data on metabolic profiles of TB patients and controls
data( metabo )
# first column is the independent variable
pca <- prcomp( metabo[,-1], scale.= T )
# create a model for each component
lm.m <- lm( pca$x ~ metabo[,1] )
lm.s <- summary( lm.m )
lm.r2 <- sapply( lm.s, function( x ) x$r.squared )
plot( lm.r2, type= "l" )
text( 1:length( lm.r2 ), lm.r2, 1:length( lm.r2 ), pos= 3 )
결과는 다음과 같습니다. 그림은의 독립 변수로 설명 된 각 성분의 분산 백분율을 보여줍니다 metabo[,1]
.
로 구성 요소를 정렬하여 표시 할 구성 요소 를 찾을 수 있습니다 . 처음 세 구성 요소는 2, 1 및 7입니다.order( lm.r2, decreasing= TRUE )
pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )
줄거리는 다음과 같습니다.
(빨간색과 녹색 범주는 환자가 아닌 두 그룹의 피험자이며, 구분할 수 없을 것으로 예상됩니다.)
내 질문을 재구성하기 위해
- 이 방법이 당신에게 의미가 있습니까? 내 문제는 데이터 준설처럼 너무 많이 보인다는 것입니다. 또한 직관적으로 테이블을 돌리고 독립 변수의 분산 부분이 각 변수로 설명되는 부분을 물어봐야한다고 생각합니다. 마지막으로, 나는 바퀴를 재발견하고 있다고 확신합니다.
- 더 좋은 것이 있습니까?
이 단계에서 부분 최소 제곱 또는 이와 유사한 것으로 전환하고 싶지는 않습니다. 내 분류의 맥락에서 PCA를 진단하고 싶습니다.
to find out what share of the overall variance in the data matrix is explained by a given classification
이것을 알고 싶다면 PCA가 필요하지 않습니다. (SStotal-SSwithin)/SStotal
SSwithin은 그룹 내 합산의 합입니다 . 여기서 그룹 간 제곱 대 총 제곱합의 비율을 계산하십시오 .
Is there anything better?
.