2012-02-10 15 views
5

Ho 4 popolazioni con mezzi noti e deviazioni standard. Mi piacerebbe conoscere il grande significato e il grande sd. La media generale è ovviamente semplice da calcolare, ma R ha una funzione comoda utility, weighted.mean(). Esiste una funzione simile per combinare le deviazioni standard?funzione esistente per combinare le deviazioni standard in R?

The calculation is not complicated, ma una funzione esistente renderebbe la mia più pulito il codice e più facile da capire.

Domanda bonus, quali strumenti usi per cercare funzioni come questa? So che deve essere là fuori, ma ho fatto molte ricerche e non riesco a trovarlo. Grazie!

+0

Per quanto riguarda la tua domanda di ricerca, 'findFn' dal pacchetto ** sos ** è uno strumento utile. – joran

+0

@AndresT, sì, le popolazioni sono non sovrapposte. –

+0

@joran Grazie, non sapevano che, inizierò a cercare in quel modo. Sto indovinando che la "deviazione standard" sarà un termine popolare nei manuali R –

risposta

4

sono le popolazioni non si sovrappongono?

library(fishmethods) 
combinevar 

Per esempio l'esempio in Wikipedia funzionerebbe in questo modo:

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

e la deviazione standard sarebbe sqrt (combinevar (Xbar, s, n) [2])

se non voglio scaricare la libreria la funzione va così:

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)) 
} 
4

Non so di un pacchetto specifico o fu nome della traduzione ma sembra facile rotolare la propria funzione dalla pagina di Wikipedia. Supponendo di non sovrapporre le popolazioni:

+0

Grazie mille per questa risposta flodel. Osservando la formula su wikipedia, non pensavo che avrei potuto rendere il calcolo semplice come hai fatto tu. In effetti, potrei semplicemente usarlo, ma la risposta di AndresT è un po 'più completa per gli altri che trovano questa domanda. Grazie! –