首页 文章

计算具有多个重复和类别的样本的斜率

提问于
浏览
0

我有一个相当复杂的实验数据集,因此我创建了一个简化的示例来帮助传达问题 . 完整的实验是一个时间过程,有8个时间点,4个重复,4个类别(简化为样本中的“性别”),以及来自26,000个基因的表达数据 . 我想如果有人可以帮助更简单的数据集来解决我的问题,它应该适用于更大的数据集 .

更简单的数据集(下面)有4个时间点,3个重复,2个基因和测量表达式(数字非负值,完整数据集中有小数) . 我能够将以下代码直接复制并粘贴到R中,并且工作正常 .

sample <- structure(list(time = c(0L, 0L, 0L, 0L, 0L, 0L, 15L, 15L, 15L, 
15L, 15L, 15L, 30L, 30L, 30L, 30L, 30L, 30L, 45L, 45L, 45L, 45L, 
45L, 45L, 0L, 0L, 0L, 0L, 0L, 0L, 15L, 15L, 15L, 15L, 15L, 15L, 
30L, 30L, 30L, 30L, 30L, 30L, 45L, 45L, 45L, 45L, 45L, 45L), 
replicate = c(1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 
3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 
2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 
3L, 1L, 1L, 2L, 2L, 3L, 3L), gender = structure(c(2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 
1L), .Label = c("female", "male"), class = "factor"), gene = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L), .Label = c("gene1", "gene2"), class = "factor"), 
expression = c(1000L, 2000L, 1010L, 2010L, 1020L, 2020L, 
900L, 1900L, 910L, 1910L, 920L, 1920L, 700L, 1700L, 710L, 
1720L, 720L, 1750L, 500L, 1020L, 520L, 1010L, 510L, 1050L, 
1100L, 2100L, 1110L, 2110L, 1120L, 2120L, 1000L, 2000L, 1010L, 
2010L, 1020L, 2020L, 800L, 1800L, 810L, 1820L, 820L, 1850L, 
600L, 1120L, 620L, 1110L, 610L, 1150L)), .Names = c("time", 
"replicate", "gender", "gene", "expression"), class = "data.frame", row.names = c(NA, 
-48L))
sample$replicate <- as.factor(sample$replicate)

应该是这样的:

> head(sample)
  time replicate gender  gene expression
1    0         1   male gene1       1000
2    0         1 female gene1       2000
3    0         2   male gene1       1010
4    0         2 female gene1       2010
5    0         3   male gene1       1020
6    0         3 female gene1       2020

我的问题是:

我想要一个斜率列表,使用每个基因在每个时间点的重复项计算 . 我不确定我是否期望斜率是线性的或非线性的,因此选择其中任何一个都是有帮助的 . 我预计斜坡大部分趋势向下,但也有一些可能是积极的 .

我知道用什么格式来实现我的目标 . 我玩过 reshapereshape2 包 . 有一次,我将数据与"time"作为列,26,000列具有表达式值,但对于 one 类别,只有 one 复制 . 最终我有4个重复和4个类别,26,000个独特的基因,所以这就是我如何落在这个特定的格式/结构上 .

在使用混合效果模型中的数据来查找时间和性别之间的相互作用(或我的大数据集中的“类别”)时,我需要斜率执行一些归一化计算,并将复制作为随机效果 .

这是我的 sessionInfo() ,如果它有帮助 . 使用 RStudio version 0.98.994 .

sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] graphics  grDevices utils     datasets  stats     methods   base     

other attached packages:
[1] lme4_1.1-7           Rcpp_0.11.3          Matrix_1.1-4         gplots_2.14.2            RColorBrewer_1.0-5  
[6] ggplot2_1.0.0        reshape_0.8.5        BiocInstaller_1.16.1

loaded via a namespace (and not attached):
 [1] bitops_1.0-6       caTools_1.17.1     colorspace_1.2-4   digest_0.6.4       gdata_2.13.3          grid_3.1.2        
 [7] gtable_0.1.2       gtools_3.4.1       KernSmooth_2.23-13 lattice_0.20-29    MASS_7.3-35        minqa_1.2.4       
[13] munsell_0.4.2      nlme_3.1-118       nloptr_1.0.4       plyr_1.8.1         proto_0.3-10       reshape2_1.4      
[19] scales_0.2.4       splines_3.1.2      stringr_0.6.2      tools_3.1.2

非常感谢你的帮助!如果我能澄清任何事情,请告诉我 .

1 回答

  • 1

    使用 dplyr 这个方法怎么样?

    library(dplyr)
    sample %>% 
        group_by(gene, gender) %>% 
        do(slope=lm(expression~time, .)$coef[2]) %>% 
        ungroup()
    

    这将返回

    gene gender     slope
    1 gene1 female -20.91111
    2 gene1   male -11.33333
    3 gene2 female -20.91111
    4 gene2   male -11.33333
    

相关问题