Mean value of data with irregular intervals

Hello,
I am trying to obtain average y value for a data set (x,y). However, interval between data points is not regular and mean(y) is off from the expected value. For example,
x = [1 1.1 1.2 1.3 2 3 4 5.1 5.2 5.3 5.4]; y = [0 0.1 0.2 0.3 1 2 1 0.3 0.2 0.1 0];
Because x,y are more densely lying in x = [0 1] and [5 6] intervals, y values in those intervals are weighted more if I take mean(y). Do you know how to avoid this and obtain y value in uniform intervals?
Thanks, Bobo

 Respuesta aceptada

Iain
Iain el 29 de Jul. de 2013
Why not just take a weighted mean?
This method ignores y(1) - you could change it to ignore y(end), or add info and inclue it.
totalweight = 0;
weightedsum = 0;
for i = 2:numel(x)
weight = x(i)-x(i-1);
weightedsum = weightedsum + weight*y(i);
totalweight = totalweight + weight;
end
meanvalue = weightedsum / totalweight;

1 comentario

dpb
dpb el 29 de Jul. de 2013
Editada: dpb el 30 de Jul. de 2013
d=diff(xx);
m=sum(d.*yy(2:end))/sum(d);
which can also be written as
m=dot(diff(xx),yy(2:end))/sum(d);

Iniciar sesión para comentar.

Más respuestas (1)

dpb
dpb el 29 de Jul. de 2013
Editada: dpb el 29 de Jul. de 2013
One way to weight uniformly...
dx=min(diff(x)); % shortest difference in vector
xi=x(1):dx:x(end); % fill in all values equally
yhat=interp1(x',y',x1'); % and get corresponding y's...
mean(yhat); % obviously can combine steps ...

2 comentarios

bobo
bobo el 30 de Jul. de 2013
Thanks!!
Andrew Sandeman
Andrew Sandeman el 15 de Jun. de 2023
In my opinion this is the correct answer, not the currently accepted answer.
  • This method does not neglect y(1)
  • Samples which are obtained more sparsely are weighted more accurately using this interpolation method

Iniciar sesión para comentar.

Categorías

Más información sobre Descriptive Statistics and Insights en Centro de ayuda y File Exchange.

Preguntada:

el 29 de Jul. de 2013

Comentada:

el 15 de Jun. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by