簡體   English   中英

如何根據分位數截止值過濾矩陣中的基因?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM