Объединенная стандартная функция ошибок в R

В принципе у меня есть несколько экспериментов (SITEs) в течение нескольких лет, каждый год со своим собственным средним значением и стандартной ошибкой (на основе нескольких повторов каждая), и я хочу рассчитать общее среднее значение и стандартную ошибку для каждого SITE, Большое среднее значение кажется довольно простым (среднее значение?), Но большая стандартная ошибка для меня менее интуитивна. Как я могу создать функцию для расчета большого SE для использования с dplyr? Упрощенная версия моих данных ниже:

> 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 а также CO2лечение мне нужно в среднем для. С другой стороны, в течение каждого года каждый ANPPзначит и ANPP.seосновывается на количестве копий или графиков, которые являются размером выборки, содержащейся в SE, но не указанным ни в одном столбце. Какой из этих двух типов выборки мне нужен?

Спасибо

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 для этого должно быть простым. Но нам нужны размеры выборки, по крайней мере, до общего фактора.

Другие вопросы по тегам