Объединенная стандартная функция ошибок в R
В принципе у меня есть несколько экспериментов (SITE
s) в течение нескольких лет, каждый год со своим собственным средним значением и стандартной ошибкой (на основе нескольких повторов каждая), и я хочу рассчитать общее среднее значение и стандартную ошибку для каждого 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. Если размеры выборки известны, среднее значение может быть вычислено следующим образом:
- Умножьте каждое среднее значение на соответствующий размер выборки.
- Суммируйте эти цифры,
- Разделите эту сумму на сумму отдельных размеров выборки.
Чтобы вычислить стандартную ошибку, выполните следующие действия:
- Умножьте квадрат каждой отдельной стандартной ошибки на соответствующий размер выборки.
- К каждому из этих чисел добавьте квадрат соответствующего среднего.
- Умножьте каждое из этих чисел на соответствующий размер выборки. (Это суммы квадратов выборочных значений.)
- Суммируйте эти цифры. (Теперь у нас есть сумма всех квадратов.)
- Разделите эту сумму на сумму отдельных размеров выборки. (Это дает среднее значение квадратов.)
- Вычтите квадрат великого среднего. (-> Дисперсия)
- Возьмите квадратный корень из этого числа. (-> Стандартное отклонение)
- Разделите это число на квадратный корень из суммы отдельных размеров выборки.
Написание функции R для этого должно быть простым. Но нам нужны размеры выборки, по крайней мере, до общего фактора.