How to determine and plot a probability density function?
조회 수: 12 (최근 30일)
이전 댓글 표시
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!
댓글 수: 0
채택된 답변
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);
댓글 수: 0
추가 답변 (1개)
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
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!



