6

ベクター広告の標準偏差をすばやく取得できる関数を使用して、ベクターに要素の重みを含めることができるようにしたいと考えました。すなわち

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

加重平均については、たとえばwt.mean()から使用できますlibrary(SDMTools)

>  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私はweighted から返される関数を期待していますsd。できれば、次のような data.frame でこれを使用します。

data.frame(x=c(1,2,3),w=c(1,1,3))
4

2 に答える 2

9
library(Hmisc)
sqrt(wtd.var(1:3,c(1,1,3)))
#[1] 0.8944272
于 2013-08-09T10:57:49.510 に答える
4

を使用repして、重みに従って値を複製できます。次に、sd結果のベクトルを計算できます。

x <- c(1, 2, 3) # values
w <- c(1, 1, 3) # weights

sd(rep(x, w))
[1] 0.8944272
于 2013-08-09T10:58:59.907 に答える