Saya telah melihat beberapa pertanyaan tentang pengelompokan dalam deret waktu dan khususnya pada pengelompokan, tetapi saya tidak berpikir mereka menjawab pertanyaan saya.
Latar Belakang: Saya ingin mengelompokkan gen dalam percobaan kursus waktu dalam ragi. Ada empat titik waktu mengatakan: t1 t2 t3 dan t4 dan jumlah gen G . Saya memiliki data dalam bentuk matriks M di mana kolom mewakili perawatan (atau titik waktu) t1 t2 t3 dan t4 dan baris mewakili gen. Oleh karena itu, M adalah matriks Gx4.
Masalah: Saya ingin mengelompokkan gen yang berperilaku sama di semua titik waktu t1 t2 t3 dan t4 serta dalam titik waktu tertentu ti , di mana saya berada di {1, 2, 3, 4} (Jika kita tidak bisa melakukan baik pengelompokan bersama, pengelompokan dalam suatu titik waktu lebih penting daripada pengelompokan lintas titik waktu). Selain itu, saya juga ingin menggambar peta panas.
Solusi Saya:
Saya menggunakan kode R di bawah ini untuk mendapatkan peta panas dan juga cluster yang menggunakan hclust
fungsi dalam R (melakukan pengelompokan hierarkis dengan jarak euclidean)
row.scaled.expr <- (expr.diff - rowMeans(expr.diff)) / rowSds(expr.diff)
breaks.expr <- c(quantile(row.scaled.expr[row.scaled.expr < 0],
seq(0,1,length=10)[-9]), 0,
quantile(row.scaled.expr[row.scaled.expr > 0],
seq(0,1,length=10))[-1] )
blue.red.expr <- maPalette(low = "blue", high = "red", mid = "white",
k=length(breaks.expr) - 1)
pdf("images/clust.pdf",
height=30,width=20,pointsize=20)
ht1 <- heatmap.2(row.scaled.expr, col = blue.red.expr, Colv = FALSE, key = FALSE,
dendrogram = "row", scale = "none", trace = "none",
cex=1.5, cexRow=1, cexCol=2,
density.info = "none", breaks = breaks.expr,
labCol = colnames(row.scaled.expr),
labRow="",
lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),
main=expression("Heat Map"),
ylab="Genes in the Microarray",
xlab="Treatments"
)
dev.off()
Baru-baru ini saya menemukan hopach
paket dalam Bioconductor yang dapat digunakan untuk memperkirakan jumlah cluster. Sebelumnya, saya secara acak menetapkan jumlah nampan untuk peta panas dan memotong pohon pada ketinggian yang sesuai untuk mendapatkan jumlah cluster yang ditentukan sebelumnya.
Kemungkinan Masalah dalam solusi saya:
- Saya mungkin tidak mengelompokkan gen dalam perawatan tertentu dan mengelompokkan gen hanya antar perlakuan atau sebaliknya.
- Mungkin ada cara yang lebih baik untuk mendapatkan peta panas untuk pola yang ingin saya lihat (gen serupa dalam suatu perlakuan dan lintas perlakuan).
- Mungkin ada metode visualisasi yang lebih baik yang tidak saya sadari.
catatan:
csgillespie (moderator) memiliki dokumen yang lebih umum di situs webnya di mana ia membahas semua aspek analisis kursus waktu (termasuk heatmaps dan clustering). Saya akan sangat menghargai jika Anda bisa mengarahkan saya ke sebuah artikel yang menggambarkan peta panas dan pengelompokan secara detail.
Saya telah mencoba
pvclust
paket itu, tetapi mengeluh bahwa M adalah singular dan kemudian crash.