【问题标题】:Combined standard error function in RR中的组合标准误差函数
【发布时间】:2015-07-05 20:07:04
【问题描述】:

基本上,我有几个实验 (SITEs) 跨越了几年,每年都有自己的平均值和标准误差(基于每个重复的几次),我想计算总平均值和标准每个SITE 的错误。大均值似乎相当简单(平均均值?),但大标准误差对我来说不太直观。如何创建一个函数来计算与 dplyr 一起使用的大 SE?我的数据的简化版本如下:

> print(tbl_df(df), n=40)
Source: local data frame [76 x 8]

            SITE YEAR Myc  CO2     N      ANPP   ANPP.se nyears
1    Placerville 1991 ECM elev  Nlow    0.8100   0.14000      3
2    Placerville 1991 ECM  amb  Nlow    0.5400   0.07000      3
3    Placerville 1992 ECM elev  Nlow   53.1200  11.83000      3
4    Placerville 1992 ECM  amb  Nlow   26.9000   3.28000      3
5    Placerville 1993 ECM elev  Nlow 1068.3000 183.80000      3
6    Placerville 1993 ECM  amb  Nlow  619.0000 118.90000      3
7    Placerville 1991 ECM elev Nhigh    1.5700   0.26000      3
8    Placerville 1991 ECM  amb Nhigh    1.2800   0.17000      3
9    Placerville 1992 ECM elev Nhigh   75.4300  10.29000      3
10   Placerville 1992 ECM  amb Nhigh   56.2700   7.34000      3
11   Placerville 1993 ECM elev Nhigh 2118.9000 696.10000      3
12   Placerville 1993 ECM  amb Nhigh 1235.8000 260.40000      3
13   Jasper_FACE 1999  AM  amb  Nlow  386.3371  34.92557      5
14   Jasper_FACE 2000  AM  amb  Nlow  551.2848 124.64485      5
15   Jasper_FACE 2001  AM  amb  Nlow  552.1139  56.65156      5
16   Jasper_FACE 2002  AM  amb  Nlow  410.7524  27.64737      5
17   Jasper_FACE 2003  AM  amb  Nlow  503.6037  57.68552      5
18   Jasper_FACE 1999  AM  amb Nhigh  680.8551  67.99471      5
19   Jasper_FACE 2000  AM  amb Nhigh  480.5723  33.52034      5
20   Jasper_FACE 2001  AM  amb Nhigh  744.5131 125.32998      5
21   Jasper_FACE 2002  AM  amb Nhigh  603.6049  62.19760      5
22   Jasper_FACE 2003  AM  amb Nhigh  711.5993 142.04351      5
23   Jasper_FACE 1999  AM elev  Nlow  488.5912  61.47564      5
24   Jasper_FACE 2000  AM elev  Nlow  406.2773  32.90862      5
25   Jasper_FACE 2001  AM elev  Nlow  543.3647  55.28956      5
26   Jasper_FACE 2002  AM elev  Nlow  480.7108  65.24701      5
27   Jasper_FACE 2003  AM elev  Nlow  473.6844  52.01606      5
28   Jasper_FACE 1999  AM elev Nhigh  638.0252  58.34743      5
29   Jasper_FACE 2000  AM elev Nhigh  505.2054 171.62024      5
30   Jasper_FACE 2001  AM elev Nhigh  655.1032 130.01279      5
31   Jasper_FACE 2002  AM elev Nhigh  677.7134  98.84845      5
32   Jasper_FACE 2003  AM elev Nhigh  926.3433 143.26525      5
33 Merrit_Island 1997 ECM  amb  Nlow  137.0940  22.20700      4
34 Merrit_Island 1998 ECM  amb  Nlow  296.4870  53.32100      4
35 Merrit_Island 1999 ECM  amb  Nlow  350.9470  57.85000      4
36 Merrit_Island 2000 ECM  amb  Nlow  494.6030  66.70200      4
37 Merrit_Island 1997 ECM elev  Nlow  203.7970  26.63300      4
38 Merrit_Island 1998 ECM elev  Nlow  467.8080  62.33200      4
39 Merrit_Island 1999 ECM elev  Nlow  586.8180  91.26500      4
40 Merrit_Island 2000 ECM elev  Nlow  866.3460 126.77000      4

我需要在 R 中实现一个函数来在 dplyr 中指定一个函数来计算每个组的总平均值和总 se,如下所示:

tempSE <- df %>% group_by(SITE,CO2,N,nyears) %>% 
  summarise(ANPP=mean(ANPP),
  SD=grand.sd(ANPP.se))

编辑:如果您的答案涉及包含样本量的方程式:在数据集上,nyears 列是年数,这是每个SITECO2治疗的测量次数我需要平均为。另一方面,在每一年中,每个ANPPmean 和ANPP.se都基于多个重复或绘图,这是 SE 中包含的样本量,但未在任何列中指定。这两种样本量中的哪一种是我需要的?

谢谢

【问题讨论】:

  • variance of A+B=variance of A+variance of B+ co-variance of A and B ?.见en.wikipedia.org/wiki/Variance
  • @Legalizelt n 在 SITE 之间是不同的,但在 SITE 内的 CO2 处理之间是相同的。我不知道如何计算加权平均值
  • “n”=样本大小,抱歉
  • 我不知道我需要加权的样本量是每次处理的重复次数还是每次处理的数据年数......
  • 这听起来更像是一个统计建议,而不是编程建议。你能记下你想使用的完整公式吗?

标签: r function dplyr standard-error


【解决方案1】:

如果我们对样本量一无所知,就不可能计算出大均值或大标准误。这是一个小例子:抛硬币,将“正面”计为 1,将“反面”计为 0。我们第一个样本的平均值是 0.45,第二个样本的平均值是 0.65。如果两个样本大小相同,则总平均值为 0.55。但如果样本量分别为 900 和 100,我们有 405+65 个“头”,所以总平均值为 0.47。 如果样本量已知,则可以按如下方式计算总均值:

  1. 将每个单独的平均值乘以相应的样本量。
  2. 总结这些数字,
  3. 将该总和除以各个样本量的总和。

要计算标准误差,请执行以下操作:

  1. 将每个单独标准误差的平方乘以相应的样本量。
  2. 为每个数字加上相应平均值的平方。
  3. 将这些数字中的每一个乘以相应的样本量。 (这些是采样值的平方和。)
  4. 总结这些数字。 (现在我们得到了所有平方的总和。)
  5. 将该总和除以各个样本大小的总和。 (这给出了平方的平均值。)
  6. 减去总均值的平方。 (-> 差异)
  7. 取该数字的平方根。 (-> 标准差)
  8. 将该数字除以各个样本量之和的平方根。

为此编写一个 R 函数应该很简单。但是我们需要样本量,至少要达到一个公因子。

【讨论】:

  • 感谢您的回答,它阐明了等式。但是,我有一个我不完全理解的大问题:我可以看到您可能指的是两种不同的样本量:i)在每个 SITE、YEAR 和 CO2 处理中,每个样本均值和 SE 是由几个复制品组成的,所以每个处理的重复次数是一个潜在的样本量; ii) 如果我计算每个 SITE 和 CO2 处理的总平均值和 SE,则样本量将是年数,例如,对于 SITE “Merrit_Island”,有 4 年的测量值,因此样本量为 4。你会使用样本量吗?
  • 基本上重复次数就是样本量。如果每年的重复次数是常数,则样本量与年数成正比,然后我们可以用年数替换样本量。这是因为在计算中,样本大小的任何公因子都被抵消了。但如果每年的重复次数不是一个常数,这种简化是不可能的。
  • 听从您的建议:tempSESum &lt;- tempSE %&gt;% group_by(id,SITE,Myc,CO2,N,nyears) %&gt;% summarise(ANPP.mean=mean(ANPP), sumSquares= sum(squares),sumN=sum(nyears)) %&gt;% mutate (meanSquares=(sumSquares/sumN), var= meanSquares - (ANPP.mean)^2, SEII=sqrt(var))
  • 看起来还可以吗?基于具有相似平均值的结果的 SE 大小,由此产生的大 SE 看起来太高了
  • 方差大的原因是,均值不是很相似。假设您有两个样本,并且每个样本都是常数。那么他们每个人的方差都是0。但是如果第一个样本的常数值为+100,第二个样本的常数值为-100,则总方差非常高,因为值+/-100与总方差之间的距离均值 0 非常高。
猜你喜欢
  • 2022-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2013-06-03
  • 1970-01-01
  • 2012-03-27
相关资源
最近更新 更多