How to determine and plot a probability density function?

112 ビュー (過去 30 日間)
Leon Gutierrez Guerrero
Leon Gutierrez Guerrero 2018 年 7 月 16 日
コメント済み: israt fatema 2021 年 5 月 18 日
I have a vector (8760 x 1) with the hourly electricity prices in a network and another vector (8760 x 1) with the quantity of electricity sold in each hour. I want to know how to get and plot the probability density function of that data. As an example, here are the first eleven elements of each vector:
Prices = [44.2200; 45.1300; 46.2300; 47.9100; 49.5700; 48.6900; 47.2000; 46.5100; 46.5200; 51.5900; 59.0700];
SoldElectricity = [0; 0; 0; 2.1255; 1.9807; 1.8474; 1.0561; 0; 0; 0.3586; 6.0510];
And I want to get a plot like this as a result:
(In the image three different sold electricity vectors were plotted, in my case, I only need to plot one) Any help would be appreciated, thanks!

採用された回答

Jeff Miller
Jeff Miller 2018 年 7 月 19 日
The discretize function will do most of the job. You may have to play around with it a bit, but something like this should work:
bins = 43.5:1:60.5; % define some bins that cover the range of interest
assignments = discretize(Prices,bins); % get a vector telling you which bin each price is in
% compute how much was sold in each bin
bintotals = zeros(size(bins));
for ibin=1:numel(bins)
bintotals(ibin) = sum(SoldElectricity(assignments==ibin));
end
binprobs = bintotals / sum(bintotals); % compute the proportion of the total in each bin
plot(bins,binprobs);

その他の回答 (1 件)

jonas
jonas 2018 年 7 月 16 日
編集済み: jonas 2018 年 7 月 16 日
You can use the following function form the statistics toolbox
ksdensity(SoldElectricity)
Note that the function outputs a non-parameteric estimate, which may not be desirable. A purely empirical pdf can be designed using histograms
histogram(SoldElectricity,'Normalization','pdf','displaystyle','stairs','binmethod','integers')
See attachment for results
  5 件のコメント
Leon Gutierrez Guerrero
Leon Gutierrez Guerrero 2018 年 7 月 18 日
Sorry for the misunderstanding, I’m probably confusing concepts. To clarify, I will explain what I need to do with an example I worked out in excel using the vectors mentioned in my first submission: The values of the vector ‘Prices’ goes from $44.22 to $59.07, so I defined 16 bins as follows:
Then I included a column with the total electricity sold at each price range (according to vector ’SoldElectricity’):
And finally, I divided each value of the second column by the total amount of energy sold (13.41926667MWh) to obtain the probability:
The plot of the probability vs price is this:
I did this manually in excel, but I need to do it automatically in Matlab for 8760 values. Thanks for your help!
israt fatema
israt fatema 2021 年 5 月 18 日
Hi Leon, did you find the solution for your problem? Would you mind sharing your solution please?
Thank you.

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

製品

Community Treasure Hunt

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

Start Hunting!

Translated by