我正在尝试使用以下格式计算 R 中统计样本(向量)的加权平均值:
该函数采用向量,权重根据第二个参数(1 - 3)调整,即:
其中s
是标准偏差。
如果使用else-if
的参数为1或3,我已相应调整了重量,但鉴于有标准可以满足,我在第二个问题上遇到了麻烦......
我一直在计算X - xBar
为向量:m = x-mean(x)
我一直在使用 R 函数计算s
:s = sd(x)
我的疑问是关于如何在第二个标准中“编写条件的会议”。到目前为止,我对每个条件都有一个if
,但是......
在计算加权平均值时(以最上面的一个为例),x
向量(m/s
)的每个元素是否需要小于1?或者我是否需要测试每个元素并相应地从3个条件中分配权重?
例如。如果第一个元素的答案小于1,则指定权重或1,但第二个元素的答案在1和2之间,为其赋予0.5的权重?
我希望这是有道理的。在 R 中,它会抛出一条警告消息,说逻辑只是比较向量的第一个元素......这就是提出问题的原因。
提前致谢。
答案 0 :(得分:2)
要在保持合理效率的同时避免出现警告消息,您可能希望使用ifelse
而不是if
和else
,或许可以使用
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)