加权平均符号 - 在R中调整权重

时间:2014-02-13 00:12:45

标签: r conditional-statements definition

我正在尝试使用以下格式计算 R 中统计样本(向量)的加权平均值:

form

该函数采用向量,权重根据第二个参数(1 - 3)调整,即:

weights

其中s是标准偏差。

如果使用else-if的参数为1或3,我已相应调整了重量,但鉴于有标准可以满足,我在第二个问题上遇到了麻烦......

我一直在计算X - xBar为向量:m = x-mean(x)

我一直在使用 R 函数计算ss = sd(x)

我的疑问是关于如何在第二个标准中“编写条件的会议”。到目前为止,我对每个条件都有一个if,但是......

在计算加权平均值时(以最上面的一个为例),x向量(m/s)的每个元素是否需要小于1?或者我是否需要测试每个元素并相应地从3个条件中分配权重?

例如。如果第一个元素的答案小于1,则指定权重或1,但第二个元素的答案在1和2之间,为其赋予0.5的权重?

我希望这是有道理的。在 R 中,它会抛出一条警告消息,说逻辑只是比较向量的第一个元素......这就是提出问题的原因。

提前致谢。

1 个答案:

答案 0 :(得分:2)

要在保持合理效率的同时避免出现警告消息,您可能希望使用ifelse而不是ifelse,或许可以使用

m <- mean(x)
s <- sd(x)
absstandardx <- abs( (x - m) / s )
w2 <- ifelse( absstandardx < 1, 1, ifelse( absstandardx < 2, 0.5, 0 ) ) 
weightedmean2 <- sum(w2 * x) / sum(w2)