利用AUC来评估scRNA相同细胞类型在两个处理组别的差异

前言

《Cell type prioritization in single-cell data》,并学习利用AUC来分析相同细胞类型在两个处理组别的差异

目前在单细胞转录组中比较不同生物学状态之间差异的方式主要由两种:
(1)基于统计学假设检验方法比较实验组和对照组之间不同细胞类型比例是否由明显的差异
(2)基于统计学模型比较不同分组中分子水平的差异

因此,作者提出了一个问题,即哪一种cell type对单细胞数据中不同的处理(treat/control)最为敏感

原理

作者采用机器学习的方式,对某一cell type通过其在两个处理组别之间建立分类模型,然后训练该模型,比较预测的结果与实验的标签,通过AUC值来反应该cell type在这两个组别中的差异程度

比方说,对于某一种cell type,在WT/KO两个组中,会有不同的“表现”。因此在二分类模型中,AUC的值大小反应了该cell type在WT/KO两个组别之间的差异程度

AUC是表征分类模型性能的指标,AUC越高,分类性能越好,说明该cell type在两组中表达矩阵“特征”可以有效区分出WT/KO两个组,因此该cell type在两个组中差异明显(这里的差异指的是表达差异)
注:虽然同属于该cell type,但是在WT/KO组中基因的表达还是有一定差异的

input:


output:



AUC值表征该cell type在两个组别中差异的程度

代码

作者将某一cell type的两个组别的label作为响应变量(分类变量);将该cell type在两个组别中的单细胞表达矩阵作为决策变量

# y 为响应变量(分类变量),cell_types[1]代表其中一种cell type
y = labels[cell_types == cell_types[1]]
# X 为决策变量;expr代表这一种cell type在两个组别中的单细胞基因表达矩阵
## cell_types[1]代表其中一种cell type
X = expr[, cell_types == cell_types[1]]

核心代码如下:
建立模型

# set up model
## 利用随机森林建模
if (classifier == "rf") {
  importance = T
  clf = rand_forest(trees = !!rf_params$trees,
                    mtry = !!rf_params$mtry,
                    min_n = !!rf_params$min_n,
                    mode = mode) %>%
    set_engine(rf_engine, seed = 1, importance = T, localImp = T)
} 
## 利用线性模型建模
else if (classifier == "lr") {
  family = ifelse(multiclass, 'multinomial', 'binomial')
  if (is.null(lr_params$penalty) || lr_params$penalty == 'auto') {
    # first, get optimized penalty for dataset
    lr_params$penalty = withCallingHandlers({
      glmnet::cv.glmnet(X0 %>%
                          ungroup() %>%
                          select(-label) %>%
                          as.matrix() %>%
                          extract(, setdiff(colnames(.), 'label')),
                        X0$label,
                        nfolds = folds,
                        family = family) %>%
        extract2("lambda.1se")
    }, warning = function(w) {
      if (grepl("dangerous ground", conditionMessage(w)))
        invokeRestart("muffleWarning")
    })
  }
  
  clf = logistic_reg(mixture = lr_params$mixture,
                     penalty = lr_params$penalty,
                     mode = 'classification') %>%
    set_engine('glmnet', family = family)
}

建模以后用测试集去评估分类的性能,计算AUC值,来评估差异

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容