R中的组合标准误差函数

时间:2015-07-05 20:07:05

标签: r function dplyr standard-error

基本上,我有几个实验(SITE s)跨越几年,每年都有自己的平均值和标准误差(基于每个重复几次),我想计算宏观均值每个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中指定一个函数来计算每个组的宏均值和宏观值,如下所示:

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

编辑:如果您的答案涉及包含样本大小的公式:在数据集上,列nyears是年数,即每SITE和{{1}的测量数治疗我需要平均。另一方面,在每年内,每个CO2平均值和ANPP基于多个重复或绘图,这是SE中包含的样本大小,但未在任何列中指定。我需要这两种样本中的哪一种?

由于

1 个答案:

答案 0 :(得分:0)

如果我们对样本量没有任何了解,则无法计算宏均值或宏标准误差。这是一个小例子:硬币翻转,将“头”计为1,将“尾”计为0.我们的第一个样本的平均值为0.45,第二个样本的平均值为0.65。如果两个样本具有相同的大小,则平均值为0.55。但如果样本量分别为900和100,我们有405 + 65“头”,所以平均值为0.47。 如果样本大小已知,则可以按如下方式计算大均值:

  1. 将每个单独的平均值乘以相应的样本大小。
  2. 总结这些数字,
  3. 将该总和除以各个样本量的总和。
  4. 要计算标准错误,请按以下步骤操作:

    1. 将每个标准误差的平方乘以相应的样本大小。
    2. 对于这些数字中的每一个,添加相应均值的平方。
    3. 将每个数字乘以相应的样本大小。 (这些是采样值的平方和。)
    4. 总结这些数字。 (现在我们得到了所有正方形的总和。)
    5. 将该总和除以各个样本量的总和。 (这给出了正方形的平均值。)
    6. 减去平均值的平方。 ( - &gt; Variance)
    7. 取该数字的平方根。 ( - &gt;标准差)
    8. 将该数字除以各个样本数量之和的平方根。
    9. 为此编写R函数应该很简单。但我们需要样本量,至少要达到一个共同因素。