[英]How to filter genes in matrix based on quantile cutoff?
這是一個包含一些示例數據的矩陣:
S1 S2 S3
ARHGEF10L 11.1818 11.0186 11.243
HIF3A 5.2482 5.3847 4.0013
RNF17 4.1956 0 0
RNF10 11.504 11.669. 12.0791
RNF11 9.5995 11.398 9.8248
RNF13 9.6257 10.8249 10.5608
GTF2IP1 11.8053 11.5487 12.1228
REM1 5.6835 3.5408 3.5582
MTVR2 0 1.4714 0
RTN4RL2 8.7486 7.9144 7.9795
C16orf13 11.8009 9.7438 8.9612
C16orf11 0 0 0
FGFR1OP2 7.679 8.7514 8.2857
TSKS 2.3036 2.8491 0.4699
我有一個矩陣“ h”,其中有10,000個基因作為行名,而100個樣本作為列。 我需要選擇排名前20%的高度可變的基因進行聚類。 但是我不確定我給的是對還是錯。
因此,對於此過濾,我使用了genefilter R軟件包 。
varFilter(h, var.func=IQR, var.cutoff=0.8, filterByQuantile=TRUE)
您認為我給出的命令是否正確才能獲得前20%的高度可變基因? 誰能告訴我這種方法如何以統計方式起作用?
我自己沒有使用過此包,但是您正在使用的函數的幫助文件有以下說明:
當數據集分為兩個大致相等且相對同質的表型組時,IQR是一個合理的方差過濾器選擇。 如果數據集中的重要組小於總樣本量的25%,或者您對不尋常的個人級別模式感興趣,則IQR可能不夠敏感,無法滿足您的需求。 在這種情況下,您應該考慮使用不太可靠且比較敏感的方差度量(最簡單的方法是sd)。
由於您的數據有很多小組,因此遵循此建議將var.func
更改為var.func = sd
可能是明智的。
sd
計算標准偏差 ,這應該很容易理解。
但是 ,此函數期望其數據以expressionSet
對象的形式出現。 您收到的錯誤消息( Error in (function (classes, fdef, mtable) : unable to find an inherited method for function 'exprs' for signature '"matrix"'
)意味着您沒有這個,而只是簡單的矩陣代替。
我不知道如何創建一個expressionSet
,但是我認為這樣做太復雜了。 因此,我建議您使用注釋中發布的代碼:
vars <- apply(h, 1, sd)
h[vars > quantile(vars, 0.8), ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.