我有4个已知方法和标准偏差的种群。我想知道盛大的意思和盛大sd。大的意思显然很容易计算,但R有一个方便的效用函数,weighted.mean()。标准差是否有类似的功能?现有函数结合R中的标准偏差?
The calculation is not complicated,但现有的函数会使我的代码更清晰,更易于理解。
奖金问题,你用什么工具来搜索这样的功能?我知道它必须在那里,但我做了很多搜索,找不到它。谢谢!
我有4个已知方法和标准偏差的种群。我想知道盛大的意思和盛大sd。大的意思显然很容易计算,但R有一个方便的效用函数,weighted.mean()。标准差是否有类似的功能?现有函数结合R中的标准偏差?
The calculation is not complicated,但现有的函数会使我的代码更清晰,更易于理解。
奖金问题,你用什么工具来搜索这样的功能?我知道它必须在那里,但我做了很多搜索,找不到它。谢谢!
人口是否不重叠?
library(fishmethods)
combinevar
例如在维基百科的例子将工作是这样的:
xbar <- c(70,65)
s<-c(3,2)
n <- c(1,1)
combinevar(xbar,s,n)
和标准偏差将被SQRT(combinevar(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))
}
我不知道具体的包还是fu nction的名字,但它似乎很容易从维基百科的页面推出自己的功能。假设人群中没有重叠:
## 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)}
非常感谢这个答案flodel。在看维基百科的公式时,我不认为我可以让计算看起来像你一样简单。事实上,我可能只是使用这个,但AndresT的回复对于其他人发现这个问题要更全面一些。谢谢! – 2012-02-10 15:30:58
关于您的搜索问题,** sos **包中的'findFn'是一个方便的工具。 – joran 2012-02-10 02:55:49
@AndresT,是的,人口是不重叠的。 – 2012-02-10 03:00:05
@joran谢谢,我不知道,我会开始寻找这种方式。我猜“标准偏差”将成为R手册中的一个热门词汇 – 2012-02-10 03:00:57