【问题标题】:Custom Error Bars in R - propagating error in gene expressionR中的自定义误差线 - 基因表达中的传播错误
【发布时间】:2015-09-20 18:43:13
【问题描述】:

你好,堆栈溢出,

TL;DR: I want to plot a bar plot with bar height 34.30, the upper error
bar extending to 55.68, and the lower error bar extending to 21.12. Can I set 
error bars manually in R?

加长版:

我正在对基因表达数据进行 delta delta Ct 计算。我想用条形图来展示我的表情。我还想通过我的计算传播错误。我可以按照 Livak 等人的方法在 R 或 excel 中进行传播计算。 (2001),并得到我的置信区间的上限和下限。但是在 R 中绘制这些是很麻烦的,因为我首先取每个处理的平均值,然后取这些平均值之间的差异,然后转换差异。因此,我正在绘制的值不会从多个测量中获得输入,而只是一个数字。因此,以标准方式绘制误差线是行不通的,因为一个数字没有误差范围。

自己进行计算,我可以找到 95% 置信区间的上限和下限。我希望能够将这些指定为误差线的上限和下限。这可能吗?

利瓦克等人。 (2001): http://www.gene-quantification.net/livak-2001.pdf

以下是数据的示例:

control
sample, gene1, gene2
1     , 30.00, 27.00
2     , 30.50, 27.25
3     , 29.50, 26.50
4     , 30.10, 26.90

treatment
sample, gene1, gene2
5     , 25.00, 27.00
6     , 25.50, 27.15
7     , 24.50, 26.80
8     , 25.10, 27.10

那么对照中每个基因的平均值为:gene1 = 30.03,gene2 = 26.91

The difference of control values is then: 30.03-26.91 = 3.12

然后处理中每个基因的平均值为:gene1 = 25.03,gene2 = 27.01

The difference of control values is then: 25.03-27.01 = -1.98

The difference in expression between the control and treatment is: -1.98 - 3.12 = -5.10

我正在绘制的表达式值(倍数变化)是:2^-(5.10) = 34.30 所以这个条形代表了 34.30 倍的表达变化。

我使用误差线的误差范围,我得到 (-5.10) 的上限和下限,然后以相同的方式(即 2^-X)转换它们以找到我的上限和转换后数据的误差范围的下限。我需要在转换之前计算上下界,否则我在表达式中的倍数变化时会得到错误的上下界。

Margin of Error = (StDev*(T-stat/sqrt(n))) = 0.70, thus

The upper bound of -5.10 is -4.40
The lower bound of -5.10 is -5.80

The transformed gene expression (2^-(-5.1)) is: 34.30

The transformed upper bound is:     55.68
The transformed lower bound is:     21.12

所以我希望我的条形图为 34.30 高,然后上部误差条延伸到 55.68,下部误差条延伸到 21.12。

谢谢!

【问题讨论】:

标签: r bar-chart errorbar


【解决方案1】:

是的,所以我相当有信心这是可能的。我假设您可以将上限和下限作为两个值向量,分别称为upperlower。先定义一个误差条函数:

# Adding error bars to the barplot
error.bar <- function(x, y, upper, lower=upper, length=0.1, ...){

    if(length(x) != length(y) | length(y) !=length(lower) | length(lower) != length(upper))
    stop("vectors must be same length")
    arrows(x,y+upper, x, y-lower, angle=90, code=3, length=length, lwd = 2, ...)

} 

然后用你想要的任何值制作你的情节。

# Plotting the barplot
barx <- barplot(values)

现在我们可以放置误差图,将y_valueslower_valuesupper_values 替换为您的数据或您的计算结果。

# Adding the bars.
error.bar(barx, y_values, lower_value, upper_value)

【讨论】:

  • 感谢 JCollerton,(感谢 Roman,我真的应该在这些日子里学习 ggplot 的方法)。介意我问几个问题吗?编辑:弄清楚一些事情,我想我可能已经让它按我想要的方式工作了。
  • 我的评论太长了。 K...我有一个上限值的向量(我希望条形的长度)和一个下限值的向量(同上)。一件事是我的上限值和下限值不相等。所以定义“...,upper,lower=upper,...”不是我想要在这些错误栏中的东西。如果我想分别绘制上下条,并从不同的向量接收它们的值,我将如何调整该功能? 当前正在查找 if(then) 函数定义
  • 好的,所以 lower=upper 是函数的默认参数。如果你不告诉它一个上限和下限向量,只告诉它一个上限向量,它将假设下限等于上限。但是,当您指定一个下界向量时,这会覆盖默认参数并获得您想要的效果。
  • 要指定一个向量,我会说“...,上,下,...”对吗?该定义无法更改我的较低误差线。我认为上半部分有效,因为上边的条似乎尺寸合适。下方的条形图继续仅反映上方的条形图。以每次处理 4 个样本为例,我有一个名为 upper 的向量和一个名为 lower 的向量,如下所示:upper
  • 好的,尝试从 lower=upper 中删除 =upper。
猜你喜欢
  • 1970-01-01
  • 2015-08-03
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
相关资源
最近更新 更多