30道统计练习题笔记

题目链接:https://mp.weixin.qq.com/s/0dGPaHh1VftCdZ4xOaE_Wg

基础概念

Q1

data(iris)
  • 前4列定量,最后1列定性。

Q2

#以第1列Sepal.Length为例
mode <- function(x) {
  uniq <- unique(x)
  tab <- tabulate(match(x,uniq))
  uniq[tab == max(tab)]
}
apply(iris[,1:4],2,mode)#众数
apply(iris[,1:4],2,fivenum)#分位数
apply(iris[,1:4],2,mean)#平均数

Q3

table(iris$Species)

Q4

apply(iris[,1:4],2,sd)#标准差
apply(iris[,1:4],2,var)#方差

Q5

?cor
cor(iris$Sepal.Length,iris$Sepal.Width, method = "pearson")
cor(iris$Sepal.Length,iris$Sepal.Width, method = "kendall")
cor(iris$Sepal.Length,iris$Sepal.Width, method = "spearman")

Q6

iris_scale=t(scale(t(iris[,1:4])))
apply(iris_scale,2,mean)#平均数
apply(iris_scale,2,sd)#标准差

Q7

cor(iris_scale[,1],iris_scale[,2], method = "pearson")
cor(iris_scale[,1],iris_scale[,2], method = "kendall")
cor(iris_scale[,1],iris_scale[,2], method = "spearman")

Q8

  • 做到这里发现上当了,前面的计算居然要重复好几次,那写个函数吧!
do_it <- function(data){
  mode <- apply(data[,1:4],2,mode)#众数
  fivenum <- apply(data[,1:4],2,fivenum)#分位数
  mean <- apply(data[,1:4],2,mean)#平均数
  frequence <- table(data$Species)
  sd <- apply(data[,1:4],2,sd)#标准差
  var <- apply(data[,1:4],2,var)#方差
  cor <- cor(data[,1],data[,2])

  data_scale=t(scale(t(data[,1:4])))
  mean_scale <- apply(data_scale,2,mean)#平均数
  sd_scale <- apply(data_scale,2,sd)#标准差
  cor_scale <- cor(data_scale[,1],data_scale[,2])

  return(c(mean=mean, fivenum=fivenum, sd=sd, var=var, frequence=frequence,
           mode=mode, cor=cor, mean_scale=mean_scale, sd_scale=sd_scale,
           cor_scale=cor_scale))
}

iris_set <- iris[iris$Species=="setosa",]
iris_ver <- iris[iris$Species=="versicolor",]
iris_vir <- iris[iris$Species=="virginica",]

do_it(iris_set)
do_it(iris_ver)
do_it(iris_vir)

Q9

data(mtcars)
  • 可以看到和刚才的数据结构有所不同,所以我们对do_it函数略作修改
do_it <- function(data){
  mode <- apply(data,2,mode)#众数
  fivenum <- apply(data,2,fivenum)#分位数
  mean <- apply(data,2,mean)#平均数
  frequence <- table(data$cyl)
  sd <- apply(data,2,sd)#标准差
  var <- apply(data,2,var)#方差
  cor <- cor(data[,1],data[,2])
  
  data_scale=t(scale(t(data)))
  mean_scale <- apply(data_scale,2,mean)#平均数
  sd_scale <- apply(data_scale,2,sd)#标准差
  cor_scale <- cor(data_scale[,1],data_scale[,2])
  
  return(c(mean=mean, fivenum=fivenum, sd=sd, var=var, frequence=frequence,
           mode=mode, cor=cor, mean_scale=mean_scale, sd_scale=sd_scale,
           cor_scale=cor_scale))
}

do_it(mtcars)

Q10

rm(list = ls())
options(stringsAsFactors = F)
library(airway)
data(airway)
RNAseq_expr=assay(airway)

colData(airway)
RNAseq_gl=colData(airway)[,3]
table(RNAseq_gl)

M <- cor(RNAseq_expr)
pheatmap::pheatmap(M)

表达矩阵相关

Q1

load("expr.Rdata")

tmp=log2(RNAseq_expr[,1]+1)
mean(tmp)
sd(tmp)

Q2

a=rnorm(length(tmp),mean = mean(tmp),sd = sd(tmp))

Q3

tmp=RNAseq_expr[RNAseq_expr[,1]>5,]
tmp=log2(tmp[,1]+1)
mean(tmp)
sd(tmp)
a=rnorm(length(tmp),mean = mean(tmp),sd = sd(tmp))

Q4

x=RNAseq_expr[,1]
x=x[x>5]
x=log2(x)

y=RNAseq_expr[,2]
y=y[y>5]
y=log2(y)

t.test(x,y)

Q5

t.test(RNAseq_expr[which.max(rowSums(RNAseq_expr)),]~RNAseq_gl)

Q6

t.test(RNAseq_expr[which.max(apply(RNAseq_expr,1,mad)),]~RNAseq_gl)

Q7

RNAseq_expr_log=log2(RNAseq_expr+1)
t.test(RNAseq_expr_log[which.max(rowSums(RNAseq_expr_log)),]~RNAseq_gl)
which.max(rowSums(RNAseq_expr_log))
t.test(RNAseq_expr_log[which.max(apply(RNAseq_expr_log,1,mad)),]~RNAseq_gl)
which.max(apply(RNAseq_expr_log,1,mad))
  • 由于log不会改变大小关系,rowSums最大的基因不变,t检验结果自然也不变,不过mad值最大的基因改变了,t检验结果也相应改变了。

Q8

tmp=apply(RNAseq_expr_log,1,mad)
tmp=sort(tmp)
idex=names(tail(tmp,100))
# idex
# RNAseq_expr_log[idex,]
plot(hclust(dist(t(RNAseq_expr_log[idex,])))) #按列聚类
plot(hclust(dist(RNAseq_expr_log[idex,]))) #按行聚类

Q9

tmp=apply(RNAseq_expr_log,1,sd)
tmp=sort(tmp)
idex=names(tail(tmp,100))
# idex
# RNAseq_expr_log[idex,]
plot(hclust(dist(t(RNAseq_expr_log[idex,])))) #按列聚类
plot(hclust(dist(RNAseq_expr_log[idex,]))) #按行聚类

Q10

tmp=apply(RNAseq_expr_log,1,mad)
tmp=sort(tmp)
idex=names(tail(tmp,100))
dat=RNAseq_expr_log[idex,]
pheatmap::pheatmap(scale(dat)) #对行归一化
pheatmap::pheatmap(t(scale(t(dat)))) #对列归一化

统计检验相关

准备工作

  rm(list = ls())
  options(stringsAsFactors = F)
  library(airway)
  data("airway")
  RNAseq_expr=assay(airway)
  #x=RNAseq_expr[1,]
  e1=RNAseq_expr[apply(RNAseq_expr,1,function(x) sum(x>0)>1),] #过滤低表达基因
  colnames(RNAseq_expr)
  RNAseq_gl=colData(airway)[,3]
  table(RNAseq_gl)

Q1

  # dim(e1)
  # x=e1[5,]
  # tmp=e1[1:2,]
  # apply(tmp,1,function(x) t.test(x~RNAseq_gl)$p.value)
  apply(e1,1,function(x) t.test(x~RNAseq_gl)$p.value)
  • 问题在于t.test无法比较各项相等的两个向量

Q2

  e1_a=e1[,RNAseq_gl=='trt']
  e1_b=e1[,RNAseq_gl=='untrt']
  a_filter=apply(e1_a, 1,function(x) sd(x)>0)
  b_filter=apply(e1_b, 1,function(x) sd(x)>0)
  table(a_filter,b_filter)
  e1=e1[a_filter | b_filter,]

Q3

  dim(e1)
  apply(e1,1,function(x) t.test(x~RNAseq_gl)$p.value)

Q4

  e2=log2(e1+1)
  apply(e2,1,function(x) t.test(x~RNAseq_gl)$p.value)

Q5

  p1=apply(e1,1,function(x) t.test(x~RNAseq_gl)$p.value)
  p2=apply(e2,1,function(x) t.test(x~RNAseq_gl)$p.value)
  cor(p1,p2)

最后,向大家隆重推荐生信技能树的一系列干货!

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

推荐阅读更多精彩内容