Sıklıkla PCA (yüzbinlerce değişken ve düzinelerce veya yüzlerce örnek içeren omics verileri) kullanarak çok değişkenli verilerimi teşhis etmek için kullanılırdım. Veriler genellikle bazı grupları tanımlayan birkaç kategorik bağımsız değişkenle yapılan deneylerden gelir ve ilgilenen gruplar arasında bir ayrım gösterenleri bulabilmek için genellikle birkaç bileşenden geçmem gerekir. Bu tür ayrımcı bileşenleri bulmanın oldukça ilkel bir yolunu buldum ve merak ediyorum
- bunun ne ölçüde makul / haklı olduğu ve
- Bunu başarmanın daha iyi yolları olup olmadığı.
Bunun keşifçi olduğuna dikkat edin. Başkalarını ikna etmeden önce, kendimi ikna etmek istiyorum. İlgilenilen grupları açıkça ayırt eden bileşenler olduğunu görürsem (örneğin, kontrole karşı kontrol), cevapların varyansının küçük bir kısmından sorumlu olsalar bile, örneğin denetlenen makineden bir sonuçtan daha fazla güveniyorum öğrenme.
İşte yaklaşımım. R'de pca3d'den "metabo" örnek veri setini kullanacağım.
Fikir, her bir bileşenin ne kadar varyansının bağımsız değişken tarafından açıklanabileceğini değerlendirmektir. Bunun için, her bir bileşen ve kullanım için basit bir model hesaplanması "en ilginç" için "en ilginç" bileşenleri sipariş için bir ölçüt olarak.
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 )
İşte sonuç. Grafik, içindeki bağımsız değişken tarafından açıklanan her bileşenin varyans yüzdesini gösterir metabo[,1]
.
order( lm.r2, decreasing= TRUE )
pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )
İşte konu:
(Kırmızı ve yeşil kategoriler, hasta olmayan iki denek grubudur ve ayırt edilmemeleri beklenmelidir.)
Sorularımı yeniden formüle etmek için,
- Bu yaklaşım size mantıklı geliyor mu? Benim sorunum çok veri tarama gibi görünüyor olmasıdır. Ayrıca, sezgisel olarak bence belki tabloyu çevirmeli ve bağımsız değişkenteki varyansın hangi kısmının her değişken tarafından açıklandığını sormalıyım? Sonunda, çarkı zayıf bir şekilde yeniden icat ettiğimden (neredeyse) eminim, bu yüzden ikinci sorum
- Daha iyi bir şey var mı?
Bu aşamada kısmi en küçük karelere veya benzer bir şeye geçmek istemediğimi unutmayın; Sadece sınıflamam bağlamında PCA'yı teşhis etmek istiyorum.
to find out what share of the overall variance in the data matrix is explained by a given classification
Sadece bunu bilmek istiyorsanız PCA'ya ihtiyacınız yok. Gruplar arası kareler toplamının toplam kareler toplamına oranını hesaplayın: (SStotal-SSwithin)/SStotal
burada SSwithin, grup içindeki kareler toplamıdır.
Is there anything better?
.