Существующая функция для объединения стандартных отклонений в R? - PullRequest
5 голосов
/ 10 февраля 2012

У меня 4 популяции с известными средними и стандартными отклонениями.Я хотел бы знать великое среднее и великое сд.Величина среднего, очевидно, проста для вычисления, но в R есть удобная функция полезности weighted.mean ().Существует ли подобная функция для объединения стандартных отклонений?

Расчет не сложен , но существующая функция сделает мой код чище и проще для понимания.

Дополнительный вопрос, какие инструменты вы используете для поиска подобных функций?Я знаю, что это должно быть там, но я провел много поисков и не могу найти это.Спасибо!

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Я не знаю конкретного пакета или имени функции, но, кажется, легко свернуть вашу собственную функцию со страницы Википедии. При условии отсутствия совпадения в популяциях:

## N: vector of sizes
## M: vector of means
## S: vector of standard deviations

grand.mean <- function(M, N) {weighted.mean(M, N)}
grand.sd   <- function(S, M, N) {sqrt(weighted.mean(S^2 + M^2, N) -
                                      weighted.mean(M, N)^2)}
5 голосов
/ 10 февраля 2012

Население не перекрывается?

library(fishmethods)
combinevar

Например, пример в Википедии будет работать так:

xbar <- c(70,65)
s<-c(3,2)
n <- c(1,1)
combinevar(xbar,s,n)

, а стандартное отклонение будет равно sqrt (combvar (xbar, s, n) [2])

, если вы не хотите загружать библиотеку, функция выглядит следующим образом:

combinevar <- 
function (xbar = NULL, s_squared = NULL, n = NULL) 
{
    if (length(xbar) != length(s_squared) | length(xbar) != length(n) | 
        length(s_squared) != length(n)) 
        stop("Vector lengths are different.")
    sum_of_squares <- sum((n - 1) * s_squared + n * xbar^2)
    grand_mean <- sum(n * xbar)/sum(n)
    combined_var <- (sum_of_squares - sum(n) * grand_mean^2)/(sum(n) - 
        1)
    return(c(grand_mean, combined_var))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...