Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculating weighted mean and standard deviation

I have a time series x_0 ... x_t. I would like to compute the exponentially weighted variance of the data. That is:

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} 

ref: http://en.wikipedia.org/wiki/Weighted_mean#Weighted_sample_variance

The goal is to basically weight observations that are further back in time less. This is very simple to implement but I would like to use as much built in funcitonality as possible. Does anyone know what this corresponds to in R?

Thanks

like image 435
Alex Avatar asked Apr 06 '12 21:04

Alex


People also ask

What is weighted mean and standard deviation?

The standard deviation is an indicator of how widely values in a group differ from the mean (see StDev (Standard Deviation of a Sample)). It is useful for comparing different sets of values with a similar mean.

Can you use weighted average for standard deviation?

Typically, weighting is applied when calculating a mean, but it can also be used in a calculation of standard deviation.

What is the easiest way to calculate weighted mean?

The Weighted mean is calculated by multiplying the weight with the quantitative outcome associated with it and then adding all the products together. If all the weights are equal, then the weighted mean and arithmetic mean will be the same.


2 Answers

R provides weighted mean. In fact, ?weighted.mean shows this example:

 ## 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) 

One more step:

v <- sum(wt * (x - xm)^2) 
like image 66
Matthew Lundberg Avatar answered Sep 27 '22 18:09

Matthew Lundberg


The Hmisc package contains the functions you need.

Thus:

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) 

Unfortunately the author of the Hmisc package did not include an explicit wtd.sd function. You have to square root wtd.var.

Charles Kangai

like image 40
user3770859 Avatar answered Sep 27 '22 20:09

user3770859