[R] Weighted mad

Chris Campbell ccampbell at mango-solutions.com
Tue Feb 7 16:50:02 CET 2012


Dear Stephen

The names of methods of aggregate can be viewed with the methods argument. Typing aggregate.data.frame shows you the method used for data frames.

> methods(aggregate)
[1] aggregate.data.frame aggregate.default    aggregate.formula*
[4] aggregate.ts

   Non-visible functions are asterisked


However, you need the function by, which passes a data frame to the function.


> pool <- data.frame(SMM = rnorm(10), ym = rep(1:2, each = 5), wght = 1)
> pool
            SMM ym wght
1   0.904640493  1    1
2   1.021857174  1    1
3   1.234153020  1    1
4  -0.697625918  1    1
5   0.073146470  1    1
6   1.438553786  2    1
7  -0.831183333  2    1
8  -0.055872825  2    1
9   0.858622161  2    1
10  0.001968816  2    1

> mad <- by(pool, pool$ym,
+   function(pool) { weighted.mean(x = pool$SMM, w = pool$wght) })
> mad[1:2]
pool$ym
        1         2
0.5072342 0.2824177

Regards,

Chris Campbell
MANGO SOLUTIONS
Data Analysis that Delivers
+44 1249 767700

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Bond, Stephen
Sent: 07 February 2012 14:55
To: r-help at r-project.org
Subject: [R] Weighted mad

Greetings UseRs,

Pls advise if there is a way to write a func that can be supplied to aggregate to compute weighted MeanAbsolute Dev (MAD). I am having trouble passing the correct weights from each group level and cannot see the code behind aggregate. But maybe 'aggregate' is not the best way to do that.

> m1 <- aggregate(pool[,c("SMM")],by=list(time=pool$ym),weighted.mean,w=pool$wght)
Error in weighted.mean.default(X[[1L]], ...) :
  'x' and 'w' must have the same length

Apparently the grouping does not work on the additional argument. I am using weighted mean here just to be explicit and avoid supplying a custom function gor weighted MAD, which is not difficult to write by itself. It's making it work with aggreagte that is the problem.

> aggregate
function (x, ...)
UseMethod("aggregate")
<environment: namespace:stats>

Does not show anything...

Stephen B

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Kind Regards

Chris Campbell
[Mango Solutions]

T:+44 (0)1249 767700
F: +44 (0)1249 767707
Mango Solutions Website<http://www.mango-solutions.com>

Unit 2 Greenways Business Park
Bellinger Close
Chippenham
Wilts
SN15 1BN
UK
________________________________
With effect from Friday 24th February 2012 Mango Business Solutions Ltd
main office will be moving to:

2 Methuen Park
Chippenham
Wilts
SN14 0GB
UK

Please note, there may be some disruption to services; including emails, from 1730 hrs on Thursday 23rd February.

For any urgent enquiries, please use the following mobile numbers: 07966062462, 07900580808, 07967808091
________________________________
LEGAL NOTICE
This message is intended for the use o...{{dropped:10}}



More information about the R-help mailing list