首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算加权平均值和标准差

计算加权平均值和标准差
EN

Stack Overflow用户
提问于 2012-04-07 05:20:49
回答 4查看 43.9K关注 0票数 35

我有一个时间序列x_0 ... x_t。我想计算数据的指数加权方差。这就是:

代码语言:javascript
运行
复制
V = SUM{w_i*(x_i - x_bar)^2, i=1 to T} where SUM{w_i} = 1 and x_bar=SUM{w_i*x_i}

参考:http://en.wikipedia.org/wiki/Weighted_mean#Weighted_sample_variance

其目标是基本上对时间更早的观察结果进行加权。这是非常简单的实现,但我想使用尽可能多的内置功能。有人知道这在R中对应的是什么吗?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-07 10:23:28

R提供加权平均值。实际上,?weighted.mean展示了这个例子:

代码语言:javascript
运行
复制
 ## GPA from Siegel 1994
 wt <- c(5,  5,  4,  1)/15
 x <- c(3.7,3.3,3.5,2.8)
 xm <- weighted.mean(x, wt)

再走一步:

代码语言:javascript
运行
复制
v <- sum(wt * (x - xm)^2)
票数 36
EN

Stack Overflow用户

发布于 2014-06-24 18:59:42

Hmisc包包含您需要的函数。

因此:

代码语言:javascript
运行
复制
x <- c(3.7,3.3,3.5,2.8)

wt <- c(5,  5,  4,  1)/15

xm <- wtd.mean(x, wt)

var <- wtd.var(x, wt)

sd <- sqrt(var)

不幸的是,Hmisc包的作者没有包含显式的wtd.sd函数。你必须开wtd.var的平方根。

查尔斯·坎盖

票数 31
EN

Stack Overflow用户

发布于 2017-08-19 02:22:29

在使用wtd.var()函数时,我也会收到来自Hmisc的错误。幸运的是,SDMTools具有类似的功能,甚至可以直接为您计算SD,而不需要计算方差。

代码语言:javascript
运行
复制
library(SDMTools)

x <- c(3.7,3.3,3.5,2.8)
wt <- c(5,  5,  4,  1)/15  ## Note: no actual need to normalize weights to sum to 1, this will be done automatically.

wt.mean(x, wt)
wt.sd(x,wt)

wt.var(x, wt)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10049402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档