how can I effectively compute expected value by histogram approximation of probability desnsity function

What is the proper way to compute effectively (fast) the expected value E(x) in a case when I have approximation of probability desity function f(x) by probability normalized histogram?
Is there (FEX) any code available?

2 Comments

In what form do you have the approximate pdf? Is it a MATLAB function? Or is it a series of discrete values at specific x locations? Or something else? Can you upload your input data?
It is structure of discrete values similar to matlab histogram object.

Sign in to comment.

Answers (1)

There might be some nuances in the numerical integration, but here is the basic idea. You need to approximate the integral of x over the pdf.
% For reproducibility
rng default
% Simulated data -- normal centered on x=5.
N = 1000000;
x = 5 + randn(N,1);
% Get the probability density function. (You have these values already?)
[pdf_x,xi] = ksdensity(x);
% The bin width. (In this case, they are all equal, so I just take the first one.)
dx = xi(2) - xi(1);
% Calculate the total probability. (It should be 1.)
total_probability = sum(pdf_x*dx)
% Calculate the mean, which is the expected value of x.
mean_x = sum(xi.*pdf_x*dx)

4 Comments

Yes, but your example is too simple. My histogram probability density approximation data are defined more general (BinEdges, NumBins, etc) with non-equidistant BinWidths.
Not clear to me how to work with x values outside of BinLimits, for example.
I would like to avoid of any smooth density estimation, because my histograms are very rough. In this case is not clear how to choose proper Bandwidth parameter of ksdensity function.
The ksdensity was only for me to simulate something like what you probably had -- a discrete vector of locations and densitiies. You shouldn't need to do any smoothing, etc.
If you have irregular bin widths, all you need to do is the numerical integration of x * pdf * width, as I did.
Can you post your data?
OK ... thanks for basic info. I think the "nuances" of integration will be my main problem.
I will try to use matlab "discretize" function to find pdf approximation at my histogram points and then integration over x * pdf * width.

Sign in to comment.

Asked:

on 22 Oct 2019

Commented:

on 22 Oct 2019

Community Treasure Hunt

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

Start Hunting!