由第二变量加权的一个变量的标准偏差

问题描述 投票:0回答:2

我想计算一个变量的标准偏差,该变量通过第二个变量对每个观察值进行加权。

values <- c(100, 200, 300, 400, 200)
sizes <- c(12, 54, 1, 218, 63)

如何在基于values的情况下应用加权来查找sizes的标准偏差?

r statistics standard-deviation variance weighted
2个回答
1
投票

Hmisc很大。在安装和加载具有多个依赖项的程序包的过程中,我使用基本R进行了此操作。首先,我必须检查Wiki中的公式。 https://en.wikipedia.org/wiki/Weighted_arithmetic_mean

enter image description here

请注意,V1只是权重之和。然后我将其转换为R语音:

x <- c(100, 200, 300, 400, 200)
w <- c(12, 54, 1, 218, 63)
mu <- weighted.mean(x, w)

sqrt(sum(w * ((x-mu)^2))/(sum(w) - 1))
[1] 102.696

wtd.var中的Hmisc功能一致。

当然,如果您想要增加功能,如归一化,最大似然估计或为您删除NA,请使用wtd.var函数。但是,OP没有指定任何内容。另外,如果您的互联网速度很慢,或者您想尝试自己做事并同时学习,请使用我的方法。 :)

Edit 1:并且对于reliability权重(normwt=TRUE):

> V1 <- sum(w)
> V2 <- sum(w^2)
> sqrt(sum(w * ((x-mw)^2))/(V1 - V2/V1))
[1] 138.3356

Edit 2:处理缺失值(na.rm=TRUE):

obs <- !is.na(x) & !is.na(w)
x <- x[obs]
w <- w[obs]

然后使用这些。


3
投票

我们可以使用wtd.var中的Hmisc来获取方差,然后取其平方根

sqrt(Hmisc::wtd.var(values, sizes))
#[1] 102.696

如@AaronMontgomery所述,在删除NA后,可能需要normwt = TRUE使权重之和等于“值”的长度(默认情况下为FALSE)

sqrt(Hmisc::wtd.var(values, sizes, normwt = TRUE))
#[1] 138.3356v
© www.soinside.com 2019 - 2024. All rights reserved.