the average of multiple Probability density functions

15 ビュー (過去 30 日間)
Rima Habib
Rima Habib 2019 年 12 月 5 日
編集済み: Ridwan Alam 2019 年 12 月 6 日
Hallo,
I have a cell array of {1000,1} pds, they are all the same distribution, but they differ slightly in the parameter values
Does any one know how to get the average of these pds? I have got them in iterative process and would like now to know the mean or average of them
I though of taking the mean of the parameter values in the pds in for loop but I am truggling with the right way to do it because I keep getting errors.
it would be helpful if some one gives me a hint :)
I have attached the cell array (Temp) in mat file
Thanks in advanced!
  5 件のコメント
Image Analyst
Image Analyst 2019 年 12 月 5 日
J, it should work regardless of what toolboxes you have
s=load('temp.mat')
cellArray = s.Temp
s =
struct with fields:
Temp: {1000×1 cell}
cellArray =
1000×1 cell array
{1×1 prob.GeneralizedParetoDistribution}
{1×1 prob.GeneralizedParetoDistribution}
{1×1 prob.GeneralizedParetoDistribution}
{1×1 prob.GeneralizedParetoDistribution}
etc.
Jeff Miller
Jeff Miller 2019 年 12 月 5 日
What do you mean by "the average of the probability distributions"?
For example, suppose one distribution is normal(0,1) and another distribution is normal(10,2). Is the average normal(5,1.5)? Or is the average bimodal with one mode around 0 and another around 10? Or is the average distribution something else?

サインインしてコメントする。

採用された回答

Ridwan Alam
Ridwan Alam 2019 年 12 月 5 日
The idea of "average" is ill-defined for pdfs.
In your case, all the 1000 distridutions are generalized paretos. Your theta is fixed in all pdfs, so you can certainly take the average of the sigma's and the k's. But what meaning/significance those "averages" carry, you need to come up with that.
If you are looking for the average expected value, you can calculate the mean (expected value) for each pareto and then average those. mean = theta + (sigma/(1-k)). ref: https://en.wikipedia.org/wiki/Generalized_Pareto_distribution
Also, if you are looking for the overall distribution parameters, you can combine the input data [available in Temp{}.InputData.data] and use gppdf().
Hope this helps.
  2 件のコメント
Rima Habib
Rima Habib 2019 年 12 月 6 日
@Jiff Miller @Ridwan Alam
I am trying to generate artificial Time series, so after an iterative methode, taking the average of the resulted pdfs is the best way to get the gppdf that suits the data.
so the only idea I could came up with is to take the average of the sigmas and ks but I am also interessted in your other approch which is combinig the inputdata then using gppdf.
how to do that exactly with a cell array full of pdfs. I couldnt figure it out?
Thanks you for your Help!
Ridwan Alam
Ridwan Alam 2019 年 12 月 6 日
編集済み: Ridwan Alam 2019 年 12 月 6 日
Rima, as I mentioned one approach could be to stack all the inputdata from all the pdfs.
allInputData=[];
for i = 1:length(Temp)
allInputData = [allInputData; Temp{i}.InputData.data];
end
% in your case, theta is fixed
newTheta = Temp{1}.theta;
paramhat = gpfit(allInputData-newTheta);
newK = paramhat(1);
newSigma = paramhat(2);
Hope this helps.
Please accept the response as an answer, and vote up if you liked the conversation.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by