weighted average w/ matlab
160 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi guys, I have calculated different errors over a range.
let's say a range with a linear space from 100 to 150.
For this range I calculate a variable Y so Y(range).
Now I want to calculate the mean of the variable, but I want to give the values close to 125 more weight than the values close to 100 and 150, with the heaviest weight being 125.
I can't seem to figure it out, can someone help me out?
0 Commenti
Risposta accettata
Udit Gupta
il 2 Set 2015
You can do something like -
weight=normpdf(range,centerPoint,spread);
wAvg = sum(Y(range).*weight)/sum(weight);
In you example centerPoint will be 125, and larger the spread more slowly the weight will decrease away from centerPoint.
3 Commenti
Udit Gupta
il 2 Set 2015
spread is not a function. It can be any value. Bigger the value bigger the spread is. For example spread = 100 will provide a wide and gentle slope and spread = 50 will produce a steeper slope.
Più risposte (1)
dpb
il 2 Set 2015
Have to decide how much you want the weights to be, but the general idea would be sotoo--
>> y=randi([100 150],40,1); % some random data
>> mean(y) % mean should be near 125
ans =
123.9750
>> w=(y/100).^2;w=w/mean(w); % compute a weight dependent on y; normalize to 1 overall...
>> [min(w) max(w)] % what's look like???
ans =
0.6400 1.4399
>> mean(y.*w) % how much did we change it???
ans =
128.0471
>>
2 Commenti
Vedere anche
Categorie
Scopri di più su Descriptive Statistics in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!