quick standard deviation with weights
r, standard-deviation
Solution
library(Hmisc)
sqrt(wtd.var(1:3,c(1,1,3)))
#[1] 0.8944272
Problem
I wanted to use a function that would quickly give me a standard deviation of a vector ad allow me to include weights for elements in the vector. i.e. ``` sd(c(1,2,3)) #weights all equal 1 #[1] 1 sd(c(1,2,3,3,3)) #weights equal 1,1,3 respectively #[1] 0.8944272 ``` For weighted means I can use `wt.mean()` from `library(SDMTools)` e.g. ``` > mean(c(1,2,3)) [1] 2 > wt.mean(c(1,2,3),c(1,1,1)) [1] 2 > > mean(c(1,2,3,3,3)) [1] 2.4 > wt.mean(c(1,2,3),c(1,1,3)) [1] 2.4 ``` but the `wt.sd` function does not seem to provide what I thought I wanted: ``` > sd(c(1,2,3)) [1] 1 > wt.sd(c(1,2,3),c(1,1,1)) [1] 1 > sd(c(1,2,3,3,3)) [1] 0.8944272 > wt.sd(c(1,2,3),c(1,1,3)) [1] 1.069045 ``` I am expecting a function that returns `0.8944272` from me weighted `sd`. Preferably I would be using this on a data.frame like: ``` data.frame(x=c(1,2,3),w=c(1,1,3)) ```