【发布时间】:2013-08-09 10:53:30
【问题描述】:
我想使用一个函数,它可以快速为我提供矢量广告的标准偏差,允许我在矢量中包含元素的权重。即
sd(c(1,2,3)) #weights all equal 1
#[1] 1
sd(c(1,2,3,3,3)) #weights equal 1,1,3 respectively
#[1] 0.8944272
对于加权意味着我可以使用来自library(SDMTools) 的wt.mean() 例如
> mean(c(1,2,3))
[1] 2
> wt.mean(c(1,2,3),c(1,1,1))
[1] 2
>
> mean(c(1,2,3,3,3))
[1] 2.4
> wt.mean(c(1,2,3),c(1,1,3))
[1] 2.4
但wt.sd 函数似乎没有提供我想要的:
> sd(c(1,2,3))
[1] 1
> wt.sd(c(1,2,3),c(1,1,1))
[1] 1
> sd(c(1,2,3,3,3))
[1] 0.8944272
> wt.sd(c(1,2,3),c(1,1,3))
[1] 1.069045
我期待一个从我那里返回0.8944272 加权sd 的函数。最好我会在 data.frame 上使用它,例如:
data.frame(x=c(1,2,3),w=c(1,1,3))
【问题讨论】:
-
请注意来自
SDMTools::wt.var的文档:“wt.var 是使用 GNU Scentific Library 的方程进行加权平均计算的无偏方差”。
标签: r standard-deviation