選擇分隔組的 PCA 組件
我經常使用 PCA(具有數十萬個變量和數十或數百個樣本的組學數據)來診斷我的多變量數據。數據通常來自具有定義某些組的幾個分類自變量的實驗,並且我經常必須通過一些組件才能找到顯示感興趣組之間分離的組件。我想出了一種相當原始的方法來找到這種區分組件,我想知道
- 這在多大程度上是合理/合理的,以及
- 是否有更好的方法來實現相同的目標。
請注意,這是探索性的。在說服別人之前,我想說服自己。如果我看到有一些組件可以清楚地區分感興趣的組(例如控制組與治療組),即使它們對響應的一小部分方差負責,我相信它比監督機器的結果更重要學習。
這是我的方法。我將使用 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]
。我們可以對組件進行排序找出要顯示的內容
order( lm.r2, decreasing= TRUE )
;前三個組件是 2、1 和 7。pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )
這是情節:
(紅色和綠色類別是兩組非患者的受試者,預計無法區分。)
重新提出我的問題,
- 這種方法對您有意義嗎?我的問題是它看起來太像數據挖掘了。另外,直覺上我認為也許我應該轉過頭來問每個變量解釋了自變量中方差的哪一部分?最後,我(幾乎)確定我正在重新發明輪子,很糟糕,所以我的第二個問題是
- 有更好的嗎?
請注意,在這個階段我不想切換到偏最小二乘法或類似的東西;我只想根據我的分類來診斷 PCA。
您的問題 #1 的答案是肯定的,您的解決方案相當於數據挖掘。您的問題 #2 的答案是肯定的,文獻中有更好的方法。
您的方法的核心問題是您沒有解決高維數據問題,即當. 您的解決方案非常武斷,缺乏任何理論依據:我將為您指出一些可以幫助您在下面找到適當方法的文獻。
您正在運行類似於主成分回歸的分析,只是您交換了自變量和因變量,從而產生了大型多元(而不是多重)回歸分析。多元回歸要求您的樣本量大於因變量的數量,您在示例中完全違反了這一要求。
如果您真正致力於對數據運行 PCA,然後使用多元回歸,則必須使用適當的方法。例如,查看 MRCE 和相關方法 [1]。
然而,儘管您提出了一些令人費解的評論,但您目前所呈現的分析中的所有內容都表明您的最終目標是確定大量連續變量(metabo[,-1])和單個分類變量(metabo[ ,1])。PCA 是一種糟糕的方法來實現這一點。在高維情況下,這個問題有兩類一般的解:第一,假設稀疏的解,以及假設因子結構的解。
基於稀疏性的解決方案通常假設只有很小比例的變量實際上與感興趣的分類變量相關,並試圖找到這個小子集;例如參見 DALASS [2]。基於因子結構的方法假設您的判別變量是與分類變量具有真實關係的潛在潛在變量的表現形式。此類方法的一個示例是 DLDA [3]。
請注意,我不一定推薦我為您的數據提到的任何方法;在選擇合適的方法時,您必須仔細考慮您的目標和問題的先驗知識。
[1] Rothman, Levina, Zhu (2010)。具有協方差估計的稀疏多元回歸。計算和圖形統計雜誌,第 19 卷,第 4 期,第 947-962 頁。
[2] Nickolay T. Trendafilov, Ian T. Jolliffe, DALASS:通過 LASSO 進行判別分析中的變量選擇,計算統計和數據分析,第 51 卷,第 8 期,2007 年 5 月 1 日,第 3718-3736 頁。
[3] 於陽(2001)。一種用於人臉識別的高維數據直接LDA算法。模式識別 34, 2067-2070。